elseware/src/ship/drops/tech_table.rs
2020-03-18 18:21:34 -07:00

98 lines
2.5 KiB
Rust

use std::collections::{HashMap, BTreeMap};
use std::io::Read;
use serde::{Serialize, Deserialize};
use rand::{Rng, SeedableRng};
use rand::distributions::{WeightedIndex, Distribution};
use crate::entity::item::ItemDetail;
use crate::entity::item::tech::{Technique, TechniqueDisk};
use crate::ship::room::{Difficulty, Episode};
use crate::ship::map::MapVariantType;
use crate::entity::character::SectionID;
use crate::ship::drops::load_data_file;
#[derive(Debug, Serialize, Deserialize)]
struct TechniqueRateStat {
rate: u32,
min: i32,
max: i32,
}
#[derive(Debug, Serialize, Deserialize)]
struct TechniqueRate {
#[serde(rename = "Foie")]
foie: TechniqueRateStat,
#[serde(rename = "Gifoie")]
gifoie: TechniqueRateStat,
#[serde(rename = "Rafoie")]
rafoie: TechniqueRateStat,
#[serde(rename = "Zonde")]
zonde: TechniqueRateStat,
#[serde(rename = "Gizonde")]
gizonde: TechniqueRateStat,
#[serde(rename = "Razonde")]
razonde: TechniqueRateStat,
#[serde(rename = "Barta")]
barta: TechniqueRateStat,
#[serde(rename = "Gibarta")]
gibarta: TechniqueRateStat,
#[serde(rename = "Rabarta")]
rabarta: TechniqueRateStat,
#[serde(rename = "Grants")]
grants: TechniqueRateStat,
#[serde(rename = "Deband")]
deband: TechniqueRateStat,
#[serde(rename = "Jellen")]
jellen: TechniqueRateStat,
#[serde(rename = "Zalure")]
zalure: TechniqueRateStat,
#[serde(rename = "Shifta")]
shifta: TechniqueRateStat,
#[serde(rename = "Ryuker")]
ryuker: TechniqueRateStat,
#[serde(rename = "Resta")]
resta: TechniqueRateStat,
#[serde(rename = "Anti")]
anti: TechniqueRateStat,
#[serde(rename = "Reverser")]
reverser: TechniqueRateStat,
#[serde(rename = "Megid")]
megid: TechniqueRateStat,
}
#[derive(Debug, Serialize, Deserialize)]
struct TechniqueRates {
area1: TechniqueRate,
area2: TechniqueRate,
area3: TechniqueRate,
area4: TechniqueRate,
area5: TechniqueRate,
area6: TechniqueRate,
area7: TechniqueRate,
area8: TechniqueRate,
area9: TechniqueRate,
area10: TechniqueRate,
}
pub struct TechniqueTable {
rates: TechniqueRates
}
impl TechniqueTable {
pub fn new(episode: Episode, difficulty: Difficulty, section_id: SectionID) -> TechniqueTable {
TechniqueTable {
rates: load_data_file(episode, difficulty, section_id, "tech_rate.toml")
}
}
pub fn get_drop<R: Rng>(&self, map_area: &MapVariantType, rng: &mut R) -> Option<ItemDetail> {
None
}
}