@page "/leaderboard"
@using CsWeb.Services
@model LeaderboardModel
@{
ViewData["Title"] = "Leaderboard";
var t = Model.Top;
var d = t?.Data;
}
Leaderboard
@if (t is null || d is null)
{
Leaderboards are unavailable right now (no server reachable).
}
else
{
@if (!t.Online)
{
Servers are offline — showing the last known standings (@Fmt.Age(t)).
}
Progression
| # | Player | Prestige | Level |
@foreach (var (r, i) in d.Levels.Select((r, i) => (r, i)))
{
| @(i + 1) | @r.Name | @r.Prestige | @r.Level |
}
Deepest survival wave
| # | Player | Wave |
@foreach (var (r, i) in d.Waves.Select((r, i) => (r, i)))
{
| @(i + 1) | @r.Name | @r.BestWave |
}
@if (d.Waves.Count == 0) { | No cleared waves recorded yet. |
}
Fastest Gun Game
| # | Player | Time |
@foreach (var (r, i) in d.GgTimes.Select((r, i) => (r, i)))
{
| @(i + 1) | @r.Name | @Fmt.RunTime(r.BestMs) |
}
@if (d.GgTimes.Count == 0) { | No full ladder runs recorded yet. |
}
The clock starts at your first damage dealt or taken after joining — reconnecting doesn't reset it.
}