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