blastmud/blastmud_game/src/static_content/scavtable.rs

34 lines
924 B
Rust

use crate::models::item::Scavtype;
use super::{possession_type::PossessionType, room::melbs::street_scavtable};
use std::collections::BTreeMap;
use once_cell::sync::OnceCell;
use serde::{Deserialize, Serialize};
pub struct Scavinfo {
pub possession_type: PossessionType,
pub p_present: f64, // probability it is there.
pub difficulty_mean: f64,
pub difficulty_stdev: f64,
pub scavtype: Scavtype,
}
#[derive(Serialize, Deserialize, Clone, Debug, Ord, PartialOrd, Eq, PartialEq)]
pub enum ScavtableType {
Nothing,
CityStreet,
}
pub fn scavtable_map() -> &'static BTreeMap<ScavtableType, Vec<Scavinfo>> {
static MAP: OnceCell<BTreeMap<ScavtableType, Vec<Scavinfo>>> = OnceCell::new();
MAP.get_or_init(|| {
vec![
(ScavtableType::Nothing, vec![]),
(ScavtableType::CityStreet, street_scavtable()),
]
.into_iter()
.collect()
})
}