The upgrade capsule opening panel. Draws a sealed capsule with art, swaps to the reward card and grade, and has buttons to open the upgrade list or continue. Localizes labels using GamePreferences.Russian.
@using Sandbox
@using Sandbox.UI
@using Socer
@using System
@using System.Linq
@inherits Panel
<div class="upgrade-capsule-opening localized-text @(Ready?"ready":"charging")">
<div class="capsule-opening-glow"></div>
<label class="capsule-opening-title">@Name</label>
@if(!Ready)
{
<img class="capsule-sealed" src="@Art" />
<div class="capsule-opening-ring"></div>
}
else
{
<div class="capsule-result"><div class="capsule-result-frame"><ClubItemCardView Reward="@Reward" CssClass="capsule-result-card display-only" /></div><label>@Grade</label></div>
<div class="capsule-opening-actions"><button class="capsule-to-upgrades" onclick=@(()=>OnInventory?.Invoke())>@T("К улучшениям","My upgrades")</button><button class="primary capsule-continue" onclick=@(()=>OnClose?.Invoke())>@T("Далее →","Continue →")</button></div>
}
</div>
@code {
[Parameter] public PackOpening Opening {get;set;}
[Parameter] public float StartedAt {get;set;}
[Parameter] public Action OnClose {get;set;}
[Parameter] public Action OnInventory {get;set;}
PackReward Reward=>Opening?.Items.FirstOrDefault();
bool Ready=>Time.Now-StartedAt>=.85f;
bool Gold=>Opening?.PackIndex==9;
string Art=>Gold?"/store-packs/upgrade-gold.svg":"/store-packs/upgrade-silver.svg";
string Name=>Gold?T("Золотая капсула","Gold capsule"):T("Серебряная капсула","Silver capsule");
string Grade=>T(new[]{"Бронзовое улучшение","Серебряное улучшение","Золотое улучшение"}[Math.Clamp(Reward?.Training?.Grade??1,1,3)-1],Reward?.Name??"");
static string T(string ru,string en)=>GamePreferences.Russian?ru:en;
public UpgradeCapsuleView(){StyleSheet.Load("/UpgradeCapsuleView.razor.scss");}
public override void Tick(){base.Tick();StateHasChanged();}
protected override int BuildHash()=>HashCode.Combine(Opening,Ready,GamePreferences.Russian);
}