#![deny(warnings)] #![warn(clippy::all)] pub mod webgl; // ---------------------------------------------------------------------------- // Helpers to hide some of the verbosity of web_sys pub fn console_log(s: String) { web_sys::console::log_1(&s.into()); } pub fn now_sec() -> f64 { web_sys::window() .expect("should have a Window") .performance() .expect("should have a Performance") .now() / 1000.0 } pub fn local_storage() -> Option { web_sys::window()?.local_storage().ok()? } pub fn local_storage_get(key: &str) -> Option { local_storage().map(|storage| storage.get_item(key).ok())?? } pub fn local_storage_set(key: &str, value: &str) { local_storage().map(|storage| storage.set_item(key, value)); } pub fn local_storage_remove(key: &str) { local_storage().map(|storage| storage.remove_item(key)); } pub fn load_memory(ctx: &emigui::Context) { if let Some(memory_string) = local_storage_get("emigui_memory_json") { match serde_json::from_str(&memory_string) { Ok(memory) => { *ctx.memory() = memory; } Err(err) => { console_log(format!("ERROR: Failed to parse memory json: {}", err)); } } } } pub fn save_memory(ctx: &emigui::Context) { match serde_json::to_string(&*ctx.memory()) { Ok(json) => { local_storage_set("emigui_memory_json", &json); } Err(err) => { console_log(format!( "ERROR: Failed to seriealize memory as json: {}", err )); } } }