diff options
author | metamuffin <metamuffin@disroot.org> | 2024-09-04 23:41:19 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-09-04 23:41:19 +0200 |
commit | e33e82e87e1e63aa4bc1e599171f61c5c1fa9f15 (patch) | |
tree | 91ffcf384db6b6905369b2337f2da0b3ff32d588 /server/src/server.rs | |
parent | b93beb93360257c1a2e1330dfb1a2f184c59b879 (diff) | |
download | hurrycurry-e33e82e87e1e63aa4bc1e599171f61c5c1fa9f15.tar hurrycurry-e33e82e87e1e63aa4bc1e599171f61c5c1fa9f15.tar.bz2 hurrycurry-e33e82e87e1e63aa4bc1e599171f61c5c1fa9f15.tar.zst |
player in progress packet
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, |