aboutsummaryrefslogtreecommitdiff
path: root/pixel-client/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'pixel-client/src/main.rs')
-rw-r--r--pixel-client/src/main.rs25
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),
+ _ => (),
},
_ => {}
}