From e33e82e87e1e63aa4bc1e599171f61c5c1fa9f15 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 4 Sep 2024 23:41:19 +0200 Subject: player in progress packet --- server/src/server.rs | 40 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) (limited to 'server/src/server.rs') 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, -- cgit v1.2.3-70-g09d2