aboutsummaryrefslogtreecommitdiff
path: root/server/src/game.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/game.rs')
-rw-r--r--server/src/game.rs28
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();
}
}