aboutsummaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-09-25 23:08:28 +0200
committermetamuffin <metamuffin@disroot.org>2024-09-25 23:08:39 +0200
commitc8d034a49efa8a588a849406bf6841659c49497e (patch)
treef03ff7da490ba653a0fd74ea009c7f740967af93 /server/src
parentb020cb8a0c1cb759c2c43e2f3bc9c819f8a9c3da (diff)
downloadhurrycurry-c8d034a49efa8a588a849406bf6841659c49497e.tar
hurrycurry-c8d034a49efa8a588a849406bf6841659c49497e.tar.bz2
hurrycurry-c8d034a49efa8a588a849406bf6841659c49497e.tar.zst
fix book entity opening book for everyone; fix #166
Diffstat (limited to 'server/src')
-rw-r--r--server/src/entity/book.rs4
-rw-r--r--server/src/entity/customers.rs1
-rw-r--r--server/src/entity/mod.rs3
-rw-r--r--server/src/server.rs4
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