diff options
Diffstat (limited to 'server')
| -rw-r--r-- | server/src/data/mod.rs | 9 | 
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() | 
