aboutsummaryrefslogtreecommitdiff
path: root/server/data/src/book/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/data/src/book/mod.rs')
-rw-r--r--server/data/src/book/mod.rs13
1 files changed, 10 insertions, 3 deletions
diff --git a/server/data/src/book/mod.rs b/server/data/src/book/mod.rs
index 263e8111..a0776f41 100644
--- a/server/data/src/book/mod.rs
+++ b/server/data/src/book/mod.rs
@@ -23,7 +23,7 @@ use crate::{
Serverdata,
book::{diagram_layout::diagram_layout, recipe_diagram::recipe_diagram},
};
-use anyhow::Result;
+use anyhow::{Context, Result};
use hurrycurry_locale::trm;
use hurrycurry_protocol::{
Gamedata, Message,
@@ -40,9 +40,16 @@ pub fn book(data: &Gamedata, serverdata: &Serverdata) -> Result<Book> {
let mut toc = Vec::new();
for (name, repr) in serverdata.recipe_groups.clone() {
- let repr = repr.into_iter().collect::<Vec<_>>();
+ let repr = repr
+ .into_iter()
+ .filter(|&i| data.demands.iter().any(|d| d.input == i))
+ .collect::<Vec<_>>();
+ if repr.is_empty() {
+ continue;
+ }
+
let mut diagram = recipe_diagram(data, serverdata, &repr)?;
- diagram_layout(&mut diagram)?;
+ diagram_layout(&mut diagram).context("during layouting")?;
let title = Message::Translation {
id: format!("b.{name}.title"),
params: vec![],