minesweeper_common/
models.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Serialize, Deserialize, Clone, Copy, Debug)]
4#[serde(tag = "state")]
5pub enum Cell {
6    #[serde(rename = "hidden")]
7    Hidden,
8    #[serde(rename = "marked")]
9    Marked,
10    #[serde(rename = "flagged")]
11    Flagged,
12    #[serde(rename = "revealed")]
13    Revealed { adjacent: u8 },
14    #[serde(rename = "bomb")]
15    Bomb,
16}
17
18#[derive(Serialize, Deserialize, Clone, Copy, Debug)]
19pub struct Pos {
20    pub x: usize,
21    pub y: usize,
22}
23
24#[derive(Serialize, Deserialize, Clone, Copy, Debug)]
25#[serde(default)]
26pub struct GameParams {
27    pub width: usize,
28    pub height: usize,
29    pub bombs: usize,
30}
31
32impl Default for GameParams {
33    fn default() -> Self {
34        Self {
35            width: 9,
36            height: 9,
37            bombs: 10,
38        }
39    }
40}
41
42#[derive(Serialize, Deserialize, Clone, Debug)]
43pub struct CreateResponse {
44    pub id: String,
45}