#[derive(Debug, Clone, Copy)]
pub struct Six {
pub hp: f32,
pub atk: f32,
pub dfe: f32,
pub m_atk: f32,
pub m_dfe: f32,
pub spd: f32,
}
#[derive(Debug, Clone, Copy)]
pub enum Panel {
Hp,
Atk,
MAtk,
Dfe,
MDfe,
Spd
}
#[derive(Debug, Clone, Copy)]
pub enum Car {
Timid, Sanguine, Impatience, Obtrusion, Enthusiasm,
Stubborn, Naughty, Bold, Overreach, Brave,
Clever, Concentration, Bigoted, Rational, Calm,
Stable, Innocent, Indolent, Frank, Leisure,
Vigilant, Shy, Meek, Anxiety, Careful,
Silence, Peace, Melancholy, Careless, Sureness, }
impl Car {
pub fn get_key(&self) -> [&Panel; 2] {
match self {
Car::Timid => [&Panel::Spd, &Panel::Atk],
Car::Sanguine => [&Panel::Spd, &Panel::MAtk],
Car::Impatience => [&Panel::Spd, &Panel::Dfe],
Car::Obtrusion => [&Panel::Spd, &Panel::MDfe],
Car::Enthusiasm => [&Panel::Spd, &Panel::Hp],
Car::Stubborn => [&Panel::Atk, &Panel::MAtk],
Car::Naughty => [&Panel::Atk, &Panel::Dfe],
Car::Bold => [&Panel::Atk, &Panel::MDfe],
Car::Overreach => [&Panel::Atk, &Panel::Hp],
Car::Brave => [&Panel::Atk, &Panel::Spd],
Car::Clever => [&Panel::MAtk, &Panel::Atk],
Car::Concentration => [&Panel::MAtk, &Panel::Dfe],
Car::Bigoted => [&Panel::MAtk, &Panel::MDfe],
Car::Rational => [&Panel::MAtk, &Panel::Hp],
Car::Calm => [&Panel::MAtk, &Panel::Spd],
Car::Stable => [&Panel::Dfe, &Panel::Atk],
Car::Innocent => [&Panel::Dfe, &Panel::MAtk],
Car::Indolent => [&Panel::Dfe, &Panel::MDfe],
Car::Frank => [&Panel::Dfe, &Panel::Hp],
Car::Leisure => [&Panel::Dfe, &Panel::Spd],
Car::Vigilant => [&Panel::MDfe, &Panel::Atk],
Car::Shy => [&Panel::MDfe, &Panel::MAtk],
Car::Meek => [&Panel::MDfe, &Panel::Dfe],
Car::Anxiety => [&Panel::MDfe, &Panel::Hp],
Car::Careful => [&Panel::MDfe, &Panel::Spd],
Car::Silence => [&Panel::Hp, &Panel::Atk],
Car::Peace => [&Panel::Hp, &Panel::MAtk],
Car::Melancholy => [&Panel::Hp, &Panel::Dfe],
Car::Careless => [&Panel::Hp, &Panel::MDfe],
Car::Sureness => [&Panel::Hp, &Panel::Spd],
}
}
}
pub fn get_field_mut<'a>(prop: &'a mut Six, key: &'a Panel) -> Option<&'a mut f32> {
match key {
Panel::Hp => Some(&mut prop.hp),
Panel::Atk => Some(&mut prop.atk),
Panel::MAtk => Some(&mut prop.m_atk),
Panel::Dfe => Some(&mut prop.dfe),
Panel::MDfe => Some(&mut prop.m_dfe),
Panel::Spd => Some(&mut prop.spd),
}
}