summaryrefslogtreecommitdiff
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.rs19
1 files changed, 12 insertions, 7 deletions
diff --git a/pixel-client/src/main.rs b/pixel-client/src/main.rs
index 24421994..a073d0ed 100644
--- a/pixel-client/src/main.rs
+++ b/pixel-client/src/main.rs
@@ -16,7 +16,9 @@
*/
#![feature(map_many_mut, path_add_extension)]
+use anyhow::Result;
use clap::{Parser, Subcommand};
+use config::Config;
use game::Game;
use hurrycurry_client_lib::network::sync::Network;
use hurrycurry_protocol::glam::Vec2;
@@ -57,10 +59,11 @@ pub enum State {
Quit,
}
-fn main() {
+fn main() -> Result<()> {
env_logger::init_from_env("LOG");
let args = Args::parse();
+ let mut config = Config::load()?;
rustls::crypto::ring::default_provider()
.install_default()
@@ -93,6 +96,7 @@ fn main() {
Action::Menu => State::MainMenu(MainMenu::new(renderer.atlas_layout())),
Action::Join { server_address } => State::Ingame(Box::new(Game::new(
Network::connect(&server_address).unwrap(),
+ &config,
renderer.atlas_layout(),
))),
};
@@ -108,24 +112,25 @@ fn main() {
let keyboard = KeyboardState::new(&events);
let mouse = MouseState::new(&events);
- let dt = last_tick.elapsed().min(Duration::from_secs_f32(1. / 30.));
+ let actual_dt = last_tick.elapsed();
+ last_tick += actual_dt;
+ let dt = actual_dt.min(Duration::from_secs_f32(1. / 30.));
+
let next = match &mut state {
State::Ingame(x) => x.tick(dt.as_secs_f32(), &keyboard, renderer.atlas_layout()),
State::MainMenu(x) => {
x.tick(dt.as_secs_f32(), &keyboard, &mouse, renderer.atlas_layout())
}
- State::Quit => break,
+ State::Quit => break Ok(()),
};
if let Some(next) = next {
state = *next;
}
- last_tick += dt;
-
renderer.set_ui_view(4.);
match &mut state {
State::Ingame(x) => x.draw(&mut renderer),
- State::MainMenu(x) => x.draw(&mut renderer),
+ State::MainMenu(x) => x.draw(&mut renderer, &mut config),
State::Quit => (),
}
@@ -137,7 +142,7 @@ fn main() {
for event in events.poll_iter() {
match event {
- Event::Quit { .. } => break 'mainloop,
+ Event::Quit { .. } => break 'mainloop Ok(()),
Event::KeyUp {
keycode: Some(keycode),
..