/* Hurry Curry! - a game about cooking Copyright (C) 2025 Hurry Curry! Contributors This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, version 3 of the License only. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ use hurrycurry_protocol::{Gamedata, ItemIndex, Recipe, RecipeIndex, TileIndex}; use std::collections::HashMap; #[derive(Debug, Default)] pub struct GamedataIndex { pub tile_collide: Vec, pub recipe_passive_by_input: HashMap>, } impl GamedataIndex { pub fn update(&mut self, data: &Gamedata) { self.recipe_passive_by_input.clear(); self.tile_collide.clear(); for tile in (0..data.tile_names.len()).map(TileIndex) { self.tile_collide.push(!data.tile_walkable.contains(&tile)); } for (ri, r) in data.recipes() { if let Recipe::Passive { input, .. } = r { self.recipe_passive_by_input .entry(*input) .or_default() .push(ri); } } } }