From bb7525206da1782fd9af49621aa52d87bd227838 Mon Sep 17 00:00:00 2001 From: Mica White Date: Fri, 3 Jul 2026 11:28:15 -0400 Subject: Snake example --- src/file.rs | 2 +- src/main.rs | 11 +++++++++-- src/scene.rs | 8 ++++++-- src/script.rs | 13 +++++++------ 4 files changed, 23 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/file.rs b/src/file.rs index 8e96fa9..42fecfa 100644 --- a/src/file.rs +++ b/src/file.rs @@ -14,7 +14,7 @@ pub struct FileManager { cache: FxHashMap, FileData>, } -#[derive(Debug, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct GameManifest { pub name: Box, pub first_scene: usize, diff --git a/src/main.rs b/src/main.rs index 0cbb7c8..81fffcf 100644 --- a/src/main.rs +++ b/src/main.rs @@ -78,8 +78,15 @@ fn main() { let manifest = files .load_file(Box::from("manifest.toml".as_ref())) .unwrap() - .unwrap_manifest(); - switch_scenes(&manifest.scenes, &mut scripts, &mut context, 0); + .unwrap_manifest() + .clone(); + switch_scenes( + &manifest.scenes, + &mut scripts, + &mut context, + &mut files, + manifest.first_scene, + ); buffer .render_loop(|buffer, event| match event { diff --git a/src/scene.rs b/src/scene.rs index 143eb0b..8f70350 100644 --- a/src/scene.rs +++ b/src/scene.rs @@ -1,7 +1,10 @@ use rustc_hash::FxHashSet; use serde::{Deserialize, Serialize}; -use crate::script::{ScriptContext, ScriptManager}; +use crate::{ + file::FileManager, + script::{ScriptContext, ScriptManager}, +}; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Scene { @@ -29,13 +32,14 @@ pub fn switch_scenes( scenes: &[Scene], scripts: &mut ScriptManager, context: &mut ScriptContext<'_>, + files: &mut FileManager, new: usize, ) { let active_scripts = FxHashSet::from_iter(scripts.active_scripts.iter().cloned()); let scripts_to_load = &scenes[new].scripts.required; for script in scripts_to_load { if !active_scripts.contains(script) { - scripts.activate_script(*script, context); + scripts.activate_script(*script, context, files); } else { scripts.reset_script(*script, context); } diff --git a/src/script.rs b/src/script.rs index dd65106..eeb943f 100644 --- a/src/script.rs +++ b/src/script.rs @@ -79,12 +79,13 @@ impl<'a> ScriptManager<'a> { }); } ScriptDeclaration::Wasm { path } => { - let module = files.load_file(path.clone()).unwrap().unwrap_wasm_module(); - let mut store = wasmi::Store::new(&files.wasm_compiler, context); - let instance = self - .linker - .instantiate_and_start(&mut store, &module) - .unwrap(); + todo!("wasm scripts") + // let module = files.load_file(path.clone()).unwrap().unwrap_wasm_module(); + // let mut store = wasmi::Store::new(&files.wasm_compiler, context); + // let instance = self + // .linker + // .instantiate_and_start(&mut store, &module) + // .unwrap(); } } self.active_scripts.push(script_id); -- cgit v1.2.3