diff options
Diffstat (limited to 'server/data/src')
| -rw-r--r-- | server/data/src/book/recipe_diagram.rs | 16 | ||||
| -rw-r--r-- | server/data/src/filter_demands.rs | 13 | ||||
| -rw-r--r-- | server/data/src/lib.rs | 2 |
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); |