diff options
Diffstat (limited to 'server/data')
| -rw-r--r-- | server/data/src/book/recipe_diagram.rs | 5 | ||||
| -rw-r--r-- | server/data/src/filter_demands.rs | 2 | ||||
| -rw-r--r-- | server/data/src/lib.rs | 9 | ||||
| -rw-r--r-- | server/data/src/registry.rs | 18 |
4 files changed, 15 insertions, 19 deletions
diff --git a/server/data/src/book/recipe_diagram.rs b/server/data/src/book/recipe_diagram.rs index 6ec9965f..b6639657 100644 --- a/server/data/src/book/recipe_diagram.rs +++ b/server/data/src/book/recipe_diagram.rs @@ -75,7 +75,7 @@ pub fn recipe_diagram( .collect(), index: ri, }; - need.extend(gr.inputs.iter().filter(|i| !have.contains(&i))); + need.extend(gr.inputs.iter().filter(|i| !have.contains(i))); have.extend(&gr.outputs); recipes.insert(gr); found_recipe = true; @@ -104,7 +104,8 @@ pub fn recipe_diagram( let index = diag.nodes.len(); let recipe = data.recipe(r.index); - if matches!(recipe, Recipe::Instant { .. }) && r.inputs.len() >= 1 && r.outputs.len() >= 1 { + if matches!(recipe, Recipe::Instant { .. }) && !r.inputs.is_empty() && !r.outputs.is_empty() + { for i in r.inputs { diag.edges.push(DiagramEdge { src: item_index[&i], diff --git a/server/data/src/filter_demands.rs b/server/data/src/filter_demands.rs index 99246252..406c6b09 100644 --- a/server/data/src/filter_demands.rs +++ b/server/data/src/filter_demands.rs @@ -32,7 +32,7 @@ pub fn filter_demands_and_recipes( ); // Remove tile-bound recipes that cant be performed - recipes.retain(|r| r.tile().map_or(true, |t| map_tiles.contains(&t))); + recipes.retain(|r| r.tile().is_none_or(|t| map_tiles.contains(&t))); let mut producable = HashMap::new(); diff --git a/server/data/src/lib.rs b/server/data/src/lib.rs index a5e8ac68..dd462e3b 100644 --- a/server/data/src/lib.rs +++ b/server/data/src/lib.rs @@ -286,6 +286,7 @@ fn build_data( Ok((data, serverdata)) } +#[allow(clippy::type_complexity)] fn load_recipes( recipes_in: Vec<RecipeDecl>, reg: &ItemTileRegistry, @@ -313,10 +314,10 @@ fn load_recipes( let mut inputs = r.inputs.into_iter().map(|i| reg.register_item(i)); let mut outputs = r.outputs.into_iter().map(|o| reg.register_item(o)); let tile = r.tile.map(|t| reg.register_tile(t)); - if let Some(g) = r.group { - if !r.group_hidden { - recipe_groups.entry(g).or_default().extend(inputs.clone()); - } + if let Some(g) = r.group + && !r.group_hidden + { + recipe_groups.entry(g).or_default().extend(inputs.clone()); } match r.action { RecipeDeclAction::Never => {} diff --git a/server/data/src/registry.rs b/server/data/src/registry.rs index 7d56567d..952a2e29 100644 --- a/server/data/src/registry.rs +++ b/server/data/src/registry.rs @@ -128,10 +128,8 @@ pub(crate) fn filter_unused_tiles_and_items(data: &mut Gamedata, serverdata: &mu *tile = tile_map[tile] } *input = item_map[input]; - for output in outputs { - if let Some(output) = output { - *output = item_map[output]; - } + for output in outputs.iter_mut().flatten() { + *output = item_map[output]; } } Recipe::Instant { @@ -143,15 +141,11 @@ pub(crate) fn filter_unused_tiles_and_items(data: &mut Gamedata, serverdata: &mu if let Some(tile) = tile { *tile = tile_map[tile] } - for input in inputs { - if let Some(input) = input { - *input = item_map[input]; - } + for input in inputs.iter_mut().flatten() { + *input = item_map[input]; } - for output in outputs { - if let Some(output) = output { - *output = item_map[output]; - } + for output in outputs.iter_mut().flatten() { + *output = item_map[output]; } } } |