diff options
| author | metamuffin <metamuffin@disroot.org> | 2024-09-25 23:08:28 +0200 | 
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2024-09-25 23:08:39 +0200 | 
| commit | c8d034a49efa8a588a849406bf6841659c49497e (patch) | |
| tree | f03ff7da490ba653a0fd74ea009c7f740967af93 | |
| parent | b020cb8a0c1cb759c2c43e2f3bc9c819f8a9c3da (diff) | |
| download | hurrycurry-c8d034a49efa8a588a849406bf6841659c49497e.tar hurrycurry-c8d034a49efa8a588a849406bf6841659c49497e.tar.bz2 hurrycurry-c8d034a49efa8a588a849406bf6841659c49497e.tar.zst  | |
fix book entity opening book for everyone; fix #166
| -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  |