diff options
Diffstat (limited to 'server/src/game.rs')
-rw-r--r-- | server/src/game.rs | 24 |
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 |