aboutsummaryrefslogtreecommitdiff
path: root/server/src/server.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-09-25 14:28:22 +0200
committermetamuffin <metamuffin@disroot.org>2024-09-25 14:28:22 +0200
commit8603ed6c5cd6ba8abc8516a25d45fdd0792bc0f8 (patch)
treece38b196a256236219cb6728d659793a48cb122d /server/src/server.rs
parentdc76b8f39feb98249537ff7743bf99bba381f77c (diff)
downloadhurrycurry-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.rs36
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!(""))?;