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

<root style="width:@(Size)px; height:@(Size)px;">
	<div class="icon_container">
		<div class="icon" style="background-image:url(@Relic.GetIconFilename(RelicType)); left: -2px; bottom: -5px; filter: brightness(0) blur(3px); opacity: 0.75;"></div>
		<div class="icon" style="background-image:url(@Relic.GetIconFilename(RelicType));"></div>

		@if(Level > 1) 
		{
			<div class="level">@Level</div>
		}
	</div>
</root>

@code
{
	public RelicType RelicType { get; set; }
	public float Size { get; set; }
	public int Level { get; set; }
	public int Index { get; set; }

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

		Manager.Instance.HoveredRelicType = RelicType;
		Manager.Instance.HoveredPanelIndex = Index;
		Manager.Instance.IsHoveringBounty = false;

		if(Manager.Instance.TimeSinceHoverSfx > 0.025f)
		{
			Manager.Instance.PlaySfx("click_1", new Vector3(-40f, 100f, Scene.Camera.WorldPosition.z - 500f));
			Manager.Instance.TimeSinceHoverSfx = 0f;
		}
	}

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

		if(Manager.Instance.HoveredPanelIndex == Index)
		{
			Manager.Instance.HoveredRelicType = RelicType.None;
			Manager.Instance.HoveredPanelIndex = -1;
		}
	}

	// public override void Tick()
	// {
	// 	StateHasChanged();
	// }

	protected override int BuildHash()
	{
		return HashCode.Combine(
			RelicType,
			Size,
			Level,
			Manager.Instance.RelicHash
			// Time.Now
		);
	}
}