diff options
| author | Mica White <botahamec@outlook.com> | 2026-07-03 11:28:15 -0400 |
|---|---|---|
| committer | Mica White <botahamec@outlook.com> | 2026-07-03 11:28:15 -0400 |
| commit | bb7525206da1782fd9af49621aa52d87bd227838 (patch) | |
| tree | e2eeb352b964e35e9a902f31c67771a0f1bb9e02 /src | |
| parent | 3eb02cbe5b106cd332f25d658430f7e0ae320745 (diff) | |
Snake example
Diffstat (limited to 'src')
| -rw-r--r-- | src/file.rs | 2 | ||||
| -rw-r--r-- | src/main.rs | 11 | ||||
| -rw-r--r-- | src/scene.rs | 8 | ||||
| -rw-r--r-- | src/script.rs | 13 |
4 files changed, 23 insertions, 11 deletions
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<Box<Path>, FileData>, } -#[derive(Debug, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct GameManifest { pub name: Box<str>, 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); |
