diff options
Diffstat (limited to 'server/data/src')
| -rw-r--r-- | server/data/src/filter_demands.rs | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/server/data/src/filter_demands.rs b/server/data/src/filter_demands.rs index cb29a678..4eb2d597 100644 --- a/server/data/src/filter_demands.rs +++ b/server/data/src/filter_demands.rs @@ -15,13 +15,12 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. */ -use hurrycurry_protocol::{Demand, ItemIndex, Recipe, TileIndex}; +use hurrycurry_protocol::{Demand, ItemIndex, Recipe, TileIndex, glam::IVec2}; use log::debug; use std::collections::{HashMap, HashSet}; pub fn filter_demands_and_recipes( - map_tiles: &HashSet<TileIndex>, - map_items: &HashSet<ItemIndex>, + initial_map: &HashMap<IVec2, (Vec<TileIndex>, Option<ItemIndex>)>, demands: &mut Vec<Demand>, recipes: &mut Vec<Recipe>, ) { @@ -31,6 +30,17 @@ pub fn filter_demands_and_recipes( demands.len() ); + let map_tiles = initial_map + .values() + .flat_map(|(t, _)| t) + .copied() + .collect::<HashSet<_>>(); + let map_items = initial_map + .values() + .flat_map(|(_, i)| i) + .copied() + .collect::<HashSet<_>>(); + // Remove tile-bound recipes that cant be performed recipes.retain(|r| r.tile().is_none_or(|t| map_tiles.contains(&t))); |