UI/Components/InfoPanels/BaseInfoPanel.razor
@using Sandbox.UI;
@inherits Panel
@namespace HC3
<row class="top-stats">
<item Tooltip="Count">
<icon>groups</icon>
<label>@Count</label>
</item>
<item Tooltip="Rating">
<icon>star</icon>
<label>@Rating</label>
</item>
<item Tooltip="Happiness">
<icon>@GetHappinessIcon()</icon>
<label>@Happiness%</label>
</item>
</row>
@code
{
protected virtual string Count => "0";
protected virtual string Rating => "0";
protected virtual string Happiness => "0";
protected virtual float HappinessEvaluator => 0;
RealTimeSince _timeSinceLastUpdate = 0f;
private string GetHappinessIcon()
{
var val = HappinessEvaluator;
if(val < 0.01f)
return "sentiment_very_dissatisfied";
else if (val < 0.25f)
return "sentiment_dissatisfied";
else if (val < 0.5f)
return "sentiment_neutral";
else if (val < 0.8f)
return "sentiment_satisfied";
return "sentiment_very_satisfied";
}
public override void Tick()
{
base.Tick();
// Update every second, this probably doesn't need to be checked every frame
if(_timeSinceLastUpdate > 1f)
{
_timeSinceLastUpdate = 0f;
StateHasChanged();
}
}
}