This commit is contained in:
Henri Bourcereau 2026-02-19 21:42:19 +01:00
parent d67b7a7c01
commit 4da70e21b3
3 changed files with 59 additions and 13 deletions

View file

@ -2,7 +2,7 @@
use crate::board::{Board, CheckerMove};
use crate::dice::Dice;
use crate::game_rules_moves::MoveRules;
use crate::game_rules_points::{PointsRules, PossibleJans};
use crate::game_rules_points::{PointsRules, PossibleJans, PossibleJansMethods};
use crate::player::{Color, Player, PlayerId};
use log::{debug, error};
@ -146,19 +146,31 @@ impl GameState {
pub fn mirror(&self) -> GameState {
let mirrored_active_player = if self.active_player_id == 1 { 0 } else { 1 };
let mut mirrored_players = HashMap::new();
mirrored_players.insert(1, self.players.get(&2).unwrap().mirror());
mirrored_players.insert(2, self.players.get(&1).unwrap().mirror());
if let Some(p2) = self.players.get(&2) {
mirrored_players.insert(1, p2.mirror());
}
if let Some(p1) = self.players.get(&1) {
mirrored_players.insert(2, p1.mirror());
}
let mirrored_history = self
.history
.clone()
.iter()
.map(|evt| evt.get_mirror())
.collect();
let (move1, move2) = self.dice_moves;
GameState {
stage: self.stage,
turn_stage: self.turn_stage,
board: self.board.mirror(),
active_player_id: mirrored_active_player,
players: mirrored_players,
history: Vec::new(),
history: mirrored_history,
dice: self.dice,
dice_points: self.dice_points,
dice_moves: (CheckerMove::default(), CheckerMove::default()),
dice_jans: PossibleJans::default(),
dice_moves: (move1.mirror(), move2.mirror()),
dice_jans: self.dice_jans.mirror(),
roll_first: self.roll_first,
schools_enabled: self.schools_enabled,
}