diff options
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, }); } } |