diff options
Diffstat (limited to 'light-client/src/main.rs')
| -rw-r--r-- | light-client/src/main.rs | 48 | 
1 files changed, 24 insertions, 24 deletions
| diff --git a/light-client/src/main.rs b/light-client/src/main.rs index 85254ef4..2145e9b6 100644 --- a/light-client/src/main.rs +++ b/light-client/src/main.rs @@ -1,4 +1,6 @@ -use network::Network; +use atlas::SpriteRenderer; +use game::Game; +use hurrycurry_protocol::PacketC;  /*      Hurry Curry! - a game about cooking      Copyright 2024 metamuffin @@ -16,23 +18,16 @@ use network::Network;      along with this program.  If not, see <https://www.gnu.org/licenses/>.  */ -use sdl2::{ -    event::Event, -    image::InitFlag, -    keyboard::Keycode, -    pixels::{Color, PixelFormatEnum}, -    render::TextureAccess, -}; +use network::Network; +use sdl2::{event::Event, keyboard::Keycode, pixels::Color}; -pub mod network; +pub mod atlas;  pub mod game; +pub mod network;  fn main() { -    let net = Network::connect("ws://127.0.0.1:27032/"); -      let sdl_context = sdl2::init().unwrap();      let video_subsystem = sdl_context.video().unwrap(); -    let _image_context = sdl2::image::init(InitFlag::WEBP).unwrap();      let window = video_subsystem          .window("Hurry Curry! Light Client", 1280, 720)          .position_centered() @@ -48,23 +43,28 @@ fn main() {          .map_err(|e| e.to_string())          .unwrap();      let texture_creator = canvas.texture_creator(); -    let mut texture = texture_creator -        .create_texture( -            Some(PixelFormatEnum::RGBA8888), -            TextureAccess::Streaming, -            1024, -            1024, -        ) -        .unwrap(); -    texture.update(None, &vec![128; 1024 * 1024], 1024).unwrap(); +    let mut net = Network::connect("ws://127.0.0.1/").unwrap(); +    let mut game = Game::new(); +    let mut renderer = SpriteRenderer::init(&texture_creator);      'mainloop: loop { -        canvas.set_draw_color(Color::BLACK); -        canvas.clear(); +        net.poll(); + +        for packet in net.queue_in.drain(..) { +            match packet { +                PacketC::Data { data } => { +                    renderer.set_sprite_map(data); +                } +                _ => game.packet_in(packet), +            } +        } -        canvas.copy(&texture, None, None).unwrap(); +        game.render(&mut renderer); +        canvas.set_draw_color(Color::BLACK); +        canvas.clear(); +        renderer.submit(&mut canvas);          canvas.present();          for event in sdl_context.event_pump().unwrap().poll_iter() { | 
