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