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 ActionType {
7    #[serde(rename = "movement")]
8    Movement,
9    #[serde(rename = "fight")]
10    Fight,
11    #[serde(rename = "multi_fight")]
12    MultiFight,
13    #[serde(rename = "crafting")]
14    Crafting,
15    #[serde(rename = "gathering")]
16    Gathering,
17    #[serde(rename = "buy_ge")]
18    BuyGe,
19    #[serde(rename = "sell_ge")]
20    SellGe,
21    #[serde(rename = "buy_npc")]
22    BuyNpc,
23    #[serde(rename = "sell_npc")]
24    SellNpc,
25    #[serde(rename = "cancel_ge")]
26    CancelGe,
27    #[serde(rename = "delete_item")]
28    DeleteItem,
29    #[serde(rename = "deposit_item")]
30    DepositItem,
31    #[serde(rename = "withdraw_item")]
32    WithdrawItem,
33    #[serde(rename = "deposit_gold")]
34    DepositGold,
35    #[serde(rename = "withdraw_gold")]
36    WithdrawGold,
37    #[serde(rename = "equip")]
38    Equip,
39    #[serde(rename = "unequip")]
40    Unequip,
41    #[serde(rename = "task")]
42    Task,
43    #[serde(rename = "recycling")]
44    Recycling,
45    #[serde(rename = "rest")]
46    Rest,
47    #[serde(rename = "use")]
48    Use,
49    #[serde(rename = "buy_bank_expansion")]
50    BuyBankExpansion,
51    #[serde(rename = "give_item")]
52    GiveItem,
53    #[serde(rename = "give_gold")]
54    GiveGold,
55    #[serde(rename = "change_skin")]
56    ChangeSkin,
57    #[serde(rename = "rename")]
58    Rename,
59    #[serde(rename = "transition")]
60    Transition,
61}
62
63impl std::fmt::Display for ActionType {
64    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
65        match self {
66            Self::Movement => write!(f, "movement"),
67            Self::Fight => write!(f, "fight"),
68            Self::MultiFight => write!(f, "multi_fight"),
69            Self::Crafting => write!(f, "crafting"),
70            Self::Gathering => write!(f, "gathering"),
71            Self::BuyGe => write!(f, "buy_ge"),
72            Self::SellGe => write!(f, "sell_ge"),
73            Self::BuyNpc => write!(f, "buy_npc"),
74            Self::SellNpc => write!(f, "sell_npc"),
75            Self::CancelGe => write!(f, "cancel_ge"),
76            Self::DeleteItem => write!(f, "delete_item"),
77            Self::DepositItem => write!(f, "deposit_item"),
78            Self::WithdrawItem => write!(f, "withdraw_item"),
79            Self::DepositGold => write!(f, "deposit_gold"),
80            Self::WithdrawGold => write!(f, "withdraw_gold"),
81            Self::Equip => write!(f, "equip"),
82            Self::Unequip => write!(f, "unequip"),
83            Self::Task => write!(f, "task"),
84            Self::Recycling => write!(f, "recycling"),
85            Self::Rest => write!(f, "rest"),
86            Self::Use => write!(f, "use"),
87            Self::BuyBankExpansion => write!(f, "buy_bank_expansion"),
88            Self::GiveItem => write!(f, "give_item"),
89            Self::GiveGold => write!(f, "give_gold"),
90            Self::ChangeSkin => write!(f, "change_skin"),
91            Self::Rename => write!(f, "rename"),
92            Self::Transition => write!(f, "transition"),
93        }
94    }
95}
96
97impl Default for ActionType {
98    fn default() -> ActionType {
99        Self::Movement
100    }
101}