aboutsummaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-10-12 00:03:16 +0200
committermetamuffin <metamuffin@disroot.org>2025-10-12 00:03:16 +0200
commitbab30b167f8d81df92ee0f3dd6f1c1b3dfaeb9b0 (patch)
tree2d69741912aed51084df8b1b5f44d8fe1787639e /server/src
parent94fab766512de7b3be8123c4238a7902ce7b35c4 (diff)
downloadhurrycurry-bab30b167f8d81df92ee0f3dd6f1c1b3dfaeb9b0.tar
hurrycurry-bab30b167f8d81df92ee0f3dd6f1c1b3dfaeb9b0.tar.bz2
hurrycurry-bab30b167f8d81df92ee0f3dd6f1c1b3dfaeb9b0.tar.zst
Fix bug where unknown order item was optimized out
Diffstat (limited to 'server/src')
-rw-r--r--server/src/entity/mod.rs16
-rw-r--r--server/src/server.rs2
2 files changed, 10 insertions, 8 deletions
diff --git a/server/src/entity/mod.rs b/server/src/entity/mod.rs
index ce7cb849..6418d0c7 100644
--- a/server/src/entity/mod.rs
+++ b/server/src/entity/mod.rs
@@ -37,7 +37,7 @@ use environment_effect::{EnvironmentController, EnvironmentEffectController};
use hurrycurry_client_lib::Game;
use hurrycurry_data::{Serverdata, entities::EntityDecl};
use hurrycurry_locale::TrError;
-use hurrycurry_protocol::{Character, Gamedata, PacketC, PacketS, PlayerID, glam::IVec2};
+use hurrycurry_protocol::{Character, PacketC, PacketS, PlayerID, glam::IVec2};
use item_portal::ItemPortal;
use player_portal::PlayerPortal;
use std::{
@@ -80,7 +80,7 @@ pub trait Entity: Any {
}
}
-pub fn construct_entity(decl: &EntityDecl, data: &Gamedata) -> DynEntity {
+pub fn construct_entity(decl: &EntityDecl) -> DynEntity {
match decl.to_owned() {
EntityDecl::Book { pos } => Box::new(Book(pos)),
EntityDecl::ItemPortal { from, to } => Box::new(ItemPortal { from, to }),
@@ -92,16 +92,18 @@ pub fn construct_entity(decl: &EntityDecl, data: &Gamedata) -> DynEntity {
cooldown: 0.,
}),
EntityDecl::Map { name, pos } => Box::new(Map { pos, name }),
- EntityDecl::Gate { condition, pos } => Box::new(Gate {
+ EntityDecl::Gate {
+ condition,
+ pos,
+ blocker_tile,
+ } => Box::new(Gate {
condition,
unlocked: false,
pos,
- blocker_tile: data
- .get_tile_by_name("fence")
- .expect("asserted earlier (tm)"),
+ blocker_tile,
active: true,
}),
- EntityDecl::Customers { scaling_factor } => {
+ EntityDecl::Customers { scaling_factor, .. } => {
Box::new(Customers::new(scaling_factor.unwrap_or(0.5)))
}
EntityDecl::EnvironmentEffect(config) => Box::new(EnvironmentEffectController::new(config)),
diff --git a/server/src/server.rs b/server/src/server.rs
index 99e7eaf8..c0b32a1c 100644
--- a/server/src/server.rs
+++ b/server/src/server.rs
@@ -388,7 +388,7 @@ impl Server {
self.gamedata_index.update(&self.game.data);
self.entities.clear();
for ed in &serverdata.entity_decls {
- self.entities.push(construct_entity(ed, &self.game.data));
+ self.entities.push(construct_entity(ed));
}
self.data = serverdata.into();
for e in &mut self.entities {