thedes_domain/
block.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(
4    Debug,
5    Clone,
6    Copy,
7    PartialEq,
8    Eq,
9    PartialOrd,
10    Ord,
11    Hash,
12    Serialize,
13    Deserialize,
14)]
15#[repr(u8)]
16pub enum Block {
17    Placeable(PlaceableBlock),
18    Special(SpecialBlock),
19}
20
21impl Default for Block {
22    fn default() -> Self {
23        Self::Placeable(PlaceableBlock::default())
24    }
25}
26
27impl From<PlaceableBlock> for Block {
28    fn from(block: PlaceableBlock) -> Self {
29        Self::Placeable(block)
30    }
31}
32
33impl From<SpecialBlock> for Block {
34    fn from(block: SpecialBlock) -> Self {
35        Self::Special(block)
36    }
37}
38
39#[derive(
40    Debug,
41    Clone,
42    Copy,
43    PartialEq,
44    Eq,
45    PartialOrd,
46    Ord,
47    Hash,
48    Default,
49    Serialize,
50    Deserialize,
51)]
52#[repr(u8)]
53pub enum PlaceableBlock {
54    #[default]
55    Air = 0,
56}
57
58#[derive(
59    Debug,
60    Clone,
61    Copy,
62    PartialEq,
63    Eq,
64    PartialOrd,
65    Ord,
66    Hash,
67    Default,
68    Serialize,
69    Deserialize,
70)]
71#[repr(u8)]
72pub enum SpecialBlock {
73    #[default]
74    Player = 0,
75}