aboutsummaryrefslogtreecommitdiff
path: root/server/src/data
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-09-30 02:08:54 +0200
committermetamuffin <metamuffin@disroot.org>2025-09-30 02:08:54 +0200
commitd2c793ec7632a5da8065fd52436cfd676cc96a7b (patch)
tree3868f0f858bc9766925723b6479315bacde4b040 /server/src/data
parent5033c326094edc1ff4234b994e95d987cb937fc4 (diff)
downloadhurrycurry-d2c793ec7632a5da8065fd52436cfd676cc96a7b.tar
hurrycurry-d2c793ec7632a5da8065fd52436cfd676cc96a7b.tar.bz2
hurrycurry-d2c793ec7632a5da8065fd52436cfd676cc96a7b.tar.zst
Tile placeable items client side and interactable empty special case
Diffstat (limited to 'server/src/data')
-rw-r--r--server/src/data/mod.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/server/src/data/mod.rs b/server/src/data/mod.rs
index e5cd4552..17ebd5bf 100644
--- a/server/src/data/mod.rs
+++ b/server/src/data/mod.rs
@@ -307,6 +307,7 @@ pub fn build_data(
maps.sort_by_key(|(_, m)| m.players);
let mut tile_placeable_items = BTreeMap::new();
+ let mut tile_interactable_empty = HashSet::new();
for tile_name in map_in.collider.iter().chain(map_in.walkable.iter()) {
let tile = reg.register_tile(tile_name.to_string());
let whitelist = recipes
@@ -314,7 +315,13 @@ pub fn build_data(
.filter(|r| r.tile() == Some(tile))
.flat_map(|e| e.inputs())
.collect();
+ let int_empty = recipes
+ .iter()
+ .any(|r| r.tile() == Some(tile) && r.inputs().is_empty());
tile_placeable_items.insert(tile, whitelist);
+ if int_empty {
+ tile_interactable_empty.insert(tile);
+ }
}
let tile_walkable = map_in
.walkable
@@ -338,6 +345,7 @@ pub fn build_data(
maps,
tile_walkable,
tile_placeable_items,
+ tile_interactable_empty,
recipes,
item_names,
demands,