khguide/src/kh3.rs

63 lines
1.5 KiB
Rust
Raw Normal View History

use askama::Template;
use food::Recipes;
use itertools::Itertools;
use crate::{
RuntimeModule,
common::{Game, enemy::Enemy, materials::MaterialDrops},
create_file,
};
mod food;
const ENEMIES_PATH: &str = "./input/kh3/enemies";
const RECIPES_PATH: &str = "./input/kh3/recipes.toml";
#[derive(Template)]
#[template(path = "pages/kh3/drops.html")]
struct DropsTemplate {
pub game: Game,
pub drops: Vec<MaterialDrops>,
pub material_kinds: Vec<String>,
}
#[derive(Template)]
#[template(path = "pages/kh3/food-sim.html")]
struct RecipesTemplate {
pub recipes: Recipes,
}
pub struct Module;
impl RuntimeModule for Module {
fn start_module() {
tracing::info!("Loading enemy data from {}", ENEMIES_PATH);
let enemies = Enemy::import(ENEMIES_PATH);
let drops = MaterialDrops::new(enemies);
let material_kinds = drops
.iter()
.map(|d| d.category.get_category(&Game::Kh3))
.dedup()
.collect();
tracing::info!("Loading recipes data from {}", RECIPES_PATH);
let recipes_str = std::fs::read_to_string(RECIPES_PATH).unwrap();
let recipes = toml::from_str::<Recipes>(&recipes_str).unwrap();
tracing::info!("Generating the KH3 drops template");
let drops_template = DropsTemplate {
game: Game::Kh3,
drops,
material_kinds,
};
create_file("./out/kh3", "drops", drops_template).unwrap();
tracing::info!("Generating the KH3 recipes template");
let food_template = RecipesTemplate { recipes };
2025-06-29 14:03:58 +03:00
create_file("./out/kh3", "food-sim", food_template).unwrap();
}
}