feat: Add BerrySeed ItemType (#51)

This commit is contained in:
demenik
2025-11-30 16:31:23 +01:00
parent 5d73ae3036
commit 7de1f31b43

View File

@@ -3,28 +3,56 @@ use crate::prelude::*;
#[derive(Serialize, Deserialize, Clone)] #[derive(Serialize, Deserialize, Clone)]
pub enum ItemType { pub enum ItemType {
Berry, Berry,
BerrySeed {
prefix: String,
cost: u32,
grants: u32,
slice: String,
},
} }
impl ItemType { impl ItemType {
pub fn singular(&self) -> String { pub fn singular(&self) -> String {
match self { match self {
ItemType::Berry => "Beere", ItemType::Berry => "Beere".into(),
ItemType::BerrySeed { prefix, .. } => format!("{}samen", prefix),
} }
.into()
} }
pub fn plural(&self) -> String { pub fn plural(&self) -> String {
match self { match self {
ItemType::Berry => "Beeren", ItemType::Berry => "Beeren".into(),
ItemType::BerrySeed { prefix, .. } => format!("{}samen", prefix),
} }
.into()
} }
pub fn description(&self) -> String { pub fn description(&self) -> String {
match self { match self {
ItemType::Berry => "Von Pflanzen erntbar. Kann im Shop zum Einkaufen benutzt werden.", ItemType::Berry => {
"Von Pflanzen erntbar. Kann im Shop zum Einkaufen benutzt werden.".into()
}
ItemType::BerrySeed { grants, .. } => format!(
"Im Shop kaufbar. Kann eingepflanzt werden. Erhalte beim Ernten {} {}.",
grants,
match grants {
1 => ItemType::Berry.singular(),
_ => ItemType::Berry.plural(),
}
),
}
}
pub fn get_sprite(&self, asset_server: Res<AssetServer>) -> AseSlice {
match self {
ItemType::Berry => AseSlice {
name: "Berry".into(),
aseprite: asset_server.load("berry.aseprite"),
},
ItemType::BerrySeed { slice, .. } => AseSlice {
name: slice.into(),
aseprite: asset_server.load("seed.aseprite"),
},
} }
.into()
} }
} }