feat(engine): add Menu dropdown for Stats/Achievements/Profile/Settings/Leaderboard
Continues the UI-first pass. The five informational overlays were each behind a single-key shortcut (S/A/P/O/L) with no visible UI affordance. Add a "Menu ▾" button to the action bar that toggles a popover with one row per overlay. Each row dispatches the same code path the keyboard accelerator uses by writing a new `Toggle*RequestEvent`: - Stats → ToggleStatsRequestEvent - Achievements → ToggleAchievementsRequestEvent - Profile → ToggleProfileRequestEvent - Settings → ToggleSettingsRequestEvent - Leaderboard → ToggleLeaderboardRequestEvent Each plugin's existing toggle handler now reads either its key or the matching request event so the spawn / despawn / fetch logic stays in the owning plugin (the popover never duplicates that behaviour). Action bar order is now (left → right): Menu ▾ Undo Pause Help Modes ▾ New Game Menu sits on the far left because it's a navigation aggregator; New Game stays on the far right as the most consequential action. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -129,6 +129,31 @@ pub struct StartTimeAttackRequestEvent;
|
||||
#[derive(Message, Debug, Clone, Copy, Default)]
|
||||
pub struct StartDailyChallengeRequestEvent;
|
||||
|
||||
/// Request to toggle the Stats overlay. Fired by the HUD Menu-popover
|
||||
/// "Stats" row alongside the existing `S` accelerator.
|
||||
#[derive(Message, Debug, Clone, Copy, Default)]
|
||||
pub struct ToggleStatsRequestEvent;
|
||||
|
||||
/// Request to toggle the Achievements overlay. Fired by the HUD
|
||||
/// Menu-popover "Achievements" row alongside the existing `A` accelerator.
|
||||
#[derive(Message, Debug, Clone, Copy, Default)]
|
||||
pub struct ToggleAchievementsRequestEvent;
|
||||
|
||||
/// Request to toggle the Profile overlay. Fired by the HUD Menu-popover
|
||||
/// "Profile" row alongside the existing `P` accelerator.
|
||||
#[derive(Message, Debug, Clone, Copy, Default)]
|
||||
pub struct ToggleProfileRequestEvent;
|
||||
|
||||
/// Request to toggle the Settings overlay. Fired by the HUD Menu-popover
|
||||
/// "Settings" row alongside the existing `O` accelerator.
|
||||
#[derive(Message, Debug, Clone, Copy, Default)]
|
||||
pub struct ToggleSettingsRequestEvent;
|
||||
|
||||
/// Request to toggle the Leaderboard overlay. Fired by the HUD
|
||||
/// Menu-popover "Leaderboard" row alongside the existing `L` accelerator.
|
||||
#[derive(Message, Debug, Clone, Copy, Default)]
|
||||
pub struct ToggleLeaderboardRequestEvent;
|
||||
|
||||
/// Fired by `SyncPlugin` after a pull task resolves and the merged result has
|
||||
/// been persisted to disk. `Ok(SyncResponse)` carries the merged payload plus
|
||||
/// any `ConflictReport`s the merge produced. `Err(String)` carries a
|
||||
|
||||
Reference in New Issue
Block a user