From 3d01e8fe06b81a35f42984b6c650e06e8673944c Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Tue, 13 May 2025 17:46:06 +0200 Subject: [PATCH] fix: handle bot errors --- client_cli/src/game_runner.rs | 15 ++++++++++----- store/src/game.rs | 5 +++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/client_cli/src/game_runner.rs b/client_cli/src/game_runner.rs index 42c836f..9944918 100644 --- a/client_cli/src/game_runner.rs +++ b/client_cli/src/game_runner.rs @@ -58,12 +58,17 @@ impl GameRunner { } pub fn handle_event(&mut self, event: &GameEvent) -> Option { - if !self.state.validate(event) { - println!("event not valid : {:?}", event); + if event == &GameEvent::PlayError { return None; } - // println!("consuming {:?}", event); - self.state.consume(event); + let valid_event = if self.state.validate(event) { + self.state.consume(event); + event + } else { + println!("{}", self.state); + println!("event not valid : {:?}", event); + &GameEvent::PlayError + }; // chain all successive bot actions if self.bots.is_empty() { @@ -74,7 +79,7 @@ impl GameRunner { let bot_events: Vec = self .bots .iter_mut() - .filter_map(|bot| bot.handle_event(event)) + .filter_map(|bot| bot.handle_event(valid_event)) .collect(); // if bot_events.len() > 1 { diff --git a/store/src/game.rs b/store/src/game.rs index 0c42e1a..65a23e3 100644 --- a/store/src/game.rs +++ b/store/src/game.rs @@ -331,6 +331,9 @@ impl GameState { return false; } } + PlayError => { + return true; + } } // We couldn't find anything wrong with the event so it must be good @@ -479,6 +482,7 @@ impl GameState { TurnStage::RollDice }; } + PlayError => {} } self.history.push(valid_event.clone()); } @@ -620,6 +624,7 @@ pub enum GameEvent { player_id: PlayerId, moves: (CheckerMove, CheckerMove), }, + PlayError, } impl GameEvent {