UI/StatsScreen.razor
@using System;
@using Sandbox;
@using Sandbox.UI;
@* Level up / stats, laid out like the Flash game: heading, stats with +, skill points, tick.
Your gladiator stands in the 3D hall. *@
<root class="screen">
<div class="head">
<div class="title outlined">@(Gm.Heading ?? $"{P.Name}, level {P.Level} {(P.Enslaved ? "slave" : "gladiator")}")</div>
<div class="sub outlined">@(Gm.Notice ?? Subtitle)</div>
</div>
<div class="sas-panel stats-panel">
<StatsList></StatsList>
</div>
<div class="sas-panel points-panel">
<div class="sas-label">skill points</div>
<div class="points-number">@P.StatPoints</div>
</div>
<div class="sas-panel derived-panel">
<div>@($"health {Catalog.MaxHealth( P.Vitality )}")</div>
<div>@($"energy {Catalog.MaxEnergy( P.Stamina )}")</div>
<div>@($"magicka {Catalog.MaxMagicka( P.Magicka )}")</div>
<div>@($"armour {P.ArmourPoints()}")</div>
<div>@($"{Catalog.Weapons[P.Weapon].Name}: {Catalog.Weapons[P.Weapon].Min + P.Strength * 2}-{Catalog.Weapons[P.Weapon].Max + P.Strength * 2}")</div>
</div>
<div class="gold-bar"><div class="coin"></div>@P.Gold</div>
<div class="sas-round tick done" onclick=@(() => Gm.Go( Gm.StatsReturn ))><div class="mark"></div></div>
</root>
@code
{
GameManager Gm => GameManager.Instance;
Profile P => Profile.Current;
static readonly string[] Sayings =
{
"A journey of a thousand miles begins with a single step.",
"The crowd remembers the bold.",
"Steel sharpens steel.",
"Fortune favours the brave."
};
string Subtitle => Sayings[Math.Abs( P.Level ) % Sayings.Length];
protected override int BuildHash() => HashCode.Combine( P?.StatPoints, P?.Vitality, P?.Stamina, P?.Magicka, P?.Strength, Gm?.Notice, Gm?.Heading );
}