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() { let (kind, color) = match recipe { Recipe::Passive { .. } => ("Passive", "#2bc493"), Recipe::Active { .. } => ("Active", "#47c42b"), Recipe::Instant { .. } => ("Instant", "#5452d8"), }; println!( "r{ri} [label=\"{kind}\\non {}\" shape=box color={color:?} fillcolor={color:?} style=filled]", 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}") } } for (di, d) in data.demands.iter().enumerate() { let color = "#c4422b"; println!( "d{di} [label=\"Demand\\ntakes {}s\" shape=box color={color:?} fillcolor={color:?} style=filled]", d.duration ); println!("i{} -> d{di}", d.from.0); println!("d{di} -> i{}", d.to.0); } println!("}}"); }