diff --git a/src/main.rs b/src/main.rs index fa4e10e..3fb814f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,6 +13,9 @@ static WHITE: Color = Color::RGB(255, 255, 255); // export EMCC_CFLAGS="-s USE_SDL=2" // cargo build --target asmjs-unknown-emscripten && open index.html +#[cfg(target_family = "wasm")] +pub mod emscripten; + fn main() { let ctx = sdl2::init().unwrap(); let video_ctx = ctx.video().unwrap(); @@ -38,10 +41,9 @@ fn main() { let rect = Rc::new(RefCell::new(rect)); let canvas = Rc::new(RefCell::new(canvas)); - let mut events = ctx.borrow_mut().event_pump().unwrap(); + let main_loop = move || { - let mut main_loop = move || { - for event in events.poll_iter() { + for event in ctx.borrow_mut().event_pump().unwrap().poll_iter() { match event { Event::Quit { .. } | Event::KeyDown { @@ -51,43 +53,37 @@ fn main() { process::exit(1); } Event::KeyDown { - keycode: Some(Keycode::Left), + keycode: Some(key), .. } => { - rect.borrow_mut().x -= 10; - } - Event::KeyDown { - keycode: Some(Keycode::Right), - .. - } => { - rect.borrow_mut().x += 10; - } - Event::KeyDown { - keycode: Some(Keycode::Up), - .. - } => { - rect.borrow_mut().y -= 10; - } - Event::KeyDown { - keycode: Some(Keycode::Down), - .. - } => { - rect.borrow_mut().y += 10; + match key { + Keycode::Left => { + rect.borrow_mut().x -= 10; + } + Keycode::Right => { + rect.borrow_mut().x += 10; + } + Keycode::Up => { + rect.borrow_mut().y -= 10; + } + Keycode::Down => { + rect.borrow_mut().y += 10; + } + _ => {} + } } _ => {} } } - let _ = canvas.borrow_mut().set_draw_color(BLACK); - let _ = canvas.borrow_mut().clear(); - let _ = canvas.borrow_mut().set_draw_color(WHITE); - let _ = canvas.borrow_mut().fill_rect(rect.borrow().clone()); - let _ = canvas.borrow_mut().present(); + let mut canvas = canvas.borrow_mut(); + canvas.set_draw_color(BLACK); + canvas.clear(); + canvas.set_draw_color(WHITE); + canvas.fill_rect(rect.borrow().clone()); + canvas.present(); }; - #[cfg(target_family = "wasm")] - use pacman::emscripten; - #[cfg(target_family = "wasm")] emscripten::set_main_loop_callback(main_loop);