diff options
Diffstat (limited to 'server/tools')
-rw-r--r-- | server/tools/src/book.rs | 31 | ||||
-rw-r--r-- | server/tools/src/book_html.rs | 4 | ||||
-rw-r--r-- | server/tools/src/main.rs | 2 | ||||
-rw-r--r-- | server/tools/src/recipe_diagram.rs | 4 |
4 files changed, 32 insertions, 9 deletions
diff --git a/server/tools/src/book.rs b/server/tools/src/book.rs index 802cbaea..fc2a1502 100644 --- a/server/tools/src/book.rs +++ b/server/tools/src/book.rs @@ -24,15 +24,38 @@ use hurrycurry_protocol::{ }; use hurrycurry_server::data::Serverdata; +struct RecipePageParams<'a> { + name: &'a str, + repr_items: &'a [&'a str], +} +static RECIPE_PAGES: &[RecipePageParams] = &[ + RecipePageParams { + name: "cheese-leek-soup", + repr_items: &["plate:cheese-leek-soup"], + }, + RecipePageParams { + name: "burger", + repr_items: &["plate:seared-patty,sliced-bun"], + }, +]; + pub fn book(data: &Gamedata, serverdata: &Serverdata) -> Result<Book> { let mut pages = Vec::new(); - for item in ["plate:cheese-leek-soup", "plate:seared-patty,sliced-bun"] { - let mut diagram = recipe_diagram(data, serverdata, &[item.to_owned()])?; + pages.push(BookPage::Contents { table: vec![] }); + + for &RecipePageParams { name, repr_items } in RECIPE_PAGES { + let mut diagram = recipe_diagram(data, serverdata, repr_items)?; diagram_layout(&mut diagram)?; pages.push(BookPage::Recipe { - description: Message::Text("Some text goes here...".to_string()), - instruction: Message::Text("Some text goes here...".to_string()), + title: Message::Translation { + id: format!("b.{name}.title"), + params: vec![], + }, + description: Message::Translation { + id: format!("b.{name}.desc"), + params: vec![], + }, diagram, }); } diff --git a/server/tools/src/book_html.rs b/server/tools/src/book_html.rs index c827fc4a..a1dfaf9b 100644 --- a/server/tools/src/book_html.rs +++ b/server/tools/src/book_html.rs @@ -47,10 +47,10 @@ markup::define! { div.page {} div.page {} } - BookPage::Recipe { description, instruction, diagram } => { + BookPage::Recipe { title, description, diagram } => { div.page { + h1 { @MessageR { data, message: title } } p { @MessageR { data, message: description } } - p { @MessageR { data, message: instruction } } } div.page { @DiagramR { data, diagram } diff --git a/server/tools/src/main.rs b/server/tools/src/main.rs index 1b4a9a51..a18051b0 100644 --- a/server/tools/src/main.rs +++ b/server/tools/src/main.rs @@ -58,7 +58,7 @@ fn main() -> Result<()> { let mut index = DataIndex::default(); index.reload()?; let (data, serverdata, _) = index.generate("5star")?; - let diagram = recipe_diagram(&data, &serverdata, &[out])?; + let diagram = recipe_diagram(&data, &serverdata, &[&out])?; let dot = diagram_dot(&data, &diagram)?; println!("{dot}"); } diff --git a/server/tools/src/recipe_diagram.rs b/server/tools/src/recipe_diagram.rs index 7f72acd3..2ed0179f 100644 --- a/server/tools/src/recipe_diagram.rs +++ b/server/tools/src/recipe_diagram.rs @@ -28,7 +28,7 @@ use std::collections::{BTreeMap, BTreeSet, HashSet}; pub(crate) fn recipe_diagram( data: &Gamedata, serverdata: &Serverdata, - target_items: &[String], + target_items: &[&str], ) -> Result<Diagram> { let ambient_items = serverdata .initial_map @@ -84,7 +84,7 @@ pub(crate) fn recipe_diagram( diag.nodes.push(DiagramNode { label: Message::Item(i), position: Vec2::ZERO, - style: if target_items.contains(data.item_name(i)) { + style: if target_items.contains(&data.item_name(i)) { NodeStyle::FinalProduct } else { NodeStyle::IntermediateProduct |