/* 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 crate::Message; use glam::Vec2; use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Serialize, Deserialize, Default)] pub struct Book { pub pages: Vec, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "snake_case", tag = "page_type")] pub enum BookPage { Cover, Contents { table: Vec<(Message, usize)>, }, Text { paragraphs: Vec, }, Recipe { title: Message, description: Message, diagram: Diagram, }, } #[derive(Debug, Clone, Serialize, Deserialize, Default)] pub struct Diagram { pub nodes: Vec, pub edges: Vec, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct DiagramNode { pub position: Vec2, pub label: Message, pub style: NodeStyle, } #[derive(Debug, Clone, Serialize, Deserialize)] pub enum NodeStyle { IntermediateProduct, FinalProduct, ProcessActive, ProcessPassive, ProcessInstant, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct DiagramEdge { pub src: usize, pub dst: usize, pub label: Option, }