diff options
Diffstat (limited to 'server')
-rw-r--r-- | server/protocol/src/lib.rs | 1 | ||||
-rw-r--r-- | server/src/data/mod.rs | 8 | ||||
-rw-r--r-- | server/src/interaction.rs | 5 |
3 files changed, 10 insertions, 4 deletions
diff --git a/server/protocol/src/lib.rs b/server/protocol/src/lib.rs index 00ef62d7..66f41a6e 100644 --- a/server/protocol/src/lib.rs +++ b/server/protocol/src/lib.rs @@ -87,6 +87,7 @@ pub struct Gamedata { pub tile_names: Vec<String>, pub tile_walkable: HashSet<TileIndex>, pub tile_placeable_items: BTreeMap<TileIndex, HashSet<ItemIndex>>, + pub tile_interactable_empty: HashSet<TileIndex>, pub maps: Vec<(String, MapMetadata)>, pub bot_algos: Vec<String>, pub recipes: Vec<Recipe>, 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, diff --git a/server/src/interaction.rs b/server/src/interaction.rs index 8f591db1..5a8372ee 100644 --- a/server/src/interaction.rs +++ b/server/src/interaction.rs @@ -35,10 +35,7 @@ pub fn interact( automated: bool, packet_out: &mut VecDeque<PacketC>, ) { - // let interactable = automated - // || tile - // .map(|tile| data.is_tile_interactable(tile)) - // .unwrap_or(true); + let _ = automated; //? what was this used for?? if other.is_none() { if let Some(item) = this { if let Some(active) = &mut item.active { |