aboutsummaryrefslogtreecommitdiff
path: root/server/data/src
diff options
context:
space:
mode:
Diffstat (limited to 'server/data/src')
-rw-r--r--server/data/src/filter_demands.rs16
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)));