diff options
-rw-r--r-- | server/src/entity/book.rs | 4 | ||||
-rw-r--r-- | server/src/entity/customers.rs | 1 | ||||
-rw-r--r-- | server/src/entity/mod.rs | 3 | ||||
-rw-r--r-- | server/src/server.rs | 4 |
4 files changed, 10 insertions, 2 deletions
diff --git a/server/src/entity/book.rs b/server/src/entity/book.rs index 5833a871..70197764 100644 --- a/server/src/entity/book.rs +++ b/server/src/entity/book.rs @@ -31,7 +31,9 @@ impl Entity for Book { _player: PlayerID, ) -> Result<bool, TrError> { if pos == Some(self.0) { - c.packet_out.push_back(PacketC::Menu(Menu::Book)); + if let Some(r) = c.replies { + r.push(PacketC::Menu(Menu::Book)); + } return Ok(true); } Ok(false) diff --git a/server/src/entity/customers.rs b/server/src/entity/customers.rs index 388f7b26..6669f3ee 100644 --- a/server/src/entity/customers.rs +++ b/server/src/entity/customers.rs @@ -69,6 +69,7 @@ impl Entity for Customers { dt: c.dt, scoreboard: c.scoreboard, load_map: c.load_map, + replies: None, })?; } self.customers.retain(|c| !c.finished()); diff --git a/server/src/entity/mod.rs b/server/src/entity/mod.rs index 3dad1311..4cbfb50b 100644 --- a/server/src/entity/mod.rs +++ b/server/src/entity/mod.rs @@ -25,7 +25,7 @@ pub mod item_portal; pub mod player_portal; pub mod tutorial; -use crate::{data::ItemTileRegistry, scoreboard::ScoreboardStore, message::TrError}; +use crate::{data::ItemTileRegistry, message::TrError, scoreboard::ScoreboardStore}; use anyhow::{anyhow, Result}; use book::Book; use campaign::{Gate, GateCondition, Map}; @@ -52,6 +52,7 @@ pub struct EntityContext<'a> { pub score_changed: &'a mut bool, pub load_map: &'a mut Option<String>, pub scoreboard: &'a ScoreboardStore, + pub replies: Option<&'a mut Vec<PacketC>>, pub dt: f32, } diff --git a/server/src/server.rs b/server/src/server.rs index d44a949b..8257a420 100644 --- a/server/src/server.rs +++ b/server/src/server.rs @@ -338,6 +338,7 @@ impl Server { packet_in: &mut self.packet_loopback, score_changed: &mut self.score_changed, scoreboard: &self.scoreboard, + replies: None, dt: 0., load_map: &mut None, }); @@ -446,6 +447,7 @@ impl Server { score_changed: &mut self.score_changed, load_map: &mut None, scoreboard: &self.scoreboard, + replies: Some(replies), dt: 0., }, pos, @@ -691,6 +693,7 @@ impl Server { score_changed: &mut self.score_changed, packet_in: &mut self.packet_loopback, scoreboard: &self.scoreboard, + replies: None, dt, }) { warn!("Entity tick failed: {e}") @@ -705,6 +708,7 @@ impl Server { score_changed: &mut self.score_changed, packet_in: &mut self.packet_loopback, scoreboard: &self.scoreboard, + replies: None, dt: 0., }); false |