minesweeper_multiplayer/utils/serializables/
mod.rs

1mod serializable_board;
2mod serializable_point;
3use minesweeper_core::{Cell, Difficulty};
4
5pub use serializable_board::*;
6pub use serializable_point::*;
7
8#[derive(serde::Serialize, serde::Deserialize, Clone)]
9pub struct SerializableCell {
10    pub number: i8,
11    pub cleared: bool,
12    pub flagged: bool,
13    pub coordinates: SerializablePoint,
14}
15
16impl From<Cell> for SerializableCell {
17    fn from(cell: Cell) -> Self {
18        SerializableCell {
19            number: cell.number,
20            cleared: cell.cleared,
21            flagged: cell.flagged,
22            coordinates: cell.coordinates.into(),
23        }
24    }
25}
26
27impl From<SerializableCell> for Cell {
28    fn from(cell: SerializableCell) -> Self {
29        Cell {
30            number: cell.number,
31            cleared: cell.cleared,
32            flagged: cell.flagged,
33            coordinates: cell.coordinates.into(),
34        }
35    }
36}
37
38#[derive(serde::Serialize, serde::Deserialize, Clone)]
39pub struct GameDefinition {
40    pub name: String,
41    pub id: String,
42    pub difficulty: String,
43}
44
45impl GameDefinition {
46    pub fn new(id: impl Into<String>, name: impl Into<String>, difficulty: Difficulty) -> Self {
47        GameDefinition {
48            name: name.into(),
49            id: id.into(),
50            difficulty: difficulty.to_string(),
51        }
52    }
53}