ui/HealthBarHeart.razor
@using Sandbox;
@using Sandbox.UI;
@inherits Panel
@attribute [StyleSheet("HealthBarHeart.razor.scss")]

@{
	var manager = Manager.Instance;
}

<root style="transform: scale(@(Utils.Map(Manager.Instance.TimeSinceHPChanged, 0f, 1f, 1.35f, 1f, EasingType.QuadOut)));">
	❤️
	<div class="hp_label">
		@(IsHovered ? $"{manager.HP}/{manager.MaxHP}" : $"{manager.HP}")
	</div>
</root>

@code
{
	public bool IsHovered { get; set; }

	protected override void OnMouseOver(MousePanelEvent e)
	{
		base.OnMouseOver(e);

		IsHovered = true;
	}

	protected override void OnMouseOut(MousePanelEvent e)
	{
		base.OnMouseOut(e);

		IsHovered = false;
	}

	protected override int BuildHash()
	{
		var manager = Manager.Instance;

		if(manager.HP == 1)
		{
			return HashCode.Combine(
				Time.Now
			);
		}

		float hpChangedHash = Manager.Instance.TimeSinceHPChanged < 1f ? Time.Now : 0f;

		return HashCode.Combine(
			manager.HP,
			manager.MaxHP,
			hpChangedHash
		);
	}
}