UI/Components/UpgradeShopItem.razor
@using Sandbox.UI;
@inherits Panel
@namespace PlanetMeat

<root>
	@{
		var item = Upgrade;
		var canBuy = item.Purchaseable;
		<div class="item grow @(canBuy ? "" : "item-disabled")">
			<div class="info grow">
				<span>#@(item.DisplayName)</span>
				<span>@EffectText</span>
			</div>
			@if (canBuy)
			{
				<button class="click-active btn-buy" onmousedown=@BeginBuy onmouseup=@EndBuy>
					<CurrencyDisplay Mode="cost" AccountId=@Currency Amount=@Cost>
					</CurrencyDisplay>
				</button>
			}
		</div>
	}
</root>

@code
{
	public string Currency { get; set; } = "";
	public IPurchaseableUpgrade Upgrade { get; set; }
	private double Cost => Upgrade?.NextCost ?? -1.0;
	private string EffectText
	{
		get
		{
			var item = Upgrade;
			return item.Purchaseable ? item.AdvancementText : item.DisplayedCurrentEffect;
		}
	}

	public System.Action OnBeginBuy;
	public System.Action OnEndBuy;

	private void BeginBuy() => OnBeginBuy?.Invoke();
	private void EndBuy() => OnEndBuy?.Invoke();

	protected override int BuildHash() => System.HashCode.Combine(Upgrade, EffectText, Currency, Cost);
}