From 52dd300ca0bfb2e9d6ac81b3fc50512142089dc2 Mon Sep 17 00:00:00 2001 From: demenik Date: Thu, 11 Dec 2025 20:21:02 +0100 Subject: [PATCH] feat: Add achievements button to HUD settings (#47) --- src/features/hud/components.rs | 1 + src/features/hud/mod.rs | 11 +++++++++++ src/features/hud/ui/settings.rs | 6 ++++++ 3 files changed, 18 insertions(+) diff --git a/src/features/hud/components.rs b/src/features/hud/components.rs index ccd9a63..449cb5a 100644 --- a/src/features/hud/components.rs +++ b/src/features/hud/components.rs @@ -21,6 +21,7 @@ pub enum ButtonType { SettingsOpen, SettingsExit, SettingsSave, + SettingsAchievements, SettingsTimerChange { input: SettingsTimerInput, amount: i32, diff --git a/src/features/hud/mod.rs b/src/features/hud/mod.rs index f736d89..27fa6fa 100644 --- a/src/features/hud/mod.rs +++ b/src/features/hud/mod.rs @@ -1,3 +1,4 @@ +use crate::features::achievement::{components::AchievementProgress, ui::open_achievements_menu}; use crate::features::phase::components::TimerSettings; use crate::features::savegame::messages::SavegameDumpMessage; use crate::features::{inventory, shop}; @@ -151,6 +152,8 @@ fn buttons( mut next_state: ResMut>, mut timer_settings: ResMut, keys: Res>, + achievement_progress: Res, + root_query: Query<(Entity, &RootMarker)>, ) { let shift_multiplier = if keys.any_pressed([KeyCode::ShiftLeft, KeyCode::ShiftRight]) { 10 @@ -171,6 +174,14 @@ fn buttons( ButtonType::SettingsSave => { savegame_messages.write(SavegameDumpMessage); } + ButtonType::SettingsAchievements => { + open_achievements_menu(&mut commands, &achievement_progress); + for (entity, root) in root_query.iter() { + if let RootMarker::Settings = root { + commands.entity(entity).despawn(); + } + } + } ButtonType::SettingsTimerChange { input, amount } => match input { SettingsTimerInput::Minutes(timer_type) => { timer_settings.change(timer_type, 60 * amount * shift_multiplier) diff --git a/src/features/hud/ui/settings.rs b/src/features/hud/ui/settings.rs index 1ae8962..0d1b70d 100644 --- a/src/features/hud/ui/settings.rs +++ b/src/features/hud/ui/settings.rs @@ -27,6 +27,12 @@ pub fn open_settings(commands: &mut Commands) { ButtonVariant::Secondary, Node::from_padding(UiRect::all(px(10))), |color| text("Spiel speichern", 24.0, color) + ), + button( + ButtonType::SettingsAchievements, + ButtonVariant::Secondary, + Node::from_padding(UiRect::all(px(10))), + |color| text("Erfolge", 24.0, color) ),( Node { justify_content: JustifyContent::Center,