1use crate::models;
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
5#[cfg_attr(feature = "specta", derive(specta::Type))]
6pub enum LogType {
7    #[serde(rename = "spawn")]
8    Spawn,
9    #[serde(rename = "movement")]
10    Movement,
11    #[serde(rename = "fight")]
12    Fight,
13    #[serde(rename = "multi_fight")]
14    MultiFight,
15    #[serde(rename = "crafting")]
16    Crafting,
17    #[serde(rename = "gathering")]
18    Gathering,
19    #[serde(rename = "buy_ge")]
20    BuyGe,
21    #[serde(rename = "sell_ge")]
22    SellGe,
23    #[serde(rename = "buy_npc")]
24    BuyNpc,
25    #[serde(rename = "sell_npc")]
26    SellNpc,
27    #[serde(rename = "cancel_ge")]
28    CancelGe,
29    #[serde(rename = "delete_item")]
30    DeleteItem,
31    #[serde(rename = "deposit_item")]
32    DepositItem,
33    #[serde(rename = "withdraw_item")]
34    WithdrawItem,
35    #[serde(rename = "deposit_gold")]
36    DepositGold,
37    #[serde(rename = "withdraw_gold")]
38    WithdrawGold,
39    #[serde(rename = "equip")]
40    Equip,
41    #[serde(rename = "unequip")]
42    Unequip,
43    #[serde(rename = "new_task")]
44    NewTask,
45    #[serde(rename = "task_exchange")]
46    TaskExchange,
47    #[serde(rename = "task_cancelled")]
48    TaskCancelled,
49    #[serde(rename = "task_completed")]
50    TaskCompleted,
51    #[serde(rename = "task_trade")]
52    TaskTrade,
53    #[serde(rename = "recycling")]
54    Recycling,
55    #[serde(rename = "rest")]
56    Rest,
57    #[serde(rename = "use")]
58    Use,
59    #[serde(rename = "buy_bank_expansion")]
60    BuyBankExpansion,
61    #[serde(rename = "achievement")]
62    Achievement,
63    #[serde(rename = "give_item")]
64    GiveItem,
65    #[serde(rename = "give_gold")]
66    GiveGold,
67    #[serde(rename = "receive_item")]
68    ReceiveItem,
69    #[serde(rename = "receive_gold")]
70    ReceiveGold,
71    #[serde(rename = "change_skin")]
72    ChangeSkin,
73    #[serde(rename = "rename")]
74    Rename,
75    #[serde(rename = "transition")]
76    Transition,
77}
78
79impl std::fmt::Display for LogType {
80    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
81        match self {
82            Self::Spawn => write!(f, "spawn"),
83            Self::Movement => write!(f, "movement"),
84            Self::Fight => write!(f, "fight"),
85            Self::MultiFight => write!(f, "multi_fight"),
86            Self::Crafting => write!(f, "crafting"),
87            Self::Gathering => write!(f, "gathering"),
88            Self::BuyGe => write!(f, "buy_ge"),
89            Self::SellGe => write!(f, "sell_ge"),
90            Self::BuyNpc => write!(f, "buy_npc"),
91            Self::SellNpc => write!(f, "sell_npc"),
92            Self::CancelGe => write!(f, "cancel_ge"),
93            Self::DeleteItem => write!(f, "delete_item"),
94            Self::DepositItem => write!(f, "deposit_item"),
95            Self::WithdrawItem => write!(f, "withdraw_item"),
96            Self::DepositGold => write!(f, "deposit_gold"),
97            Self::WithdrawGold => write!(f, "withdraw_gold"),
98            Self::Equip => write!(f, "equip"),
99            Self::Unequip => write!(f, "unequip"),
100            Self::NewTask => write!(f, "new_task"),
101            Self::TaskExchange => write!(f, "task_exchange"),
102            Self::TaskCancelled => write!(f, "task_cancelled"),
103            Self::TaskCompleted => write!(f, "task_completed"),
104            Self::TaskTrade => write!(f, "task_trade"),
105            Self::Recycling => write!(f, "recycling"),
106            Self::Rest => write!(f, "rest"),
107            Self::Use => write!(f, "use"),
108            Self::BuyBankExpansion => write!(f, "buy_bank_expansion"),
109            Self::Achievement => write!(f, "achievement"),
110            Self::GiveItem => write!(f, "give_item"),
111            Self::GiveGold => write!(f, "give_gold"),
112            Self::ReceiveItem => write!(f, "receive_item"),
113            Self::ReceiveGold => write!(f, "receive_gold"),
114            Self::ChangeSkin => write!(f, "change_skin"),
115            Self::Rename => write!(f, "rename"),
116            Self::Transition => write!(f, "transition"),
117        }
118    }
119}
120
121impl Default for LogType {
122    fn default() -> LogType {
123        Self::Spawn
124    }
125}