UI/HUD/Elements/RoundStatsReadout.razor
@using Sandbox.UI;
@inherits Panel
@namespace PlanetMeat
<root>
@{
var ctx = Career.Current.RoundStats;
@if (TryGetDamageText(ctx, "all", out var allDmgText))
{
<div class="category">
<span class="title key">#stats.dmg.all</span>
<span class="value">@allDmgText</span>
@foreach (var cat in Catalogue.Current.BlameTools)
{
if (TryGetDamageText(ctx, "by_" + cat, out var wepDmgText))
{
<span class="key">#tool.@(cat).title</span>
<span class="value">@wepDmgText</span>
}
}
</div>
}
@if (TryGetGenericText(ctx, "wep_kills", out var allWepText))
{
<div class="category">
<span class="title key">#stats.kill_weps.all</span>
<span class="value">@allWepText</span>
@foreach (var cat in Catalogue.Current.BlameTools)
{
if (TryGetGenericText(ctx, "kills_by_" + cat, out var wepKillText))
{
<span class="key">#tool.@(cat).title</span>
<span class="value">@wepKillText</span>
}
}
</div>
}
@if (TryGetGenericText(ctx, "kills_all", out var allKillText))
{
<div class="category">
<span class="title key">#stats.kill_types.all</span>
<span class="value">@allKillText</span>
@foreach (var enemy in Agenda.Current.AllVariants)
{
if (TryGetGenericText(ctx, "kills_" + enemy.Ident, out var variantKillText))
{
<span class="key">#@(enemy.DisplayName)</span>
<span class="value">@variantKillText</span>
}
}
</div>
}
}
</root>
@code
{
private bool TryGetDamageText(StatContext ctx, string scope, out string value)
{
if (ctx.TryGetNow("damage_" + scope, out var dmg))
{
if (ctx.TryGetNow("overkill_" + scope, out var overkill))
value = LargeNumberString.ToCompact(dmg - overkill) + " · " + LargeNumberString.ToCompact(overkill);
else
value = LargeNumberString.ToCompact(dmg);
return true;
}
value = "";
return false;
}
private bool TryGetGenericText(StatContext ctx, string ident, out string value)
{
if (ctx.TryGetNow(ident, out var s))
{
value = LargeNumberString.ToCompact(s);
return true;
}
value = "";
return false;
}
protected override int BuildHash() => System.HashCode.Combine(
Agenda.Current.ScoutReportId
);
}