From 7de1f31b432338d9d1e8a6a1c19862f2116b57d2 Mon Sep 17 00:00:00 2001 From: demenik Date: Sun, 30 Nov 2025 16:31:23 +0100 Subject: [PATCH] feat: Add BerrySeed ItemType (#51) --- src/features/inventory/components.rs | 40 +++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/src/features/inventory/components.rs b/src/features/inventory/components.rs index bf2e418..cc41777 100644 --- a/src/features/inventory/components.rs +++ b/src/features/inventory/components.rs @@ -3,28 +3,56 @@ use crate::prelude::*; #[derive(Serialize, Deserialize, Clone)] pub enum ItemType { Berry, + BerrySeed { + prefix: String, + cost: u32, + grants: u32, + slice: String, + }, } impl ItemType { pub fn singular(&self) -> String { match self { - ItemType::Berry => "Beere", + ItemType::Berry => "Beere".into(), + ItemType::BerrySeed { prefix, .. } => format!("{}samen", prefix), } - .into() } pub fn plural(&self) -> String { match self { - ItemType::Berry => "Beeren", + ItemType::Berry => "Beeren".into(), + ItemType::BerrySeed { prefix, .. } => format!("{}samen", prefix), } - .into() } pub fn description(&self) -> String { 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) -> 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() } }