diff options
Diffstat (limited to 'server/src/server.rs')
-rw-r--r-- | server/src/server.rs | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/server/src/server.rs b/server/src/server.rs index 47cfdcf4..6a310254 100644 --- a/server/src/server.rs +++ b/server/src/server.rs @@ -23,7 +23,7 @@ use crate::{ ConnectionID, }; use anyhow::{anyhow, bail, Context, Result}; -use hurrycurry_client_lib::{Game, Item, Player, Tile}; +use hurrycurry_client_lib::{Game, Involvement, Item, Player, Tile}; use hurrycurry_protocol::{ glam::{IVec2, Vec2}, movement::MovementBase, @@ -160,7 +160,23 @@ impl GameServerExt for Game { out.push(PacketC::SetItem { location: ItemLocation::Player(id), item: Some(item.kind), - }) + }); + if let Some(Involvement { + player, + position, + speed, + warn, + .. + }) = item.active + { + out.push(PacketC::SetProgress { + player, + item: ItemLocation::Player(id), + position, + speed, + warn, + }); + } } if let Some((message, timeout)) = &player.communicate_persist { out.push(PacketC::Communicate { @@ -185,7 +201,23 @@ impl GameServerExt for Game { out.push(PacketC::SetItem { location: ItemLocation::Tile(tile), item: Some(item.kind), - }) + }); + if let Some(Involvement { + player, + position, + speed, + warn, + .. + }) = item.active + { + out.push(PacketC::SetProgress { + player, + item: ItemLocation::Tile(tile), + position, + speed, + warn, + }); + } } } out.push(PacketC::Score(self.score.clone())); @@ -448,6 +480,7 @@ impl Server { &self.game.data, edge, None, + Some(pid), &mut this.item, ItemLocation::Player(base_pid), &mut other.item, @@ -468,6 +501,7 @@ impl Server { &self.game.data, edge, Some(tile.kind), + Some(pid), &mut tile.item, ItemLocation::Tile(pos), &mut player.item, |