Namespace Serenity.Leaderboard.Infrastructure.Views
Classes
LeaderboardButtonActionRunner
Runs one LeaderboardViewButton's LeaderboardButtonAction when it is submitted.
Show View mirrors UnityMenuView.ExecuteTransitionateToView's history bookkeeping (push the owner
before navigating) through the same direct IViewRouter calls
UnityLeaderboardView.ReturnToOpener already uses; Dispatch Signal mirrors
UnityMenuSubmitService.DispatchOptionSignal.
LeaderboardButtonBar
Owns a leaderboard view's built buttons: their focus (LeaderboardButtonFocus) and what
running the focused one does (LeaderboardButtonActionRunner). Polls keyboard/gamepad
navigation and confirm input in Tick() the same way CascadeMenuRenderer.Tick does,
including its same-frame arming guard so the input that opened the view is not immediately consumed as a
button press; mouse submit instead flows through each handle's own Submitted.
LeaderboardButtonFactory
Builds one LeaderboardButtonHandle for an authored LeaderboardViewButton, in
priority order: the active theme's Submittable (via CreateOptionComponent(string, int, string, bool),
same real themed component the cascade menu renders its options with), the theme's raw submittable
template instantiated directly when no ready SerenityUiContext is available, or a bare
procedural image + label when neither exists. Mirrors the theme/template/procedural fallback chain
CreateProcedural(Transform, GameObject) and CascadeMenuRenderer already use.
LeaderboardButtonFocus
Which of a leaderboard view's buttons currently has focus, and the rules for moving it: wraps at either end and skips any button whose Placement is Hidden. Pure list bookkeeping — no Unity input is polled here; LeaderboardButtonBar owns that and calls into this class.
LeaderboardButtonHandle
One built button on a leaderboard view: the authored data it renders, the rect LeaderboardPanelPlacementApplier places, and however it shows focus — a themed UnityUiSubmitComponent's native highlight when the theme built it, or a tinted UnityEngine.UI.Image for the template/procedural fallbacks. Built only by LeaderboardButtonFactory.
LeaderboardColumnLayout
A resolved, engine-free description of how a leaderboard view's rows split into columns: which columns
show, in what order, with what header/width/alignment, whether a header row renders, and how an
ACHIEVED_AT column formats its timestamp. Mirrors
UnityLeaderboardViewDefinition.ResolveValueSpec(): authored settings resolve once into the single
shape the rest of the pipeline reads, so callers never carry the raw fields around separately.
LeaderboardPanelPlacementApplier
Applies authored LeaderboardElementPlacements onto a leaderboard panel's element rects,
pulling each element out of the panel's stacking layout so it renders wherever it was placed. Stateless
and idempotent: every call fully re-derives its result from its own inputs, so re-applying the same
placements (e.g. once after SetRows rebuilds the rows, once after the rows table's own
scroll-shell extent catches up) yields the same rects.
LeaderboardRowContentMapper
Maps ranked domain entries to already-formatted LeaderboardRowContent rows. Pure: no Unity or engine dependencies, so it can be unit tested without an editor/player context.
LeaderboardValueFormatter
Renders a raw leaderboard entry value as invariant-culture display text according to a LeaderboardValueFormat.
UnityLeaderboardPanel
Script on a leaderboard panel (theme's LeaderboardTemplate, or the procedural fallback built by
CreateProcedural(Transform, GameObject)): a header slot, a container the ranked rows render through, and an
empty-state slot shown when the board has no entries. Filled and driven by UnityLeaderboardView.
The rows container is itself a UnityTablePanel root (see Serenity.Leaderboard.Infrastructure.Views.UnityLeaderboardPanel.EnsureTable): rows
grow with the list, and scroll once the ROWS element's own authored placement Size clips them.
UnityLeaderboardView
Runtime view that hosts a UnityLeaderboardPanel and is resolvable by Id from a menu transition or a ShowLeaderboardSignal (registered with the IViewRouter via UnityLeaderboardViewService). On Show() it fetches the configured slice of the board (Mode) and fills the panel; it also refreshes whenever a LeaderboardEntrySubmittedSignal for its board arrives while shown.
Structs
LeaderboardBackgroundStyle
A resolved, ready-to-apply description of how a leaderboard view's background renders: mode, sprite
override, tint, slicing and pixels-per-unit multiplier. Mirrors UnityLeaderboardViewDefinition.ResolveValueSpec()/
ResolveColumnLayout(): the raw authored fields resolve once into this single shape, so
ConfigureBackground(LeaderboardBackgroundStyle) never has to re-derive
what a mode/slicing combination means. Ported from the Theme Builder's own sprite-slot resolution
(ThemeSpriteSlot), which this style mirrors field-for-field for the modes it shares.
LeaderboardColumn
One resolved, render-ready column of a leaderboard view: what it shows and how it is presented.
LeaderboardPanelPlacementApplier.ElementTarget
One element's resolved target rect, paired with which LeaderboardViewElement it is.
LeaderboardPanelPlacementApplier.PlacedElement
One rect paired directly with the placement to apply to it — the shape a caller with its own list of
owners (e.g. UnityLeaderboardPanel's authored buttons) uses instead of
LeaderboardPanelPlacementApplier.ElementTarget, which only covers the fixed LeaderboardViewElements.
LeaderboardRowContent
Already-formatted display text for one leaderboard row, one cell per visible column, ready to render without any further lookup or formatting. Produced by LeaderboardRowContentMapper from a ranked domain entry and a LeaderboardColumnLayout.
Enums
LeaderboardColumnAffixMode
Whether a leaderboard column's authored prefix and/or suffix text wraps its cell value.
LeaderboardColumnKind
Which piece of ranked-entry data one leaderboard column renders.
LeaderboardValueFormat
How a raw leaderboard entry value should be rendered as display text.