diff options
author | metamuffin <metamuffin@disroot.org> | 2025-10-06 14:04:52 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-10-06 14:04:52 +0200 |
commit | a5814a2a81c0ea7bcf6d56626ff7167af78d63a6 (patch) | |
tree | 7896236b46c4c696aace17816cf71e433156355f /server/tools/src/recipe_diagram.rs | |
parent | f4bce8374988cd0f18d21bf43c649bc4b34ccf74 (diff) | |
download | hurrycurry-a5814a2a81c0ea7bcf6d56626ff7167af78d63a6.tar hurrycurry-a5814a2a81c0ea7bcf6d56626ff7167af78d63a6.tar.bz2 hurrycurry-a5814a2a81c0ea7bcf6d56626ff7167af78d63a6.tar.zst |
Collapse anywhere passive recipes
Diffstat (limited to 'server/tools/src/recipe_diagram.rs')
-rw-r--r-- | server/tools/src/recipe_diagram.rs | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/server/tools/src/recipe_diagram.rs b/server/tools/src/recipe_diagram.rs index ec7656b9..903b869a 100644 --- a/server/tools/src/recipe_diagram.rs +++ b/server/tools/src/recipe_diagram.rs @@ -19,7 +19,7 @@ use anyhow::Result; use hurrycurry_protocol::{ Gamedata, ItemIndex, Message, Recipe, RecipeIndex, - book::{Diagram, DiagramEdge, DiagramNode, NodeStyle}, + book::{Diagram, DiagramEdge, DiagramNode, EdgeStyle, NodeStyle}, glam::Vec2, }; use hurrycurry_server::data::Serverdata; @@ -98,16 +98,29 @@ pub(crate) fn recipe_diagram( let index = diag.nodes.len(); let recipe = data.recipe(r.index); - if matches!(recipe, Recipe::Instant { .. }) && r.outputs.len() == 1 && r.inputs.len() >= 1 { + if matches!(recipe, Recipe::Instant { .. }) && r.inputs.len() >= 1 && r.outputs.len() >= 1 { for i in r.inputs { diag.edges.push(DiagramEdge { src: item_index[&i], dst: item_index[&r.outputs[0]], label: None, + style: EdgeStyle::Regular, }); } continue; } + if matches!(recipe, Recipe::Passive { tile: None, .. }) + && r.inputs.len() == 1 + && r.outputs.len() == 1 + { + diag.edges.push(DiagramEdge { + src: item_index[&r.inputs[0]], + dst: item_index[&r.outputs[0]], + label: None, + style: EdgeStyle::ProcessPassive, + }); + continue; + } let (kind, style) = match recipe { Recipe::Passive { .. } => ("Passive", NodeStyle::ProcessPassive), @@ -129,6 +142,7 @@ pub(crate) fn recipe_diagram( src: item_index[&i], dst: index, label: None, + style: EdgeStyle::Regular, }); } for o in r.outputs { @@ -136,6 +150,7 @@ pub(crate) fn recipe_diagram( src: index, dst: item_index[&o], label: None, + style: EdgeStyle::Regular, }); } } @@ -173,10 +188,10 @@ fn merge_combine_clusters(diag: &mut Diagram) { if outputs .iter() - .all(|&(_, i)| diag.nodes[i].style.is_procuct()) - && inputs - .iter() - .all(|&(_, i)| diag.nodes[i].style.is_procuct()) + .all(|&(ei, ni)| diag.nodes[ni].style.is_procuct() && diag.edges[ei].style.is_regular()) + && inputs.iter().all(|&(ei, ni)| { + diag.nodes[ni].style.is_procuct() && diag.edges[ei].style.is_regular() + }) { let mut to_remove = inputs .iter() @@ -199,6 +214,7 @@ fn merge_combine_clusters(diag: &mut Diagram) { src: input.1, dst: output.1, label: None, + style: EdgeStyle::Regular, }); } } |