diff options
| author | metamuffin <metamuffin@disroot.org> | 2024-06-17 03:46:01 +0200 | 
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2024-06-17 03:46:01 +0200 | 
| commit | eabe0cff44921ea43f31340e12f20159ba5c381e (patch) | |
| tree | d1dc24a189f3cf4ec13bcbab40977b3d8068f194 /server/src/game.rs | |
| parent | 181d1c97e01f66b4a9415eec118d82cbce87346b (diff) | |
| download | hurrycurry-eabe0cff44921ea43f31340e12f20159ba5c381e.tar hurrycurry-eabe0cff44921ea43f31340e12f20159ba5c381e.tar.bz2 hurrycurry-eabe0cff44921ea43f31340e12f20159ba5c381e.tar.zst | |
can move items around. rejoin persistance seems okk
Diffstat (limited to 'server/src/game.rs')
| -rw-r--r-- | server/src/game.rs | 16 | 
1 files changed, 15 insertions, 1 deletions
| diff --git a/server/src/game.rs b/server/src/game.rs index fbbab0a4..18bd6519 100644 --- a/server/src/game.rs +++ b/server/src/game.rs @@ -1,6 +1,7 @@  use crate::protocol::{Item, PacketC, PacketS, Tile, ID};  use anyhow::{anyhow, Result};  use glam::IVec2; +use log::info;  use std::collections::{HashMap, VecDeque};  struct TileData { @@ -44,7 +45,7 @@ impl Game {              [                  ([-5, 1], Tile::Pan),                  ([-5, 2], Tile::Pan), -                ([4, 3], Tile::Pan), +                ([4, 3], Tile::FlourBag),              ]              .map(|(k, v)| {                  ( @@ -132,11 +133,24 @@ impl Game {                      .get_mut(&player)                      .ok_or(anyhow!("player does not exist"))?; +                if let Tile::FlourBag = tile.kind { +                    info!("new flour"); +                    self.items.insert(self.item_id_counter, Item::Flour); +                    tile.items.push(self.item_id_counter); +                    self.packet_out.push_back(PacketC::ProduceItem { +                        id: self.item_id_counter, +                        pos, +                        kind: Item::Flour, +                    }); +                    self.item_id_counter += 1; +                }                  if let Some(item) = player_data.hand.take() { +                    info!("put {item}");                      tile.items.push(item);                      self.packet_out.push_back(PacketC::PutItem { item, pos })                  } else {                      if let Some(item) = tile.items.pop() { +                        info!("take {item}");                          player_data.hand = Some(item);                          self.packet_out                              .push_back(PacketC::TakeItem { item, player }) | 
