aboutsummaryrefslogtreecommitdiffstats
path: root/pong
diff options
context:
space:
mode:
authorEdvard Thörnros <edvard.thornros@gmail.com>2021-01-30 23:17:17 +0100
committerEdvard Thörnros <edvard.thornros@gmail.com>2021-01-30 23:17:17 +0100
commit6b5e59311511b1462c7a10ba1389782f640e77a0 (patch)
treeeece94c7fe76d3b38c3a28517d0129753825e3c9 /pong
parent0ee58ee676945f9a652690f490936080ab5a0623 (diff)
downloadsylt-6b5e59311511b1462c7a10ba1389782f640e77a0.tar.gz
Yield
Diffstat (limited to 'pong')
-rw-r--r--pong/pong.tdy3
-rw-r--r--pong/src/main.rs20
2 files changed, 21 insertions, 2 deletions
diff --git a/pong/pong.tdy b/pong/pong.tdy
index 9405a5c..d27a2f5 100644
--- a/pong/pong.tdy
+++ b/pong/pong.tdy
@@ -51,12 +51,13 @@ init := fn {
state.p2.paddle.x = 19.
state.p2.paddle.y = 10.
- for i := 0, i < 5, i = i + 1 {
+ for i := 0, i == i, i = i + 1 {
log(state.p1.paddle.x, state.p1.paddle.y)
log(state.p2.paddle.x, state.p2.paddle.y)
update(state)
draw(state)
+ yield
}
}
diff --git a/pong/src/main.rs b/pong/src/main.rs
index b29136b..449fee1 100644
--- a/pong/src/main.rs
+++ b/pong/src/main.rs
@@ -1,6 +1,7 @@
use macroquad::{Camera2D, DARKPURPLE, KeyCode, SKYBLUE, clear_background, draw_rectangle, get_frame_time, is_key_down, next_frame, set_camera, vec2};
use std::path::Path;
use tihdy::{Type, Value};
+use tihdy::vm::OpResult;
use tihdy_derive::extern_function;
const SCREEN_WIDTH: f32 = 20.0;
@@ -76,9 +77,26 @@ async fn main() {
];
let _guard = rt.enter(); // so we can async { next_frame().await }
- if let Err(errs) = tihdy::run_file(Path::new("pong.tdy"), false, functions) {
+ let vm = tihdy::compile_file(Path::new("pong.tdy"), false, functions);
+ if let Err(errs) = vm {
for err in errs {
println!("{}", err);
}
+ return;
+ }
+ let mut vm = vm.unwrap();
+ loop {
+ match vm.run() {
+ Err(e) => {
+ println!("{:?}", e);
+ break;
+ }
+ Ok(OpResult::Yield) => {
+ next_frame().await
+ }
+ _ => {
+ break;
+ }
+ }
}
}