aboutsummaryrefslogtreecommitdiff
path: root/server/data/src
diff options
context:
space:
mode:
Diffstat (limited to 'server/data/src')
-rw-r--r--server/data/src/book/recipe_diagram.rs16
-rw-r--r--server/data/src/filter_demands.rs13
-rw-r--r--server/data/src/lib.rs2
3 files changed, 8 insertions, 23 deletions
diff --git a/server/data/src/book/recipe_diagram.rs b/server/data/src/book/recipe_diagram.rs
index b6639657..2c203f95 100644
--- a/server/data/src/book/recipe_diagram.rs
+++ b/server/data/src/book/recipe_diagram.rs
@@ -59,20 +59,10 @@ pub fn recipe_diagram(
while let Some(item) = need.pop_first() {
let mut found_recipe = false;
for (ri, r) in data.recipes() {
- if r.outputs().contains(&item) {
+ if r.outputs().any(|i| i == item) {
let gr = GraphRecipe {
- inputs: r
- .inputs()
- .iter()
- .filter(|i| !ambient_items.contains(i))
- .copied()
- .collect(),
- outputs: r
- .outputs()
- .iter()
- .filter(|i| !ambient_items.contains(i))
- .copied()
- .collect(),
+ inputs: r.inputs().filter(|i| !ambient_items.contains(i)).collect(),
+ outputs: r.outputs().filter(|i| !ambient_items.contains(i)).collect(),
index: ri,
};
need.extend(gr.inputs.iter().filter(|i| !have.contains(i)));
diff --git a/server/data/src/filter_demands.rs b/server/data/src/filter_demands.rs
index 406c6b09..cb29a678 100644
--- a/server/data/src/filter_demands.rs
+++ b/server/data/src/filter_demands.rs
@@ -43,15 +43,10 @@ pub fn filter_demands_and_recipes(
let prod_count = producable.len();
for r in &*recipes {
- let output_count = r
- .outputs()
- .iter()
- .filter(|o| !map_items.contains(o))
- .count();
+ let output_count = r.outputs().filter(|o| !map_items.contains(o)).count();
let Some(ingred_cost) = r
.inputs()
- .iter()
- .map(|i| producable.get(i).copied())
+ .map(|i| producable.get(&i).copied())
.reduce(|a, b| {
if let (Some(a), Some(b)) = (a, b) {
Some(a + b)
@@ -83,8 +78,8 @@ pub fn filter_demands_and_recipes(
}
recipes.retain(|r| {
- r.inputs().iter().all(|o| producable.contains_key(o))
- && r.outputs().iter().all(|o| producable.contains_key(o))
+ r.inputs().all(|o| producable.contains_key(&o))
+ && r.outputs().all(|o| producable.contains_key(&o))
});
demands.retain_mut(|d| {
if let Some(&cost) = producable.get(&d.input) {
diff --git a/server/data/src/lib.rs b/server/data/src/lib.rs
index d4764f7d..ef0f9bb6 100644
--- a/server/data/src/lib.rs
+++ b/server/data/src/lib.rs
@@ -267,7 +267,7 @@ fn build_data(
.collect();
let int_empty = recipes
.iter()
- .any(|r| r.tile() == Some(tile) && r.inputs().is_empty());
+ .any(|r| r.tile() == Some(tile) && r.inputs().next().is_none());
tile_placeable_items.insert(tile, whitelist);
if int_empty {
tile_interactable_empty.insert(tile);