poke_data/types/
stat.rs

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}