feat: TrictracBoard for kZero

This commit is contained in:
Henri Bourcereau 2025-09-01 14:47:09 +02:00
parent 4e299b04e2
commit e66d8b6624
5 changed files with 22 additions and 8 deletions

View file

@ -9,12 +9,13 @@ use log::{debug, error};
// use itertools::Itertools;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::hash::{Hash, Hasher};
use std::{fmt, str};
use base64::{engine::general_purpose, Engine as _};
/// The different stages a game can be in. (not to be confused with the entire "GameState")
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum Stage {
PreGame,
InGame,
@ -22,7 +23,7 @@ pub enum Stage {
}
/// The different stages a game turn can be in.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum TurnStage {
RollDice,
RollWaiting,
@ -114,6 +115,11 @@ impl Default for GameState {
}
}
}
impl Hash for GameState {
fn hash<H: Hasher>(&self, state: &mut H) {
self.to_string_id().hash(state);
}
}
impl GameState {
/// Create a new default game