From bd777ff17258293c83b3a086d765b38bb9fe5197 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Thu, 25 Jul 2024 14:53:55 +0200 Subject: pc: join and quit button --- pixel-client/src/main.rs | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) (limited to 'pixel-client/src/main.rs') 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), 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), + _ => (), }, _ => {} } -- cgit v1.2.3-70-g09d2