18ac5adef5
Art pass (Phase 4): - Generate placeholder PNG assets: face.png, back_0–4.png, bg_0–4.png via solitaire_assetgen gen_art binary (16×16 RGBA, embedded via include_bytes!) - Add FiraMono-Medium font (assets/fonts/main.ttf) embedded at compile time - Add FontPlugin: loads font at startup, exposes FontResource; gracefully falls back to default handle when Assets<Font> absent (MinimalPlugins tests) - Wire CardImageSet into card_plugin: face/back PNGs replace solid-colour sprites when available; tests continue using colour fallback via MinimalPlugins - Wire BackgroundImageSet into table_plugin: bg PNGs replace solid-colour background; empty set inserted when Assets<Image> absent in tests - Fix hint highlight system (input_plugin): tint sprite.color directly instead of replacing the whole Sprite (which would discard the image handle) - Export FontPlugin, FontResource, CardImageSet from solitaire_engine::lib - Register FontPlugin in solitaire_app before other plugins Dependency upgrades (latest releases): - keyring "2" → keyring "4" + keyring-core "1" (v4 split architecture into separate core library crate) - auth_tokens.rs: Entry::new now returns Result; delete_password → delete_credential; NoDefaultStore error variant handled - solitaire_app: add keyring::use_native_store(true) at startup for Linux Secret Service / macOS Keychain / Windows Credential Store selection ARCHITECTURE.md: fix Edition 2025→2021, update asset pipeline section, add FontPlugin/CardImageSet/BackgroundImageSet to plugin and resource tables, update Section 14 to reflect actual include_bytes!() rendering approach, add Decision Log entries for embedded PNG and font decisions Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
98 lines
4.0 KiB
Rust
98 lines
4.0 KiB
Rust
//! Bevy integration layer for Solitaire Quest.
|
|
|
|
pub mod card_animation;
|
|
pub mod achievement_plugin;
|
|
pub mod animation_plugin;
|
|
pub mod auto_complete_plugin;
|
|
pub mod audio_plugin;
|
|
pub mod card_plugin;
|
|
pub mod font_plugin;
|
|
pub mod feedback_anim_plugin;
|
|
pub mod challenge_plugin;
|
|
pub mod cursor_plugin;
|
|
pub mod daily_challenge_plugin;
|
|
pub mod events;
|
|
pub mod game_plugin;
|
|
pub mod help_plugin;
|
|
pub mod home_plugin;
|
|
pub mod hud_plugin;
|
|
pub mod leaderboard_plugin;
|
|
pub mod input_plugin;
|
|
pub mod layout;
|
|
pub mod onboarding_plugin;
|
|
pub mod pause_plugin;
|
|
pub mod profile_plugin;
|
|
pub mod settings_plugin;
|
|
pub mod progress_plugin;
|
|
pub mod resources;
|
|
pub mod selection_plugin;
|
|
pub mod stats_plugin;
|
|
pub mod sync_plugin;
|
|
pub mod table_plugin;
|
|
pub mod time_attack_plugin;
|
|
pub mod weekly_goals_plugin;
|
|
pub mod win_summary_plugin;
|
|
|
|
pub use achievement_plugin::{AchievementPlugin, AchievementsResource, AchievementsScreen};
|
|
pub use challenge_plugin::{
|
|
challenge_progress_label, ChallengeAdvancedEvent, ChallengePlugin, CHALLENGE_UNLOCK_LEVEL,
|
|
};
|
|
pub use daily_challenge_plugin::{
|
|
DailyChallengeCompletedEvent, DailyChallengePlugin, DailyChallengeResource,
|
|
};
|
|
pub use progress_plugin::{LevelUpEvent, ProgressPlugin, ProgressResource, ProgressUpdate};
|
|
pub use weekly_goals_plugin::{WeeklyGoalCompletedEvent, WeeklyGoalsPlugin};
|
|
pub use animation_plugin::{ActiveToast, AnimationPlugin, CardAnim, ToastEntity, ToastQueue};
|
|
pub use card_animation::{
|
|
CardAnimation, CardAnimationPlugin, MotionCurve, WinCascadePlugin,
|
|
retarget_animation, sample_curve, compute_duration, cascade_delay, micro_vary,
|
|
HoverState, InputBuffer, BufferedInput,
|
|
win_scatter_targets, WIN_CASCADE_INTERVAL_SECS, DEAL_INTERVAL_SECS,
|
|
MIN_DURATION_SECS, MAX_DURATION_SECS,
|
|
AnimationChain,
|
|
AnimationTuning, InputPlatform,
|
|
FrameTimeDiagnostics, DIAG_WINDOW_SIZE,
|
|
};
|
|
pub use feedback_anim_plugin::{
|
|
deal_stagger_delay, deal_stagger_secs_for_speed, shake_offset, settle_scale,
|
|
FeedbackAnimPlugin, SettleAnim, ShakeAnim,
|
|
};
|
|
pub use auto_complete_plugin::AutoCompletePlugin;
|
|
pub use audio_plugin::{AudioPlugin, AudioState, SoundLibrary};
|
|
pub use card_plugin::{
|
|
CardEntity, CardImageSet, CardLabel, CardPlugin, HintHighlight, HintHighlightTimer,
|
|
RightClickHighlight, RightClickHighlightTimer,
|
|
};
|
|
pub use font_plugin::{FontPlugin, FontResource};
|
|
pub use cursor_plugin::CursorPlugin;
|
|
pub use events::{
|
|
AchievementUnlockedEvent, CardFaceRevealedEvent, CardFlippedEvent, DrawRequestEvent,
|
|
ForfeitEvent, GameWonEvent, HintVisualEvent, InfoToastEvent, ManualSyncRequestEvent,
|
|
MoveRejectedEvent, MoveRequestEvent, NewGameConfirmEvent, NewGameRequestEvent,
|
|
StateChangedEvent, UndoRequestEvent, XpAwardedEvent,
|
|
};
|
|
pub use game_plugin::{ConfirmNewGameScreen, GameMutation, GameOverScreen, GamePlugin, GameStatePath};
|
|
pub use help_plugin::{HelpPlugin, HelpScreen};
|
|
pub use home_plugin::{HomePlugin, HomeScreen};
|
|
pub use hud_plugin::{HudAutoComplete, HudPlugin};
|
|
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};
|
|
pub use profile_plugin::{ProfilePlugin, ProfileScreen};
|
|
pub use settings_plugin::{
|
|
SettingsChangedEvent, SettingsPlugin, SettingsResource, SettingsScreen, SFX_STEP,
|
|
};
|
|
pub use layout::{compute_layout, Layout, LayoutResource};
|
|
pub use resources::{DragState, GameStateResource, HintCycleIndex, SettingsScrollPos, SyncStatus, SyncStatusResource};
|
|
pub use selection_plugin::{SelectionHighlight, SelectionPlugin, SelectionState};
|
|
pub use stats_plugin::{StatsPlugin, StatsResource, StatsScreen, StatsUpdate};
|
|
pub use sync_plugin::{SyncPlugin, SyncProviderResource};
|
|
pub use table_plugin::{HintPileHighlight, PileMarker, TableBackground, TablePlugin};
|
|
pub use time_attack_plugin::{
|
|
TimeAttackEndedEvent, TimeAttackPlugin, TimeAttackResource, TIME_ATTACK_DURATION_SECS,
|
|
};
|
|
pub use win_summary_plugin::{
|
|
format_win_time, ScreenShakeResource, SessionAchievements, WinSummaryPending, WinSummaryPlugin,
|
|
};
|