aboutsummaryrefslogtreecommitdiff
path: root/server/tools/src/recipe_diagram.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/tools/src/recipe_diagram.rs')
-rw-r--r--server/tools/src/recipe_diagram.rs28
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,
});
}
}