aboutsummaryrefslogtreecommitdiff
path: root/pixel-client/src
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-08-15 21:17:23 +0200
committermetamuffin <metamuffin@disroot.org>2024-08-15 21:17:23 +0200
commit1cb35341481cb76feb5bb794a304d1c4e3c7b372 (patch)
treedcd65f95aaa2805c14f83125ceb1bf11b6bf47be /pixel-client/src
parenta868f49b41c30daca83de86f982ffed431d3e891 (diff)
downloadhurrycurry-1cb35341481cb76feb5bb794a304d1c4e3c7b372.tar
hurrycurry-1cb35341481cb76feb5bb794a304d1c4e3c7b372.tar.bz2
hurrycurry-1cb35341481cb76feb5bb794a304d1c4e3c7b372.tar.zst
message timeout replaces persist
Diffstat (limited to 'pixel-client/src')
-rw-r--r--pixel-client/src/game.rs19
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) => {