mahjong_core/game/
errors.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
use strum_macros::EnumIter;

#[derive(Debug, PartialEq, Eq, Clone, EnumIter)]
pub enum DiscardTileError {
    ClaimedAnotherTile,
    NoPlayerCanDiscard,
    PlayerHasNoTile,
    TileIsExposed,
    TileIsPartOfMeld,
}

#[derive(Debug, PartialEq, Eq, Clone, EnumIter)]
pub enum CreateMeldError {
    EndRound,
    NotMeld,
    TileIsPartOfMeld,
}

#[derive(Debug, PartialEq, Eq, Clone, EnumIter)]
pub enum PassNullRoundError {
    HandCanDropTile,
    HandCanSayMahjong,
    WallNotEmpty,
}

#[derive(Debug, PartialEq, Eq, Clone, EnumIter)]
pub enum BreakMeldError {
    MeldIsKong,
    MissingHand,
    TileIsExposed,
}

#[derive(Debug, PartialEq, Eq, Clone, EnumIter)]
pub enum DecideDealerError {
    DuplicatedWinds,
}

#[derive(Debug, PartialEq, Eq, Clone, EnumIter)]
pub enum DrawError {
    NotEnoughTiles,
}

impl Default for DrawError {
    fn default() -> Self {
        Self::NotEnoughTiles
    }
}