minesweeper_multiplayer/utils/serializables/
mod.rs1mod 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}