fix(core): make take_from_foundation true by default across all clients
The flag was modelled as an opt-in non-standard rule but moving a card off a foundation is in fact standard Klondike — disabling it is the non-standard variant. Changing the core default to true means every client (desktop, Android, web) gets correct behaviour without each having to independently patch the value after construction. Clients that expose a settings toggle (desktop/Android) can still disable it through SettingsResource. - game_state.rs: flip default from false → true in new_with_mode - game_state.rs: rename/update take_from_foundation_disabled_by_default test to reflect the new intended default - solitaire_wasm/lib.rs: remove now-redundant override in new() (from_saved keeps its override to fix old saves that serialised false) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -193,7 +193,7 @@ impl GameState {
|
|||||||
is_auto_completable: false,
|
is_auto_completable: false,
|
||||||
undo_count: 0,
|
undo_count: 0,
|
||||||
recycle_count: 0,
|
recycle_count: 0,
|
||||||
take_from_foundation: false,
|
take_from_foundation: true,
|
||||||
schema_version: GAME_STATE_SCHEMA_VERSION,
|
schema_version: GAME_STATE_SCHEMA_VERSION,
|
||||||
undo_stack: VecDeque::new(),
|
undo_stack: VecDeque::new(),
|
||||||
}
|
}
|
||||||
@@ -1408,9 +1408,9 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn take_from_foundation_disabled_by_default() {
|
fn take_from_foundation_enabled_by_default() {
|
||||||
let g = setup_take_from_foundation_game();
|
let g = setup_take_from_foundation_game();
|
||||||
assert!(!g.take_from_foundation, "take_from_foundation is off by default (non-standard rule)");
|
assert!(g.take_from_foundation, "take_from_foundation is on by default (standard Klondike rule)");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
@@ -366,10 +366,9 @@ impl SolitaireGame {
|
|||||||
} else {
|
} else {
|
||||||
DrawMode::DrawOne
|
DrawMode::DrawOne
|
||||||
};
|
};
|
||||||
let mut game = GameState::new_with_mode(seed as u64, dm, GameMode::Classic);
|
SolitaireGame {
|
||||||
// The web client has no settings layer; enable standard Klondike rule unconditionally.
|
game: GameState::new_with_mode(seed as u64, dm, GameMode::Classic),
|
||||||
game.take_from_foundation = true;
|
}
|
||||||
SolitaireGame { game }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Full pile snapshot as a JS object.
|
/// Full pile snapshot as a JS object.
|
||||||
|
|||||||
Reference in New Issue
Block a user