use csv::ReaderBuilder;
use std::error::Error;
use crate::core::Six;
pub fn get_race_value(name: &str, path: &str) -> Result<Six, Box<dyn Error>> {
let mut rdr = ReaderBuilder::new().flexible(true).from_path(path)?;
#[derive(serde::Deserialize)]
struct SpriteRow {
name: String,
hp: f32,
atk: f32,
m_atk: f32,
dfe: f32,
m_dfe: f32,
spd: f32,
}
let result = rdr
.deserialize::<SpriteRow>()
.filter_map(|result| result.ok())
.find(|row| row.name == name)
.map(|row| Six {
hp: row.hp,
atk: row.atk,
m_atk: row.m_atk,
dfe: row.dfe,
m_dfe: row.m_dfe,
spd: row.spd,
});
match result {
Some(six) => Ok(six),
None => Err(Box::from("没有找到精灵")),
}
}