diff options
| author | metamuffin <metamuffin@disroot.org> | 2025-10-10 14:26:27 +0200 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2025-10-10 14:26:27 +0200 |
| commit | f35edbd85b87090b64434a6996e1623ea5e76052 (patch) | |
| tree | a85aa1e725f9921aafeb7dae9e2d184f74a8052d /server/data/src/book/mod.rs | |
| parent | 104742a23677ba7b2507f989bc02c8a03226c3b2 (diff) | |
| download | hurrycurry-f35edbd85b87090b64434a6996e1623ea5e76052.tar hurrycurry-f35edbd85b87090b64434a6996e1623ea5e76052.tar.bz2 hurrycurry-f35edbd85b87090b64434a6996e1623ea5e76052.tar.zst | |
Implement more aggressive recipe/demand filtering; fixes book in many maps
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![], |