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) => { |