aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server/protocol/src/book.rs3
-rw-r--r--server/protocol/src/helpers.rs4
-rw-r--r--server/src/entity/tutorial.rs5
-rw-r--r--server/tools/src/book.rs31
-rw-r--r--server/tools/src/book_html.rs4
-rw-r--r--server/tools/src/main.rs2
-rw-r--r--server/tools/src/recipe_diagram.rs4
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