diff options
Diffstat (limited to 'pixel-client/src/main.rs')
-rw-r--r-- | pixel-client/src/main.rs | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/pixel-client/src/main.rs b/pixel-client/src/main.rs index fb98d12f..05e19194 100644 --- a/pixel-client/src/main.rs +++ b/pixel-client/src/main.rs @@ -22,12 +22,7 @@ use hurrycurry_protocol::glam::Vec2; use menu::Menu; use network::Network; use render::Renderer; -use sdl2::{ - event::Event, - keyboard::{KeyboardState, Keycode}, - mouse::MouseState, - pixels::Color, -}; +use sdl2::{event::Event, keyboard::KeyboardState, mouse::MouseState, pixels::Color}; use std::time::{Duration, Instant}; pub mod game; @@ -54,9 +49,10 @@ pub enum Action { }, } -enum State { +pub enum State { Ingame(Box<Game>), Menu(Menu), + Quit, } fn main() { @@ -110,9 +106,13 @@ fn main() { let mouse = MouseState::new(&events); let dt = last_tick.elapsed().min(Duration::from_secs_f32(1. / 30.)); - match &mut state { + let next = match &mut state { State::Ingame(x) => x.tick(dt.as_secs_f32(), &keyboard, renderer.atlas_layout()), State::Menu(x) => x.tick(dt.as_secs_f32(), &keyboard, &mouse, renderer.atlas_layout()), + State::Quit => break, + }; + if let Some(next) = next { + state = *next; } last_tick += dt; @@ -121,6 +121,7 @@ fn main() { match &mut state { State::Ingame(x) => x.draw(&mut renderer), State::Menu(x) => x.draw(&mut renderer), + State::Quit => (), } canvas.set_draw_color(Color::BLACK); @@ -130,17 +131,14 @@ fn main() { for event in events.poll_iter() { match event { - Event::Quit { .. } - | Event::KeyDown { - keycode: Option::Some(Keycode::Escape), - .. - } => break 'mainloop, + Event::Quit { .. } => break 'mainloop, Event::KeyUp { keycode: Some(keycode), .. } => match &mut state { State::Ingame(_) => (), State::Menu(menu) => menu.keyboard_event(keycode, false), + _ => (), }, Event::KeyDown { keycode: Some(keycode), @@ -148,6 +146,7 @@ fn main() { } => match &mut state { State::Ingame(_) => (), State::Menu(menu) => menu.keyboard_event(keycode, true), + _ => (), }, _ => {} } |