1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
4#[repr(u8)]
5pub enum Stat {
6 Hp = 1,
7 Attack = 2,
8 Defense = 3,
9 SpAttack = 4,
10 SpDefense = 5,
11 Speed = 6,
12 Accuracy = 7,
13 Evasion = 8,
14}
15
16impl From<u8> for Stat {
17 fn from(value: u8) -> Self {
18 match value & 0b1111 {
19 1 => Self::Hp,
20 2 => Self::Attack,
21 3 => Self::Defense,
22 4 => Self::SpAttack,
23 5 => Self::SpDefense,
24 6 => Self::Speed,
25 7 => Self::Accuracy,
26 8 => Self::Evasion,
27 _ => unreachable!("Invalid stat value: {}", value),
28 }
29 }
30}