diff options
author | metamuffin <metamuffin@disroot.org> | 2024-06-20 02:16:41 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-06-23 19:21:49 +0200 |
commit | c78665e4fd83a64a67a6747ec9429c74a3d4a466 (patch) | |
tree | 6d0714808ca3c3fb9a3ca652770668058f5f89cc /server/src/bin/graph.rs | |
parent | 935dc832d02ba49ad50cbbaee333ab2dacd3226d (diff) | |
download | hurrycurry-c78665e4fd83a64a67a6747ec9429c74a3d4a466.tar hurrycurry-c78665e4fd83a64a67a6747ec9429c74a3d4a466.tar.bz2 hurrycurry-c78665e4fd83a64a67a6747ec9429c74a3d4a466.tar.zst |
generate dot graph from recipes
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!("}}"); +} |