feat(engine): leaderboard screen (press L to toggle)
Press L to open a leaderboard overlay. On open, an async fetch is dispatched against the active SyncProvider. Results cache in LeaderboardResource; the panel rebuilds live when data arrives. Closing during a fetch is safe (ClosedThisFrame flag prevents re-spawning the panel in the same frame as the user's despawn command). Format: ranked table with player name, best score, and fastest win time. Non-authenticated / LocalOnly providers return an empty list gracefully. - solitaire_data: add fetch_leaderboard() to SyncProvider trait (default → Ok([])) and implement in SolitaireServerClient - solitaire_engine: new LeaderboardPlugin with 5 unit tests - solitaire_app: register LeaderboardPlugin Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -10,6 +10,7 @@ pub mod daily_challenge_plugin;
|
||||
pub mod events;
|
||||
pub mod game_plugin;
|
||||
pub mod help_plugin;
|
||||
pub mod leaderboard_plugin;
|
||||
pub mod input_plugin;
|
||||
pub mod layout;
|
||||
pub mod onboarding_plugin;
|
||||
@@ -42,6 +43,7 @@ pub use events::{
|
||||
};
|
||||
pub use game_plugin::{GameMutation, GamePlugin, GameStatePath};
|
||||
pub use help_plugin::{HelpPlugin, HelpScreen};
|
||||
pub use leaderboard_plugin::{LeaderboardPlugin, LeaderboardResource, LeaderboardScreen};
|
||||
pub use input_plugin::InputPlugin;
|
||||
pub use onboarding_plugin::{OnboardingPlugin, OnboardingScreen};
|
||||
pub use pause_plugin::{PausePlugin, PauseScreen, PausedResource};
|
||||
|
||||
Reference in New Issue
Block a user