supreme_replay_analyzer/
level_data.rs1use crate::models::{Level, LevelDataEntry};
2use include_json::include_json;
3use std::collections::HashMap;
4use std::sync::OnceLock;
5
6static LEVELS: OnceLock<Vec<Level>> = OnceLock::new();
7
8pub fn get_levels() -> &'static Vec<Level> {
9 LEVELS.get_or_init(|| {
10 let level_data = include_json!(concat!(
11 env!("CARGO_MANIFEST_DIR"),
12 "/src/data/levelData.json"
13 ));
14 let level_map: HashMap<String, Vec<LevelDataEntry>> = serde_json::from_value(level_data)
15 .expect("Failed to deserialize to HashMap<String, Vec<LevelDataEntry>>");
16
17 level_map
18 .into_iter()
19 .map(|(name, entries)| Level { name, entries })
20 .collect()
21 })
22}