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