diff options
| author | metamuffin <metamuffin@disroot.org> | 2024-08-15 21:17:23 +0200 | 
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2024-08-15 21:17:23 +0200 | 
| commit | 1cb35341481cb76feb5bb794a304d1c4e3c7b372 (patch) | |
| tree | dcd65f95aaa2805c14f83125ceb1bf11b6bf47be /pixel-client | |
| parent | a868f49b41c30daca83de86f982ffed431d3e891 (diff) | |
| download | hurrycurry-1cb35341481cb76feb5bb794a304d1c4e3c7b372.tar hurrycurry-1cb35341481cb76feb5bb794a304d1c4e3c7b372.tar.bz2 hurrycurry-1cb35341481cb76feb5bb794a304d1c4e3c7b372.tar.zst | |
message timeout replaces persist
Diffstat (limited to 'pixel-client')
| -rw-r--r-- | pixel-client/src/game.rs | 19 | 
1 files changed, 13 insertions, 6 deletions
| diff --git a/pixel-client/src/game.rs b/pixel-client/src/game.rs index 318b9a02..59b30ad0 100644 --- a/pixel-client/src/game.rs +++ b/pixel-client/src/game.rs @@ -30,7 +30,8 @@ use hurrycurry_client_lib::{network::sync::Network, spatial_index::SpatialIndex}  use hurrycurry_protocol::{      glam::{IVec2, Vec2},      movement::MovementBase, -    Gamedata, ItemIndex, ItemLocation, Message, PacketC, PacketS, PlayerID, Score, TileIndex, +    Gamedata, ItemIndex, ItemLocation, Message, MessageTimeout, PacketC, PacketS, PlayerID, Score, +    TileIndex,  };  use log::{info, warn};  use sdl2::{ @@ -67,7 +68,7 @@ pub struct Tile {  pub struct Player {      movement: MovementBase,      item: Option<Item>, -    message_persist: Option<Message>, +    message_persist: Option<(Message, MessageTimeout)>,      _name: String,      _character: i32,      interact_target_anim: Vec2, @@ -183,6 +184,12 @@ impl Game {          for (&pid, player) in &mut self.players {              player.movement.update(&self.walkable, dt); +            if let Some((_, timeout)) = &mut player.message_persist { +                timeout.remaining -= dt; +                if timeout.remaining < 0. { +                    player.message_persist = None; +                } +            }              self.players_spatial_index                  .update_entry(pid, player.movement.position);          } @@ -352,11 +359,11 @@ impl Game {              PacketC::Communicate {                  player,                  message, -                persist, +                timeout,              } => { -                if persist { +                if let Some(timeout) = timeout {                      if let Some(player) = self.players.get_mut(&player) { -                        player.message_persist = message; +                        player.message_persist = message.map(|m| (m, timeout));                      }                  }              } @@ -458,7 +465,7 @@ impl Player {              }              .at(self.movement.position),          ); -        if let Some(message) = &self.message_persist { +        if let Some((message, _timeout)) = &self.message_persist {              match message {                  Message::Text(_) => (), // TODO                  Message::Item(item) => { | 
