summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs28
1 files changed, 10 insertions, 18 deletions
diff --git a/src/main.rs b/src/main.rs
index bd42e18..d39b0f8 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,4 +1,4 @@
-use std::time::SystemTime;
+use std::{io::BufWriter, time::SystemTime};
use crossterm::{event::KeyCode, style::ContentStyle};
use mimalloc::MiMalloc;
@@ -7,7 +7,8 @@ use tortuise::{
file::FileManager,
input::InputManager,
scene::switch_scenes,
- script::{ScriptContext, ScriptDeclaration, ScriptManager, WasmRunner},
+ script::{ScriptContext, ScriptManager, WasmRunner},
+ time::TimeContext,
};
#[global_allocator]
@@ -63,28 +64,17 @@ fn main() {
.unwrap_manifest()
.clone();
- let stdout = Box::new(std::io::stdout().lock());
+ let stdout = Box::new(BufWriter::new(std::io::stdout().lock()));
let mut buffer = Buffer::new(stdout).unwrap();
let mut input = InputManager::new();
+ let mut time = TimeContext::new();
+ let mut scripts = ScriptManager::new(&manifest.scripts);
let mut context = ScriptContext {
buffer: &mut buffer,
input: &input,
+ time: &time,
};
- let scripts = [
- ScriptDeclaration::Static {
- start: Some(init_first_frame),
- update: Some(render_frame_rate),
- end: None,
- },
- ScriptDeclaration::Static {
- start: None,
- update: Some(exit_on_escape),
- end: None,
- },
- ];
- let mut scripts = ScriptManager::new(&scripts);
-
switch_scenes(
&manifest.scenes,
&mut scripts,
@@ -105,13 +95,15 @@ fn main() {
}
}
Event::Render => {
+ buffer.cells.clear();
let mut context = ScriptContext {
buffer,
input: &input,
+ time: &time,
};
scripts.run_scripts(&mut context, &wasm_runner, &mut files);
input.reset_next_frame();
- puffin::GlobalProfiler::lock().new_frame();
+ time.next_frame();
}
})
.unwrap();