From 1cb35341481cb76feb5bb794a304d1c4e3c7b372 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Thu, 15 Aug 2024 21:17:23 +0200 Subject: message timeout replaces persist --- server/client-lib/src/lib.rs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'server/client-lib/src/lib.rs') diff --git a/server/client-lib/src/lib.rs b/server/client-lib/src/lib.rs index b04f46f7..38f1070e 100644 --- a/server/client-lib/src/lib.rs +++ b/server/client-lib/src/lib.rs @@ -20,8 +20,8 @@ pub mod network; pub mod spatial_index; use hurrycurry_protocol::{ - glam::IVec2, movement::MovementBase, Gamedata, ItemIndex, ItemLocation, Message, PacketC, - PlayerID, RecipeIndex, Score, TileIndex, + glam::IVec2, movement::MovementBase, Gamedata, ItemIndex, ItemLocation, Message, + MessageTimeout, PacketC, PlayerID, RecipeIndex, Score, TileIndex, }; use spatial_index::SpatialIndex; use std::{ @@ -54,7 +54,7 @@ pub struct Player { pub character: i32, pub interacting: Option, pub item: Option, - pub communicate_persist: Option, + pub communicate_persist: Option<(Message, MessageTimeout)>, pub movement: MovementBase, } @@ -168,11 +168,11 @@ impl Game { PacketC::Communicate { player, message, - persist, + timeout, } => { - if persist { + if let Some(timeout) = &timeout { if let Some(player) = self.players.get_mut(&player) { - player.communicate_persist = message; + player.communicate_persist = message.to_owned().map(|m| (m, *timeout)); } } } @@ -195,6 +195,12 @@ impl Game { for (&pid, player) in &mut self.players { player.movement.update(&self.walkable, dt); + if let Some((_, timeout)) = &mut player.communicate_persist { + timeout.remaining -= dt; + if timeout.remaining < 0. { + player.communicate_persist = None; + } + } self.players_spatial_index .update_entry(pid, player.movement.position); } -- cgit v1.2.3-70-g09d2