wip: relevé
This commit is contained in:
parent
fc58768006
commit
8ae619ce26
|
|
@ -27,6 +27,7 @@ pub enum TurnStage {
|
|||
RollDice,
|
||||
RollWaiting,
|
||||
MarkPoints,
|
||||
HoldOrGoChoice,
|
||||
Move,
|
||||
MarkAdvPoints,
|
||||
}
|
||||
|
|
@ -133,8 +134,9 @@ impl GameState {
|
|||
TurnStage::RollWaiting => "000",
|
||||
TurnStage::RollDice => "001",
|
||||
TurnStage::MarkPoints => "010",
|
||||
TurnStage::Move => "011",
|
||||
TurnStage::MarkAdvPoints => "100",
|
||||
TurnStage::HoldOrGoChoice => "011",
|
||||
TurnStage::Move => "100",
|
||||
TurnStage::MarkAdvPoints => "101",
|
||||
};
|
||||
pos_bits.push_str(step_bits);
|
||||
|
||||
|
|
@ -273,6 +275,20 @@ impl GameState {
|
|||
// return false;
|
||||
// }
|
||||
}
|
||||
Go { player_id } => {
|
||||
if !self.players.contains_key(player_id) {
|
||||
error!("Player {} unknown", player_id);
|
||||
return false;
|
||||
}
|
||||
// Check player is currently the one making their move
|
||||
if self.active_player_id != *player_id {
|
||||
return false;
|
||||
}
|
||||
// Check the player can leave (ie the game is in the KeepOrLeaveChoice stage)
|
||||
if self.turn_stage != TurnStage::HoldOrGoChoice {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Move { player_id, moves } => {
|
||||
// Check player exists
|
||||
if !self.players.contains_key(player_id) {
|
||||
|
|
@ -284,6 +300,12 @@ impl GameState {
|
|||
error!("Player not active : {}", self.active_player_id);
|
||||
return false;
|
||||
}
|
||||
// Check the turn stage
|
||||
if self.turn_stage != TurnStage::HoldOrGoChoice
|
||||
|| self.turn_stage != TurnStage::Move
|
||||
{
|
||||
return false;
|
||||
}
|
||||
let color = &self.players[player_id].color;
|
||||
|
||||
let rules = MoveRules::new(color, &self.board, self.dice);
|
||||
|
|
@ -411,6 +433,15 @@ impl GameState {
|
|||
};
|
||||
}
|
||||
}
|
||||
Go { player_id } => {
|
||||
// TODO:
|
||||
// - réinitialiser dice_roll_count
|
||||
// - échanger les couleurs
|
||||
// - remettre les dames des deux joueurs aux talons
|
||||
// - joueur actif = joueur ayant sorti ses dames (donc deux jeux successifs)
|
||||
// - jeton bredouille replaçé sur joueur actif (?)
|
||||
self.turn_stage = TurnStage::RollDice;
|
||||
}
|
||||
Move { player_id, moves } => {
|
||||
let player = self.players.get(player_id).unwrap();
|
||||
self.board.move_checker(&player.color, moves.0).unwrap();
|
||||
|
|
@ -497,6 +528,9 @@ pub enum GameEvent {
|
|||
player_id: PlayerId,
|
||||
points: u8,
|
||||
},
|
||||
Go {
|
||||
player_id: PlayerId,
|
||||
},
|
||||
Move {
|
||||
player_id: PlayerId,
|
||||
moves: (CheckerMove, CheckerMove),
|
||||
|
|
|
|||
Loading…
Reference in a new issue