diff options
| author | metamuffin <metamuffin@disroot.org> | 2024-07-17 09:26:52 +0200 | 
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2024-07-17 09:26:52 +0200 | 
| commit | 6f1b84ff3be82681e9e229aa3d63bbaafce46c5d (patch) | |
| tree | 94ca40859eb04ca4b1f680fffe3a8c3c3d25bd15 /pixel-client | |
| parent | 2d915cd80a3193cca4a5b00933b7e24c9232b293 (diff) | |
| download | hurrycurry-6f1b84ff3be82681e9e229aa3d63bbaafce46c5d.tar hurrycurry-6f1b84ff3be82681e9e229aa3d63bbaafce46c5d.tar.bz2 hurrycurry-6f1b84ff3be82681e9e229aa3d63bbaafce46c5d.tar.zst | |
clii
Diffstat (limited to 'pixel-client')
| -rw-r--r-- | pixel-client/src/main.rs | 36 | 
1 files changed, 32 insertions, 4 deletions
| diff --git a/pixel-client/src/main.rs b/pixel-client/src/main.rs index e3aaa5cc..a70dca04 100644 --- a/pixel-client/src/main.rs +++ b/pixel-client/src/main.rs @@ -1,3 +1,5 @@ +use anyhow::anyhow; +use clap::Parser;  /*      Hurry Curry! - a game about cooking      Copyright 2024 metamuffin @@ -16,7 +18,7 @@  */  use game::Game; -use hurrycurry_protocol::glam::Vec2; +use hurrycurry_protocol::glam::{UVec2, Vec2};  use network::Network;  use render::SpriteRenderer;  use sdl2::{ @@ -24,7 +26,10 @@ use sdl2::{      keyboard::{KeyboardState, Keycode},      pixels::Color,  }; -use std::time::{Duration, Instant}; +use std::{ +    str::FromStr, +    time::{Duration, Instant}, +};  pub mod game;  pub mod helper; @@ -32,9 +37,30 @@ pub mod network;  pub mod render;  pub mod tilemap; +#[derive(Debug, Parser)] +pub struct Args { +    #[arg(default_value = "ws://127.0.0.1/")] +    server_address: String, + +    #[arg(short = 'r', long, default_value = "320x240")] +    logical_resolution: Resolution, +} + +#[derive(Debug, Clone)] +struct Resolution(UVec2); +impl FromStr for Resolution { +    type Err = anyhow::Error; +    fn from_str(s: &str) -> Result<Self, Self::Err> { +        let (x, y) = s.split_once("x").ok_or(anyhow!("sep missing"))?; +        Ok(Resolution(UVec2::new(x.parse()?, y.parse()?))) +    } +} +  fn main() {      env_logger::init_from_env("LOG"); +    let args = Args::parse(); +      let sdl_context = sdl2::init().unwrap();      let video_subsystem = sdl_context.video().unwrap(); @@ -54,7 +80,7 @@ fn main() {          .unwrap();      let texture_creator = canvas.texture_creator(); -    let mut net = Network::connect("ws://127.0.0.1/").unwrap(); +    let mut net = Network::connect(&args.server_address).unwrap();      let mut renderer = SpriteRenderer::init(&texture_creator);      let mut game = Game::new(&renderer.atlas_layout()); @@ -67,7 +93,9 @@ fn main() {      let mut last_tick = Instant::now(); -    canvas.set_logical_size(320, 240).unwrap(); +    canvas +        .set_logical_size(args.logical_resolution.0.x, args.logical_resolution.0.y) +        .unwrap();      'mainloop: loop {          net.poll(); | 
