diff options
Diffstat (limited to 'server')
-rw-r--r-- | server/src/game.rs | 16 | ||||
-rw-r--r-- | server/src/protocol.rs | 4 |
2 files changed, 19 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 }) diff --git a/server/src/protocol.rs b/server/src/protocol.rs index a8fd9979..0218658d 100644 --- a/server/src/protocol.rs +++ b/server/src/protocol.rs @@ -6,6 +6,8 @@ pub type ID = u32; #[derive(Debug, Clone, Copy, Serialize, Deserialize)] #[serde(rename_all = "snake_case")] pub enum Item { + Flour, + Water, Dough, Pancake, } @@ -13,6 +15,8 @@ pub enum Item { #[derive(Debug, Clone, Copy, Serialize, Deserialize)] #[serde(rename_all = "snake_case")] pub enum Tile { + Sink, + FlourBag, Floor, Table, Pan, |