diff options
Diffstat (limited to 'server/src/bin')
| -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!("}}"); +} | 
