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 | 
