presentation/widgets/common/level_up_overlay
library
Classes
-
LevelUpCelebration
-
One LevelUpEvent plus the extra presentation detail
LevelUpOverlayController needs that LevelUpEvent itself doesn't
carry: where its XP bar starts filling FROM. Every level after the
first in a queue starts a fresh bar at 0 — only the very first queued
event might start partway through (wherever the player's bar actually
was right before the
grantXp call that crossed it).
-
LevelUpOverlay
-
Renders LevelUpOverlayController's sequence over child — same
in-tree-overlay pattern as
NeonDialog/SceneTransitionOverlay (see
CLAUDE.md's "Dialog pattern" note), so it also works over a
full-screen Flame GameWidget.
-
LevelUpOverlayController
-
Pure state machine driving LevelUpOverlay — no
Animation/
BuildContext here, so it's unit-testable without pumping a widget
tree (same shape as SceneTransitionController, FEAT-58).
Enums
-
LevelUpPhase
-
Lifecycle of one queued level-up celebration: idle (no overlay) →
xpFill (bar animates to full) → levelPop (level number bounces in)
→ rewardReveal (reward lines fade in) → back to idle once the whole
queue is done, or xpFill again for the next queued level.