ui/CardIcon.razor
@using Sandbox;
@using Sandbox.UI;
@inherits PanelComponent

<root style="opacity: @(Card.IconOpacity);">
	@{
		// Log.Info($"Card.CardType: {Card.CardType} Card.GetIconFilename(Card.CardType): {Card.GetIconFilename(Card.CardType)}");
	}

	@* <div class="icon" style="background-image: url(@Card.GetIconFilename(Card.CardType));"></div> *@

	@if(Card.HasHP(Card.CardType)) 
	{
		<div class="hp_container" style="bottom: @(Utils.Map(Card.CardIconScale, 1f, 1.1f, 0f, -20f))px;">
			@for(int i = 0; i < Card.HP; i++)
			{
				<div class="hp_icon">❤️</div>
			}
			@for(int i = 0; i < Card.GetMaxHP(Card.CardType) - Card.HP; i++)
			{
				<div class="hp_icon">🖤</div>
			}
		</div>
	}

	@if(Card.IsLocked)
	{
		<div class="lock" style="background-image:url(@("textures/lock_shadow.png")); left: -60px; bottom: -12px; opacity: 0.95; "></div>

		<div class="lock" style="background-image: url(@("textures/lock.png")); left: -40px; bottom: 8px;">
		</div>

		<div class="lock_label">
			@(Card.LockTurnsRemaining)
		</div>
	}
</root>

@code
{
	public Card Card { get; set; }

	protected override int BuildHash()
	{
		return HashCode.Combine(
			Card.CardType,
			Card.HasHP(Card.CardType) ? Card.HP : 0,
			Card.IsLocked ? Card.LockTurnsRemaining : 0,
			Card.IconOpacity,
			Card.CardIconScale
		);
	}
}