diff options
author | metamuffin <metamuffin@disroot.org> | 2024-09-25 14:28:22 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-09-25 14:28:22 +0200 |
commit | 8603ed6c5cd6ba8abc8516a25d45fdd0792bc0f8 (patch) | |
tree | ce38b196a256236219cb6728d659793a48cb122d /server/src/server.rs | |
parent | dc76b8f39feb98249537ff7743bf99bba381f77c (diff) | |
download | hurrycurry-8603ed6c5cd6ba8abc8516a25d45fdd0792bc0f8.tar hurrycurry-8603ed6c5cd6ba8abc8516a25d45fdd0792bc0f8.tar.bz2 hurrycurry-8603ed6c5cd6ba8abc8516a25d45fdd0792bc0f8.tar.zst |
preserve initial message timeout
Diffstat (limited to 'server/src/server.rs')
-rw-r--r-- | server/src/server.rs | 36 |
1 files changed, 18 insertions, 18 deletions
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!(""))?; |