diff options
Diffstat (limited to 'server/src/game.rs')
-rw-r--r-- | server/src/game.rs | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/server/src/game.rs b/server/src/game.rs index 274a1917..711b66b5 100644 --- a/server/src/game.rs +++ b/server/src/game.rs @@ -18,7 +18,7 @@ use crate::{ customer::DemandState, data::Gamedata, - interaction::{interact, tick_tile, InteractEffect, TickEffect}, + interaction::{interact, tick_slot, InteractEffect, TickEffect}, protocol::{ ItemIndex, ItemLocation, Message, PacketC, PacketS, PlayerID, RecipeIndex, TileIndex, }, @@ -449,7 +449,7 @@ impl Game { } for (&pos, tile) in &mut self.tiles { - if let Some(effect) = tick_tile(dt, &self.data, Some(tile.kind), &mut tile.item) { + if let Some(effect) = tick_slot(dt, &self.data, Some(tile.kind), &mut tile.item) { match effect { TickEffect::Progress(warn) => self.packet_out.push_back(PacketC::SetProgress { warn, @@ -472,6 +472,30 @@ impl Game { } } + for (&pid, player) in &mut self.players { + if let Some(effect) = tick_slot(dt, &self.data, None, &mut player.item) { + match effect { + TickEffect::Progress(warn) => self.packet_out.push_back(PacketC::SetProgress { + warn, + item: ItemLocation::Player(pid), + progress: player + .item + .as_ref() + .unwrap() + .active + .as_ref() + .map(|i| i.progress), + }), + TickEffect::Produce => { + self.packet_out.push_back(PacketC::SetItem { + location: ItemLocation::Player(pid), + item: player.item.as_ref().map(|i| i.kind), + }); + } + } + } + } + return self.end.map(|t| t < Instant::now()).unwrap_or_default(); } } |