diff options
| author | nieboczek <bartekkoraliki@gmail.com> | 2025-12-16 15:26:02 +0100 |
|---|---|---|
| committer | nieboczek <bartekkoraliki@gmail.com> | 2025-12-16 15:30:01 +0100 |
| commit | 348e44880c81f1d223f53ab11897bae427073d42 (patch) | |
| tree | 81ff7f3a167cdd5a4652f85441dc4607c317081b /server/data | |
| parent | 6419d8c8139d697af309b7db2e698effa8290582 (diff) | |
| download | hurrycurry-348e44880c81f1d223f53ab11897bae427073d42.tar hurrycurry-348e44880c81f1d223f53ab11897bae427073d42.tar.bz2 hurrycurry-348e44880c81f1d223f53ab11897bae427073d42.tar.zst | |
Return an Iterator over recipe inputs and outputs instead of a Vec
Diffstat (limited to 'server/data')
| -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); |