ccfb9394e0
Test / test (pull_request) Successful in 37m58s
Compiler-verified via RUSTFLAGS=--force-warn dead_code plus workspace-wide reference greps; three parallel audit agents covered the engine crate, the other eight crates, and Copilot commit-message-vs-diff drift. Removed: - replay_overlay/input.rs: 19 orphaned twins (~950 lines) of items also defined in mod.rs — the glob re-export made the mod.rs copies win and the file-level #![allow(dead_code)] hid the corpses. The live keyboard/ button handlers and ReplayScrubKeyHold stay; the allow is retired. - retarget_animation (never called; doc examples were its only refs) - ScanThemesRequestEvent (never registered/written/read; its doc claimed a handle_scan_themes consumer that does not exist) - _VEC3_REFERENCED workaround const + now-unneeded Vec3 import - solitaire_data: load_stats/save_stats/time_attack_session_with_now default-path wrappers (the _from/_to variants are the live API) and surplus re-export names (settings MIN/MAX bounds, token loaders) - solitaire_core: Session re-export (no external consumer) - solitaire_wasm: ReplayPlayer::is_finished (no JS caller) - solitaire_app: build_app wrapper (real entry is run()) Doc fixes: - audio_plugin: WAV count 5→7, add FoundationCompletedEvent table row, drop bogus 'placeholder' label, bevy_kira_audio→kira - ToastVariant::Warning: variant is live (5 writer plugins); dropped the stale allow(dead_code) and its 'currently unused' comment Deliberately kept: Spider module (staged forward work), WinCascadePlugin (documented alternative cascade, pending owner decision), SyncCompleteEvent and solitaire_sync ApiError/merge_at (§8 change-controlled, flagged to owner). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
62 lines
2.2 KiB
Rust
62 lines
2.2 KiB
Rust
pub mod achievement;
|
|
pub mod error;
|
|
pub mod game_state;
|
|
pub mod klondike_adapter;
|
|
pub mod scoring;
|
|
pub mod spider;
|
|
|
|
// Re-export the upstream types that cross the solitaire_core API boundary so
|
|
// downstream crates (engine, wasm) can import from one place without a direct
|
|
// `klondike` / `card_game` dep.
|
|
//
|
|
// `KlondikePileStack`, `SkipCards` and `TableauStack` are intentionally NOT
|
|
// re-exported — they are only used internally (in `klondike_adapter.rs` and
|
|
// when decoding instructions to piles in `instruction_to_piles`) and do not
|
|
// appear in any public method signature.
|
|
pub use card_game::{Card, Deck, Rank, SolveError, Suit};
|
|
pub use klondike::{
|
|
DrawStockConfig, Foundation, Klondike, KlondikeInstruction, KlondikePile, Tableau,
|
|
};
|
|
|
|
// Solvability check API (delegates to `card_game::Session::solve`); replaces the
|
|
// former `solitaire_data::solver` wrapper module.
|
|
pub use game_state::{DEFAULT_SOLVE_MOVES_BUDGET, DEFAULT_SOLVE_STATES_BUDGET, SolveOutcome};
|
|
|
|
// Spider rules (second `card_game::Game` implementation; engine UI is a
|
|
// later phase — nothing outside solitaire_core consumes these yet).
|
|
pub use spider::{
|
|
RunLength, Spider, SpiderConfig, SpiderGameState, SpiderInstruction, SpiderIter, SpiderMove,
|
|
SpiderScoring, SpiderStats, SpiderSuits, SpiderTableau,
|
|
};
|
|
|
|
/// All four foundation slots, in slot order.
|
|
///
|
|
/// Canonical iteration source for `Foundation` — upstream `klondike` has no
|
|
/// `Foundation::ALL` (unlike `Suit::SUITS` / `Rank::RANKS` in `card_game`),
|
|
/// and inherent impls cannot be added to a foreign type, so the workspace
|
|
/// const lives here. Use this instead of hand-rolling `[Foundation; 4]`
|
|
/// arrays; scattered copies can silently diverge.
|
|
pub const FOUNDATIONS: [Foundation; 4] = [
|
|
Foundation::Foundation1,
|
|
Foundation::Foundation2,
|
|
Foundation::Foundation3,
|
|
Foundation::Foundation4,
|
|
];
|
|
|
|
/// All seven tableau columns, in column order (left to right on screen).
|
|
///
|
|
/// Canonical iteration source for `Tableau` — see [`FOUNDATIONS`] for why
|
|
/// this lives here rather than upstream.
|
|
pub const TABLEAUS: [Tableau; 7] = [
|
|
Tableau::Tableau1,
|
|
Tableau::Tableau2,
|
|
Tableau::Tableau3,
|
|
Tableau::Tableau4,
|
|
Tableau::Tableau5,
|
|
Tableau::Tableau6,
|
|
Tableau::Tableau7,
|
|
];
|
|
|
|
#[cfg(test)]
|
|
mod proptest_tests;
|