aboutsummaryrefslogtreecommitdiff
path: root/light-client/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'light-client/src/main.rs')
-rw-r--r--light-client/src/main.rs18
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 {