diff options
Diffstat (limited to 'server')
-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!(""))?; |