//! Generates entities based on spec files mod faction_structs; mod item_structs; mod loot_structs; mod mob_structs; mod prop_structs; mod rawmaster; mod spawn_table_structs; mod spell_structs; mod weapon_traits; use std::sync::Mutex; use ::bracket_lib::prelude::*; use ::lazy_static::lazy_static; use ::serde::Deserialize; pub use faction_structs::*; use item_structs::*; use loot_structs::*; use mob_structs::*; use prop_structs::*; pub use rawmaster::*; use spawn_table_structs::*; pub use spell_structs::Spell; pub use weapon_traits::*; #[derive(Deserialize, Default, Debug)] pub struct Raws { pub items: Vec, pub mobs: Vec, pub props: Vec, pub spawn_table: Vec, pub loot_tables: Vec, pub faction_table: Vec, pub spells: Vec, pub weapon_traits: Vec, } embedded_resource!(RAW_FILE, "../raws/spawns.json"); lazy_static! { pub static ref RAWS: Mutex = Mutex::new(RawMaster::empty()); } pub fn load_raws() { link_resource!(RAW_FILE, "../raws/spawns.json"); let raw_data = EMBED .lock() .get_resource("../raws/spawns.json".to_string()) .unwrap(); let raw_string = std::str::from_utf8(raw_data).expect("Unable to convert to a valid UTF-8 string."); let decoder: Raws = ::serde_json::from_str(raw_string).expect("Unable to parse JSON"); RAWS.lock().unwrap().load(decoder); }