summaryrefslogtreecommitdiff
path: root/server/src/game.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/game.rs')
-rw-r--r--server/src/game.rs24
1 files changed, 15 insertions, 9 deletions
diff --git a/server/src/game.rs b/server/src/game.rs
index 72f653c4..4f609608 100644
--- a/server/src/game.rs
+++ b/server/src/game.rs
@@ -56,7 +56,7 @@ pub struct Player {
pub last_position_ts: Instant,
pub interacting: Option<IVec2>,
pub item: Option<Item>,
- pub communicate: Option<Message>,
+ pub communicate_persist: Option<Message>,
}
pub struct Game {
@@ -127,7 +127,7 @@ impl Game {
last_position_ts: Instant::now(),
character,
position: self.data.chef_spawn,
- communicate: None,
+ communicate_persist: None,
interacting: None,
name: name.clone(),
},
@@ -167,10 +167,11 @@ impl Game {
item: Some(item.kind),
})
}
- if let Some(c) = &player.communicate {
+ if let Some(c) = &player.communicate_persist {
out.push(PacketC::Communicate {
player: id,
message: Some(c.to_owned()),
+ persist: true,
})
}
}
@@ -223,7 +224,7 @@ impl Game {
last_position_ts: Instant::now(),
character,
position,
- communicate: None,
+ communicate_persist: None,
interacting: None,
name: name.clone(),
},
@@ -392,13 +393,18 @@ impl Game {
player.interacting = if edge { Some(pos) } else { None };
}
- PacketS::Communicate { message } => {
+ PacketS::Communicate { message, persist } => {
info!("{player:?} message {message:?}");
- if let Some(player) = self.players.get_mut(&player) {
- player.communicate = message.clone()
+ if persist {
+ if let Some(player) = self.players.get_mut(&player) {
+ player.communicate_persist = message.clone()
+ }
}
- self.packet_out
- .push_back(PacketC::Communicate { player, message })
+ self.packet_out.push_back(PacketC::Communicate {
+ player,
+ message,
+ persist,
+ })
}
PacketS::ReplaceHand { item } => {
let pdata = self