UI/Components/ProgressBar.razor
@using Sandbox.UI;
@inherits Panel
@namespace PlanetMeat
<root>
<div class="progress-fill" style="width: @_progressPercent%"></div>
<span class="progress-text">@ProgressText</span>
</root>
@code
{
public bool ShowPercentage { get; set; } = true;
private string ProgressText
{
get
{
var t = CurrentProgress + " / " + MaxProgress;
if (ShowPercentage)
t += " (" + (int)_progressPercent + "%)";
return t;
}
}
public float MaxProgress
{
get;
set
{
field = value;
BakePercentage();
}
} = 100.0f;
public float CurrentProgress
{
get;
set
{
field = value;
BakePercentage();
}
} = 50.0f;
private float _progressPercent = 100.0f;
private void BakePercentage()
{
_progressPercent = (CurrentProgress / MaxProgress).Clamp(0.0f, 1.0f).ToPercentage();
}
protected override int BuildHash() => System.HashCode.Combine(MaxProgress, CurrentProgress);
}