refactor(core): move solver to solitaire_data, DrawMode to klondike_adapter, remove pile/solver/schema_version
- Delete solitaire_core::solver — moved wholesale to solitaire_data::solver (re-exported at crate root) - Delete solitaire_core::pile — no external users - Move DrawMode from game_state to klondike_adapter; re-export as solitaire_core::DrawMode - Remove schema_version field from GameState (redundant — deserializer stamps it from the constant) - Update all callers across solitaire_data, solitaire_engine, solitaire_assetgen, solitaire_wasm Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
use crate::card::Card;
|
||||
use crate::error::MoveError;
|
||||
use crate::klondike_adapter::{
|
||||
KlondikeAdapter, SavedInstruction, card_from_kl, compute_time_bonus as scoring_time_bonus,
|
||||
DrawMode, KlondikeAdapter, SavedInstruction, card_from_kl,
|
||||
compute_time_bonus as scoring_time_bonus,
|
||||
foundation_from_slot as adapter_foundation_from_slot,
|
||||
skip_cards_from_count as adapter_skip_cards_from_count,
|
||||
tableau_from_index as adapter_tableau_from_index,
|
||||
@@ -33,15 +34,6 @@ fn schema_v1() -> u32 {
|
||||
1
|
||||
}
|
||||
|
||||
/// Whether cards are drawn one at a time or three at a time from the stock.
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum DrawMode {
|
||||
/// Draw one card from stock per turn.
|
||||
DrawOne,
|
||||
/// Draw three cards from stock per turn; only the top is playable.
|
||||
DrawThree,
|
||||
}
|
||||
|
||||
/// Difficulty tier for `GameMode::Difficulty`. Controls which pre-verified seed
|
||||
/// catalog is drawn from. `Random` skips verification entirely and uses a
|
||||
/// system-time seed — deals may or may not be winnable.
|
||||
@@ -185,8 +177,6 @@ pub struct GameState {
|
||||
/// When `true`, the player may move the top card of a foundation pile back
|
||||
/// onto a compatible tableau column.
|
||||
pub take_from_foundation: bool,
|
||||
/// Save-file schema version.
|
||||
pub schema_version: u32,
|
||||
pub(crate) session: Session<Klondike>,
|
||||
/// Score recorded immediately before each instruction was applied.
|
||||
/// Parallel to `session.history()` during live play; used by `undo()` to
|
||||
@@ -215,7 +205,6 @@ impl PartialEq for GameState {
|
||||
&& self.undo_count == other.undo_count
|
||||
&& self.recycle_count == other.recycle_count
|
||||
&& self.take_from_foundation == other.take_from_foundation
|
||||
&& self.schema_version == other.schema_version
|
||||
&& self.stock_cards() == other.stock_cards()
|
||||
&& self.waste_cards() == other.waste_cards()
|
||||
&& (0..4_u8)
|
||||
@@ -243,7 +232,7 @@ impl Serialize for GameState {
|
||||
undo_count: self.undo_count,
|
||||
recycle_count: self.recycle_count,
|
||||
take_from_foundation: self.take_from_foundation,
|
||||
schema_version: self.schema_version,
|
||||
schema_version: GAME_STATE_SCHEMA_VERSION,
|
||||
saved_moves: self.saved_moves(),
|
||||
}
|
||||
.serialize(serializer)
|
||||
@@ -279,9 +268,6 @@ impl<'de> Deserialize<'de> for GameState {
|
||||
// due to the pre-Phase-3 undo drift bug.
|
||||
recycle_count: 0,
|
||||
take_from_foundation: persisted.take_from_foundation,
|
||||
// Always stamp the current schema version after a successful load so
|
||||
// storage.rs schema checks pass and re-saving writes the v4 format.
|
||||
schema_version: GAME_STATE_SCHEMA_VERSION,
|
||||
session: Self::new_session(persisted.seed, persisted.draw_mode),
|
||||
// score_history cannot be faithfully rebuilt from the instruction
|
||||
// history because live-play undo penalties are not recorded in
|
||||
@@ -358,7 +344,6 @@ impl GameState {
|
||||
undo_count: 0,
|
||||
recycle_count: 0,
|
||||
take_from_foundation: true,
|
||||
schema_version: GAME_STATE_SCHEMA_VERSION,
|
||||
session: Self::new_session(seed, draw_mode),
|
||||
score_history: Vec::new(),
|
||||
is_recycle_history: Vec::new(),
|
||||
|
||||
Reference in New Issue
Block a user