roguelike-game/src/raws.rs

48 lines
1.1 KiB
Rust
Raw Normal View History

mod item_structs;
2022-01-05 09:42:36 -05:00
mod loot_structs;
mod mob_structs;
mod prop_structs;
2021-12-23 11:38:37 -05:00
mod rawmaster;
2021-12-23 13:07:50 -05:00
mod spawn_table_structs;
2021-12-23 11:38:37 -05:00
use std::sync::Mutex;
2021-12-24 10:38:44 -05:00
use ::rltk::{embedded_resource, link_resource};
use ::serde::Deserialize;
use item_structs::*;
2022-01-05 09:42:36 -05:00
use loot_structs::*;
use mob_structs::*;
use prop_structs::*;
2021-12-23 11:38:37 -05:00
pub use rawmaster::*;
2021-12-23 13:07:50 -05:00
use spawn_table_structs::*;
#[derive(Deserialize, Debug)]
pub struct Raws {
pub items: Vec<Item>,
pub mobs: Vec<Mob>,
pub props: Vec<Prop>,
2021-12-23 13:07:50 -05:00
pub spawn_table: Vec<SpawnTableEntry>,
2022-01-05 09:42:36 -05:00
pub loot_tables: Vec<LootTable>,
}
2021-12-24 10:38:44 -05:00
embedded_resource!(RAW_FILE, "../raws/spawns.json");
2021-12-23 11:38:37 -05:00
lazy_static! {
pub static ref RAWS: Mutex<RawMaster> = Mutex::new(RawMaster::empty());
}
pub fn load_raws() {
2021-12-24 10:38:44 -05:00
link_resource!(RAW_FILE, "../raws/spawns.json");
2021-12-23 11:38:37 -05:00
2021-12-24 10:38:44 -05:00
let raw_data = ::rltk::embedding::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.");
2021-12-24 10:38:44 -05:00
let decoder: Raws = ::serde_json::from_str(raw_string).expect("Unable to parse JSON");
2021-12-23 11:38:37 -05:00
RAWS.lock().unwrap().load(decoder);
}