diff options
Diffstat (limited to 'server/data/src/book/mod.rs')
| -rw-r--r-- | server/data/src/book/mod.rs | 13 |
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![], |