aboutsummaryrefslogtreecommitdiff
path: root/server/src/data
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-09-30 14:13:36 +0200
committermetamuffin <metamuffin@disroot.org>2025-09-30 14:13:37 +0200
commit792227a1c7398c903efe54213a9a290bb564509d (patch)
tree6860c969eae77280e575d0591ac993e15440fb38 /server/src/data
parentb605a261f72bb3763736b75175ce28a5a882dbda (diff)
downloadhurrycurry-792227a1c7398c903efe54213a9a290bb564509d.tar
hurrycurry-792227a1c7398c903efe54213a9a290bb564509d.tar.bz2
hurrycurry-792227a1c7398c903efe54213a9a290bb564509d.tar.zst
Also allow initially placed item for exclusive tiles
Diffstat (limited to 'server/src/data')
-rw-r--r--server/src/data/mod.rs9
1 files changed, 5 insertions, 4 deletions
diff --git a/server/src/data/mod.rs b/server/src/data/mod.rs
index 7d3841d1..2b3c9a69 100644
--- a/server/src/data/mod.rs
+++ b/server/src/data/mod.rs
@@ -29,7 +29,7 @@ use hurrycurry_protocol::{
};
use serde::{Deserialize, Serialize};
use std::{
- collections::{BTreeMap, BTreeSet, HashMap, HashSet},
+ collections::{BTreeMap, HashMap, HashSet},
fs::{read_to_string, File},
path::PathBuf,
str::FromStr,
@@ -267,7 +267,7 @@ pub fn build_data(
let mut tiles_used = HashSet::new();
let mut items_used = HashSet::new();
let mut tile_walkable = HashSet::new();
- let mut exclusive_tiles = BTreeSet::new();
+ let mut exclusive_tiles = BTreeMap::<TileIndex, HashSet<ItemIndex>>::new();
for (y, line) in map_in.map.iter().enumerate() {
for (x, char) in line.chars().enumerate() {
if char == ' ' {
@@ -298,7 +298,7 @@ pub fn build_data(
tile_walkable.insert(tile);
}
if tile_spec.walkable || tile_spec.collider || tile_spec.exclusive {
- exclusive_tiles.insert(tile);
+ exclusive_tiles.entry(tile).or_default().extend(item);
}
}
}
@@ -336,11 +336,12 @@ pub fn build_data(
let mut tile_placeable_items = BTreeMap::new();
let mut tile_interactable_empty = HashSet::new();
- for tile in exclusive_tiles {
+ for (tile, used_items) in exclusive_tiles {
let whitelist = recipes
.iter()
.filter(|r| r.tile() == Some(tile))
.flat_map(|e| e.inputs())
+ .chain(used_items)
.collect();
let int_empty = recipes
.iter()