rocalc 0.1.0

一款用于计算洛克王国:世界精灵对决的Rust库
Documentation
use crate::structs::*;
use crate::enums::*;

/// 根据性格得出需要增减益的字段
pub fn get_key(car: &Car) -> [&Panel; 2] {
    match car {
        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],
    }
}

/// 通过 Panel 面板选择 Six 结构体中的字段
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),
    }
}