diff options
author | metamuffin <metamuffin@disroot.org> | 2024-07-15 17:01:29 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-07-15 17:01:29 +0200 |
commit | a09aa839cb548d9ea1ce2cdd30874054ed9a3a80 (patch) | |
tree | 061cb86d3878f62090dd080eaef1f9db6f9454f7 /light-client/src/game.rs | |
parent | e04589e8b766882375a30c00fb715687a7cc9821 (diff) | |
download | hurrycurry-a09aa839cb548d9ea1ce2cdd30874054ed9a3a80.tar hurrycurry-a09aa839cb548d9ea1ce2cdd30874054ed9a3a80.tar.bz2 hurrycurry-a09aa839cb548d9ea1ce2cdd30874054ed9a3a80.tar.zst |
first visible tiles in light client
Diffstat (limited to 'light-client/src/game.rs')
-rw-r--r-- | light-client/src/game.rs | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/light-client/src/game.rs b/light-client/src/game.rs index fd045f53..e432c517 100644 --- a/light-client/src/game.rs +++ b/light-client/src/game.rs @@ -1,4 +1,38 @@ +use crate::atlas::SpriteRenderer; +use hurrycurry_protocol::{glam::IVec2, PacketC, TileIndex}; +use std::collections::HashMap; pub struct Game { - + tiles: HashMap<IVec2, TileIndex>, +} + +impl Game { + pub fn new() -> Self { + Self { + tiles: HashMap::new(), + } + } + + pub fn packet_in(&mut self, packet: PacketC) { + match packet { + PacketC::UpdateMap { + tile, + kind, + neighbors: _, + } => { + if let Some(kind) = kind { + self.tiles.insert(tile, kind); + } else { + self.tiles.remove(&tile); + } + } + _ => (), + } + } + + pub fn render(&self, ctx: &mut SpriteRenderer) { + for (p, tile) in &self.tiles { + ctx.draw_tile(*tile, *p) + } + } } |