LegendaryAbilityView.razor

UI panel that shows a legendary ability card. Looks up the ability from LegendaryAbilities by player card, then draws nickname, name, description, stamina cost, cooldown in match minutes, activation and counterplay, with Russian/English text picked from GamePreferences. Has a compact mode that only shows the heading.

@using Sandbox
@using Sandbox.UI
@using Socer
@using System
@inherits Panel

@if(LegendaryAbilities.Get(Card) is { } ability)
{
    <root class="legendary-ability-info @(Compact?"compact":"") localized-text">
        <div class="legendary-ability-heading"><img src="/ui-icons/ui-line-nav-cup.svg" /><div><label class="legendary-ability-nickname">@ability.Nickname(GamePreferences.Russian)</label><label class="legendary-ability-name">@ability.Name(GamePreferences.Russian)</label></div></div>
        @if(!Compact)
        {
            <label class="legendary-ability-description">@ability.Description(GamePreferences.Russian)</label>
            <div class="legendary-ability-cost"><div><label>@T("Стамина","Stamina")</label><b>@($"−{ability.StaminaCost*100:0}%")</b></div><div><label>@T("Перезарядка","Cooldown")</label><b>@T($"{ability.CooldownSeconds/4:0.#} мин. матча",$"{ability.CooldownSeconds/4:0.#} match min.")</b></div></div>
            <div class="legendary-ability-details">
                <div><label class="legendary-ability-detail-title">@T("Когда срабатывает","Activation")</label><label class="legendary-ability-trigger">@ability.Trigger(GamePreferences.Russian)</label></div>
                <div><label class="legendary-ability-detail-title">@T("Как противодействовать","Counterplay")</label><label class="legendary-ability-counter">@ability.Counter(GamePreferences.Russian)</label></div>
            </div>
            <label class="legendary-ability-permanent">@T("Фирменный приём сохраняется при улучшениях.","Upgrade cards preserve this signature ability.")</label>
        }
    </root>
}
else
{
    <root class="empty"></root>
}

@code {
    [Parameter] public PlayerCard Card {get;set;}
    [Parameter] public bool Compact {get;set;}
    static string T(string ru,string en)=>GamePreferences.Russian?ru:en;
    protected override int BuildHash()=>HashCode.Combine(Card?.CardKey,Compact,GamePreferences.Russian);
}