diff options
author | metamuffin <metamuffin@disroot.org> | 2024-07-16 16:21:37 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-07-16 16:21:37 +0200 |
commit | 7c83fe7eeaac3736d5a59b270bbbbde59780e536 (patch) | |
tree | 65c59e07f7c72305690312b2d057a9b0d494a847 /light-client/src/main.rs | |
parent | 5cad8fad7c8e8b4358c9b0290c228ac9fac164f5 (diff) | |
download | hurrycurry-7c83fe7eeaac3736d5a59b270bbbbde59780e536.tar hurrycurry-7c83fe7eeaac3736d5a59b270bbbbde59780e536.tar.bz2 hurrycurry-7c83fe7eeaac3736d5a59b270bbbbde59780e536.tar.zst |
item rendering and movement
Diffstat (limited to 'light-client/src/main.rs')
-rw-r--r-- | light-client/src/main.rs | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/light-client/src/main.rs b/light-client/src/main.rs index 8be38e4c..b00ba734 100644 --- a/light-client/src/main.rs +++ b/light-client/src/main.rs @@ -17,8 +17,13 @@ */ use game::Game; use network::Network; -use sdl2::{event::Event, keyboard::Keycode, pixels::Color}; +use sdl2::{ + event::Event, + keyboard::{KeyboardState, Keycode}, + pixels::Color, +}; use sprite_renderer::SpriteRenderer; +use std::time::{Duration, Instant}; pub mod game; pub mod network; @@ -55,6 +60,10 @@ fn main() { character: 0, }); + let mut events = sdl_context.event_pump().unwrap(); + + let mut last_tick = Instant::now(); + 'mainloop: loop { net.poll(); @@ -62,6 +71,11 @@ fn main() { game.packet_in(packet, &mut renderer); } + let keyboard = KeyboardState::new(&events); + let dt = last_tick.elapsed().min(Duration::from_secs_f32(1. / 30.)); + game.tick(dt.as_secs_f32(), &keyboard, &mut net.queue_out); + last_tick += dt; + game.draw(&mut renderer); canvas.set_draw_color(Color::BLACK); @@ -69,7 +83,7 @@ fn main() { renderer.submit(&mut canvas); canvas.present(); - for event in sdl_context.event_pump().unwrap().poll_iter() { + for event in events.poll_iter() { match event { Event::Quit { .. } | Event::KeyDown { |