fix(web): auto-complete now works with cards remaining in waste

check_auto_complete no longer requires the waste pile to be empty —
only the stock must be exhausted and all tableau cards face-up.
next_auto_complete_move checks the waste top card before scanning
tableau, and auto_complete_step falls back to draw() when no direct
foundation move is available so the waste drains automatically.

Fixes the end-game state where the player could see a clear win but
the auto-complete interval never fired because the waste was non-empty.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
funman300
2026-05-13 21:30:42 -07:00
parent d685224ce6
commit 1b7c4d92aa
4 changed files with 65 additions and 45 deletions
+6 -1
View File
@@ -1,3 +1,5 @@
/* @ts-self-types="./solitaire_wasm.d.ts" */
/**
* Browser-side replay state machine. Owns a live `GameState` and the
* replay's move list; each `step()` applies the next move.
@@ -92,7 +94,10 @@ export class SolitaireGame {
}
/**
* Apply one auto-complete move (only valid when `is_auto_completable`).
* Returns the post-move snapshot or `null` when auto-complete is unavailable.
*
* If no card can go directly to a foundation this step, advances the
* waste by calling `draw()` so the next step can try again. Returns the
* post-move snapshot, or `null` when no progress is possible.
* @returns {any}
*/
auto_complete_step() {
Binary file not shown.