aboutsummaryrefslogtreecommitdiff
path: root/light-client/src/game.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-07-15 17:01:29 +0200
committermetamuffin <metamuffin@disroot.org>2024-07-15 17:01:29 +0200
commita09aa839cb548d9ea1ce2cdd30874054ed9a3a80 (patch)
tree061cb86d3878f62090dd080eaef1f9db6f9454f7 /light-client/src/game.rs
parente04589e8b766882375a30c00fb715687a7cc9821 (diff)
downloadhurrycurry-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.rs36
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)
+ }
+ }
}