summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/file.rs2
-rw-r--r--src/main.rs11
-rw-r--r--src/scene.rs8
-rw-r--r--src/script.rs13
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);