use crate::recipes::id::RecipeId;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct OwnedShapedRecipe {
pub id: RecipeId,
pub width: u8,
pub height: u8,
pub pattern: Vec<Option<i32>>,
pub result_id: i32,
pub result_count: i32,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct OwnedShapelessRecipe {
pub id: RecipeId,
pub ingredients: Vec<i32>,
pub result_id: i32,
pub result_count: i32,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Recipe {
Shaped(OwnedShapedRecipe),
Shapeless(OwnedShapelessRecipe),
}
impl Recipe {
pub fn id(&self) -> &RecipeId {
match self {
Self::Shaped(r) => &r.id,
Self::Shapeless(r) => &r.id,
}
}
pub fn result_id(&self) -> i32 {
match self {
Self::Shaped(r) => r.result_id,
Self::Shapeless(r) => r.result_id,
}
}
pub fn result_count(&self) -> i32 {
match self {
Self::Shaped(r) => r.result_count,
Self::Shapeless(r) => r.result_count,
}
}
}