poke_data/models/
base_stats.rs1use crate::types::stat::Stat;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Default, Clone, Serialize, Deserialize)]
5pub struct BaseStats {
7 pub hp: (u8, u8),
8 pub attack: (u8, u8),
9 pub defense: (u8, u8),
10 pub special_attack: (u8, u8),
11 pub special_defense: (u8, u8),
12 pub speed: (u8, u8),
13}
14
15impl BaseStats {
16 pub fn get_value(&self, stat: Stat) -> u8 {
17 match stat {
18 Stat::Hp => self.hp.0,
19 Stat::Attack => self.attack.0,
20 Stat::Defense => self.defense.0,
21 Stat::SpAttack => self.special_attack.0,
22 Stat::SpDefense => self.special_defense.0,
23 Stat::Speed => self.speed.0,
24 _ => 0,
25 }
26 }
27
28 pub fn get_effort(&self, stat: Stat) -> u8 {
29 match stat {
30 Stat::Hp => self.hp.1,
31 Stat::Attack => self.attack.1,
32 Stat::Defense => self.defense.1,
33 Stat::SpAttack => self.special_attack.1,
34 Stat::SpDefense => self.special_defense.1,
35 Stat::Speed => self.speed.1,
36 _ => 0,
37 }
38 }
39
40 pub fn set_stat(&mut self, stat: Stat, base_value: u8, effort: u8) {
41 match stat {
42 Stat::Hp => self.hp = (base_value, effort),
43 Stat::Attack => self.attack = (base_value, effort),
44 Stat::Defense => self.defense = (base_value, effort),
45 Stat::SpAttack => self.special_attack = (base_value, effort),
46 Stat::SpDefense => self.special_defense = (base_value, effort),
47 Stat::Speed => self.speed = (base_value, effort),
48 _ => {}
49 }
50 }
51}