diff options
Diffstat (limited to 'server/src/bin/graph.rs')
-rw-r--r-- | server/src/bin/graph.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/server/src/bin/graph.rs b/server/src/bin/graph.rs new file mode 100644 index 00000000..9ff6f973 --- /dev/null +++ b/server/src/bin/graph.rs @@ -0,0 +1,38 @@ +use undercooked::{ + interaction::Recipe, + load_gamedata, + protocol::{ItemIndex, RecipeIndex}, +}; + +fn main() { + let data = load_gamedata(); + + println!("digraph {{"); + + for i in 0..data.item_names.len() { + println!("i{i} [label=\"{}\"]", data.item_name(ItemIndex(i))) + } + for (RecipeIndex(ri), recipe) in data.recipes() { + println!( + "r{ri} [label=\"{}\\non {}\" shape=box color=gray fillcolor=gray style=filled]", + match recipe { + Recipe::Passive { .. } => "Passive", + Recipe::Active { .. } => "Active", + Recipe::Instant { .. } => "Instant", + }, + if let Some(tile) = recipe.tile() { + data.tile_name(tile) + } else { + "anything" + } + ); + for ItemIndex(input) in recipe.inputs() { + println!("i{input} -> r{ri}") + } + for ItemIndex(output) in recipe.outputs() { + println!("r{ri} -> i{output}") + } + } + + println!("}}"); +} |