diff --git a/src/features/hud/components.rs b/src/features/hud/components.rs index 547dfae..6d93783 100644 --- a/src/features/hud/components.rs +++ b/src/features/hud/components.rs @@ -14,7 +14,6 @@ pub enum TextType { #[derive(Component)] pub enum ButtonType { - SavegameDump, SettingsOpen, SettingsClose, SettingsExit, diff --git a/src/features/hud/mod.rs b/src/features/hud/mod.rs index a248c1e..92f5bbe 100644 --- a/src/features/hud/mod.rs +++ b/src/features/hud/mod.rs @@ -1,3 +1,4 @@ +use crate::features::inventory; use crate::features::phase::components::TimerSettings; use crate::features::savegame::messages::SavegameDumpMessage; use crate::prelude::*; @@ -50,15 +51,25 @@ fn setup(mut commands: Commands) { TextFont::from_font_size(16.0), TextColor(Color::WHITE) ), + ( + Button, + inventory::components::ButtonType::InventoryOpen, + Node::default(), + children![( + Text::new("Inventar"), + TextFont::from_font_size(16.0), + TextColor(Color::WHITE) + )] + ), ( Button, ButtonType::SettingsOpen, Node::default(), - children![ + children![( Text::new("Einstellungen"), TextFont::from_font_size(16.0), TextColor(Color::WHITE) - ] + )] ) ], )); @@ -115,7 +126,6 @@ fn buttons( timer_settings.change(timer_type, *amount) } }, - _ => {} }, _ => {} } diff --git a/src/features/inventory/components.rs b/src/features/inventory/components.rs index bbb5ff5..bf2e418 100644 --- a/src/features/inventory/components.rs +++ b/src/features/inventory/components.rs @@ -1,13 +1,33 @@ use crate::prelude::*; -#[derive(Component)] -pub struct Item; - #[derive(Serialize, Deserialize, Clone)] pub enum ItemType { Berry, } +impl ItemType { + pub fn singular(&self) -> String { + match self { + ItemType::Berry => "Beere", + } + .into() + } + + pub fn plural(&self) -> String { + match self { + ItemType::Berry => "Beeren", + } + .into() + } + + pub fn description(&self) -> String { + match self { + ItemType::Berry => "Von Pflanzen erntbar. Kann im Shop zum Einkaufen benutzt werden.", + } + .into() + } +} + #[derive(Component, Serialize, Deserialize, Clone)] pub struct ItemStack { pub item_type: ItemType, @@ -18,3 +38,14 @@ pub struct ItemStack { pub struct Inventory { pub items: Vec, } + +#[derive(Component)] +pub enum RootMarker { + Inventory, +} + +#[derive(Component)] +pub enum ButtonType { + InventoryOpen, + InventoryClose, +} diff --git a/src/features/inventory/mod.rs b/src/features/inventory/mod.rs index 128d7c5..1b60ee8 100644 --- a/src/features/inventory/mod.rs +++ b/src/features/inventory/mod.rs @@ -1,11 +1,40 @@ -use crate::prelude::*; +use crate::{features::inventory::ui::open_inventory, prelude::*}; +use components::*; pub mod components; +pub mod ui; pub struct InventoryPlugin; impl Plugin for InventoryPlugin { fn build(&self, app: &mut App) { app.init_resource::(); + + app.add_systems(Update, buttons.run_if(in_state(AppState::GameScreen))); + } +} + +fn buttons( + mut commands: Commands, + mut interaction_query: Query<(&Interaction, &ButtonType), (Changed, With