summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/src/game.rs16
-rw-r--r--server/src/protocol.rs4
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,