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();
		}
	}
}