diff options
| -rw-r--r-- | server/protocol/src/book.rs | 3 | ||||
| -rw-r--r-- | server/protocol/src/helpers.rs | 4 | ||||
| -rw-r--r-- | server/src/entity/tutorial.rs | 5 | ||||
| -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 | 
7 files changed, 38 insertions, 15 deletions
| diff --git a/server/protocol/src/book.rs b/server/protocol/src/book.rs index 15c239a1..73b14c07 100644 --- a/server/protocol/src/book.rs +++ b/server/protocol/src/book.rs @@ -36,8 +36,8 @@ pub enum BookPage {          paragraphs: Vec<Message>,      },      Recipe { +        title: Message,          description: Message, -        instruction: Message,          diagram: Diagram,      },  } @@ -70,4 +70,3 @@ pub struct DiagramEdge {      pub dst: usize,      pub label: Option<Message>,  } - diff --git a/server/protocol/src/helpers.rs b/server/protocol/src/helpers.rs index 542f7754..b5c0e82b 100644 --- a/server/protocol/src/helpers.rs +++ b/server/protocol/src/helpers.rs @@ -2,7 +2,7 @@ use crate::{Gamedata, Hand, ItemIndex, ItemLocation, PlayerID, Recipe, RecipeInd  use std::fmt::Display;  impl Gamedata { -    pub fn tile_name(&self, index: TileIndex) -> &String { +    pub fn tile_name(&self, index: TileIndex) -> &str {          &self.tile_names[index.0]      }      pub fn is_tile_colliding(&self, index: TileIndex) -> bool { @@ -11,7 +11,7 @@ impl Gamedata {      pub fn is_tile_interactable(&self, index: TileIndex) -> bool {          self.tile_interact[index.0]      } -    pub fn item_name(&self, index: ItemIndex) -> &String { +    pub fn item_name(&self, index: ItemIndex) -> &str {          &self.item_names[index.0]      }      pub fn recipe(&self, index: RecipeIndex) -> &Recipe { diff --git a/server/src/entity/tutorial.rs b/server/src/entity/tutorial.rs index f4db3571..7da50417 100644 --- a/server/src/entity/tutorial.rs +++ b/server/src/entity/tutorial.rs @@ -201,7 +201,7 @@ impl StepContext<'_> {          }) {              Err((                  Some(*pos), -                match self.ent.game.data.tile_name(tile.kind).as_str() { +                match self.ent.game.data.tile_name(tile.kind) {                      "stove" | "oven" => trm!("s.tutorial.prevent_burning"),                      _ => trm!("s.tutorial.take_now"),                  }, @@ -320,7 +320,8 @@ impl StepContext<'_> {                      input,                      ..                  } => { -                    for (_pos, tile) in self.ent.game.tiles.iter().filter(|(_, t)| t.kind == *tile) { +                    for (_pos, tile) in self.ent.game.tiles.iter().filter(|(_, t)| t.kind == *tile) +                    {                          if let Some(item) = &tile.item {                              if item.kind == *input {                                  return Err((None, trm!("s.tutorial.wait_finish"))); 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 | 
