minesweeper_common/
models.rs1use 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}