Speicherstand mit Prüfsumme und Prüfung beim Laden

Snapshots tragen jetzt eine Prüfsumme (Format 2). Beim Wiederherstellen
werden Zustände abgelehnt, die die Regeln nie erzeugen: zu große Takte,
mehr als vier Spieler online, doppelte Schlüssel, unmögliche
Wartezeiten. World::load ersetzt den öffentlichen Aufruf von
set_all_offline. Die festgeschriebenen Werte sind bewusst angepasst und
um einen Offline-Spieler und das Kartenformat ergänzt.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
Steven Wroblewski
2026-10-01 10:17:03 +02:00
parent 8573a68901
commit ef728cd100
6 changed files with 324 additions and 35 deletions
-8
View File
@@ -176,14 +176,6 @@ fn the_world_remembers_a_limited_number_of_players() {
assert_eq!(world.players().len(), MAX_KNOWN_PLAYERS);
}
#[test]
fn set_all_offline_marks_every_player_offline() {
let mut world = World::new(1);
world.step(&[join(1), join(2)]);
world.set_all_offline();
assert!(world.players().iter().all(|player| !player.online));
}
#[test]
fn three_hits_break_soft_rock_and_give_one_stone() {
let (mut world, id, rock) = world_with_player();