From 8603ed6c5cd6ba8abc8516a25d45fdd0792bc0f8 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 25 Sep 2024 14:28:22 +0200 Subject: preserve initial message timeout --- server/src/server.rs | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) (limited to 'server/src') diff --git a/server/src/server.rs b/server/src/server.rs index 5efddaa1..5d31bd58 100644 --- a/server/src/server.rs +++ b/server/src/server.rs @@ -537,29 +537,29 @@ impl Server { } => { info!("{player:?} message {message:?}"); let pin = pin.unwrap_or(false); - if let Some(timeout) = timeout { + let timeout = if let Some(timeout) = timeout { if let Some(player) = self.game.players.get_mut(&player) { - player.communicate_persist = message.clone().map(|m| { - ( - m, - MessageTimeout { - initial: timeout, - remaining: timeout, - pinned: pin, - }, - ) - }); + let mut timeout = MessageTimeout { + initial: timeout, + remaining: timeout, + pinned: pin, + }; + if let Some((_, t)) = &player.communicate_persist { + timeout.initial = t.initial; + }; + player.communicate_persist = message.clone().map(|m| (m, timeout.clone())); + Some(timeout) + } else { + None } - } + } else { + None + }; self.packet_out.push_back(PacketC::Communicate { player, message, - timeout: timeout.map(|t| MessageTimeout { - initial: t, - remaining: t, - pinned: pin, - }), - }) + timeout, + }); } PacketS::ReplaceHand { item, player } => { let pdata = self.game.players.get_mut(&player).ok_or(tre!(""))?; -- cgit v1.2.3-70-g09d2