fix: handle bot errors

This commit is contained in:
Henri Bourcereau 2025-05-13 17:46:06 +02:00
parent 4fd1f00af0
commit 3d01e8fe06
2 changed files with 15 additions and 5 deletions

View file

@ -58,12 +58,17 @@ impl GameRunner {
} }
pub fn handle_event(&mut self, event: &GameEvent) -> Option<GameEvent> { pub fn handle_event(&mut self, event: &GameEvent) -> Option<GameEvent> {
if !self.state.validate(event) { if event == &GameEvent::PlayError {
println!("event not valid : {:?}", event);
return None; return None;
} }
// println!("consuming {:?}", event); let valid_event = if self.state.validate(event) {
self.state.consume(event); self.state.consume(event);
event
} else {
println!("{}", self.state);
println!("event not valid : {:?}", event);
&GameEvent::PlayError
};
// chain all successive bot actions // chain all successive bot actions
if self.bots.is_empty() { if self.bots.is_empty() {
@ -74,7 +79,7 @@ impl GameRunner {
let bot_events: Vec<GameEvent> = self let bot_events: Vec<GameEvent> = self
.bots .bots
.iter_mut() .iter_mut()
.filter_map(|bot| bot.handle_event(event)) .filter_map(|bot| bot.handle_event(valid_event))
.collect(); .collect();
// if bot_events.len() > 1 { // if bot_events.len() > 1 {

View file

@ -331,6 +331,9 @@ impl GameState {
return false; return false;
} }
} }
PlayError => {
return true;
}
} }
// We couldn't find anything wrong with the event so it must be good // We couldn't find anything wrong with the event so it must be good
@ -479,6 +482,7 @@ impl GameState {
TurnStage::RollDice TurnStage::RollDice
}; };
} }
PlayError => {}
} }
self.history.push(valid_event.clone()); self.history.push(valid_event.clone());
} }
@ -620,6 +624,7 @@ pub enum GameEvent {
player_id: PlayerId, player_id: PlayerId,
moves: (CheckerMove, CheckerMove), moves: (CheckerMove, CheckerMove),
}, },
PlayError,
} }
impl GameEvent { impl GameEvent {