|
|
@ -13,7 +13,7 @@ use crate::ship::drops::load_data_file; |
|
|
|
use crate::ship::drops::tech_table::TechniqueTable;
|
|
|
|
|
|
|
|
|
|
|
|
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Copy, Clone)]
|
|
|
|
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Copy, Clone, enum_utils::FromStr)]
|
|
|
|
enum ToolRateType {
|
|
|
|
Monomate,
|
|
|
|
Dimate,
|
|
|
@ -50,6 +50,19 @@ struct ToolRate { |
|
|
|
}*/
|
|
|
|
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
|
|
struct ToolRatesRaw {
|
|
|
|
area1: BTreeMap<String, u32>,
|
|
|
|
area2: BTreeMap<String, u32>,
|
|
|
|
area3: BTreeMap<String, u32>,
|
|
|
|
area4: BTreeMap<String, u32>,
|
|
|
|
area5: BTreeMap<String, u32>,
|
|
|
|
area6: BTreeMap<String, u32>,
|
|
|
|
area7: BTreeMap<String, u32>,
|
|
|
|
area8: BTreeMap<String, u32>,
|
|
|
|
area9: BTreeMap<String, u32>,
|
|
|
|
area10: BTreeMap<String, u32>,
|
|
|
|
}
|
|
|
|
|
|
|
|
struct ToolRates {
|
|
|
|
area1: BTreeMap<ToolRateType, u32>,
|
|
|
|
area2: BTreeMap<ToolRateType, u32>,
|
|
|
@ -63,6 +76,23 @@ struct ToolRates { |
|
|
|
area10: BTreeMap<ToolRateType, u32>,
|
|
|
|
}
|
|
|
|
|
|
|
|
impl ToolRates {
|
|
|
|
fn new(raw: ToolRatesRaw) -> ToolRates {
|
|
|
|
ToolRates {
|
|
|
|
area1: raw.area1.into_iter().map(|(name, rate)| (name.parse().unwrap(), rate)).collect(),
|
|
|
|
area2: raw.area2.into_iter().map(|(name, rate)| (name.parse().unwrap(), rate)).collect(),
|
|
|
|
area3: raw.area3.into_iter().map(|(name, rate)| (name.parse().unwrap(), rate)).collect(),
|
|
|
|
area4: raw.area4.into_iter().map(|(name, rate)| (name.parse().unwrap(), rate)).collect(),
|
|
|
|
area5: raw.area5.into_iter().map(|(name, rate)| (name.parse().unwrap(), rate)).collect(),
|
|
|
|
area6: raw.area6.into_iter().map(|(name, rate)| (name.parse().unwrap(), rate)).collect(),
|
|
|
|
area7: raw.area7.into_iter().map(|(name, rate)| (name.parse().unwrap(), rate)).collect(),
|
|
|
|
area8: raw.area8.into_iter().map(|(name, rate)| (name.parse().unwrap(), rate)).collect(),
|
|
|
|
area9: raw.area9.into_iter().map(|(name, rate)| (name.parse().unwrap(), rate)).collect(),
|
|
|
|
area10: raw.area10.into_iter().map(|(name, rate)| (name.parse().unwrap(), rate)).collect(),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl ToolRates {
|
|
|
|
fn get_by_area<'a>(&'a self, map_area: &MapVariantType) -> &'a BTreeMap<ToolRateType, u32> {
|
|
|
|
match map_area.area_value().unwrap() {
|
|
|
@ -87,8 +117,10 @@ pub struct ToolTable { |
|
|
|
|
|
|
|
impl ToolTable {
|
|
|
|
pub fn new(episode: Episode, difficulty: Difficulty, section_id: SectionID) -> ToolTable {
|
|
|
|
let rates = load_data_file(episode, difficulty, section_id, "tool_rate.toml");
|
|
|
|
|
|
|
|
ToolTable {
|
|
|
|
rates: load_data_file(episode, difficulty, section_id, "tool_rate.toml"),
|
|
|
|
rates: ToolRates::new(rates),
|
|
|
|
tech_table: TechniqueTable::new(episode, difficulty, section_id),
|
|
|
|
}
|
|
|
|
}
|
|
|
|