From 5278bc9d1f23d1832eba96737a7360b14dd89f93 Mon Sep 17 00:00:00 2001 From: extrawurst Date: Fri, 19 Dec 2025 14:31:14 -0500 Subject: [PATCH] volume change sound and simplify volume change logic --- .../hedz_reloaded/src/client/audio/sounds.rs | 1 + crates/hedz_reloaded/src/client/ui/pause.rs | 84 +++++++++++-------- crates/hedz_reloaded/src/loading_assets.rs | 2 + crates/hedz_reloaded/src/protocol/events.rs | 1 + 4 files changed, 52 insertions(+), 36 deletions(-) diff --git a/crates/hedz_reloaded/src/client/audio/sounds.rs b/crates/hedz_reloaded/src/client/audio/sounds.rs index 3540f83..887cfe2 100644 --- a/crates/hedz_reloaded/src/client/audio/sounds.rs +++ b/crates/hedz_reloaded/src/client/audio/sounds.rs @@ -34,6 +34,7 @@ fn on_spawn_sounds( PlaySound::ThrowHit => assets.throw_explosion.clone(), PlaySound::Reloaded => assets.reloaded.clone(), PlaySound::Invalid => assets.invalid.clone(), + PlaySound::VolumeChange => assets.volume.clone(), PlaySound::CashHeal => assets.cash_heal.clone(), PlaySound::HeadDrop => assets.head_drop.clone(), PlaySound::HeadCollect => assets.head_collect.clone(), diff --git a/crates/hedz_reloaded/src/client/ui/pause.rs b/crates/hedz_reloaded/src/client/ui/pause.rs index f08ed3f..66d4648 100644 --- a/crates/hedz_reloaded/src/client/ui/pause.rs +++ b/crates/hedz_reloaded/src/client/ui/pause.rs @@ -2,6 +2,7 @@ use crate::{ GameState, HEDZ_GREEN, HEDZ_PURPLE, client::{audio::SoundSettings, control::CharacterInputEnabled}, loading_assets::UIAssets, + protocol::PlaySound, }; use bevy::{color::palettes::css::BLACK, prelude::*}; @@ -28,8 +29,15 @@ struct PauseMenuSelection(ProgressBar); #[derive(Resource)] struct VolumeChangeCooldown(Timer); +#[derive(Message)] +struct VolumeChangeEvent { + direction: f32, + just_pressed: bool, +} + pub fn plugin(app: &mut App) { app.init_state::(); + app.add_message::(); app.add_systems(Update, open_pause_menu.run_if(in_state(GameState::Playing))); app.add_systems( @@ -38,8 +46,12 @@ pub fn plugin(app: &mut App) { selection_input, selection_changed, update_volume_display, - change_volume_keyboard, - change_volume_gamepad, + ( + volume_input_keyboard, + volume_input_gamepad, + apply_volume_change, + ) + .chain(), ) .run_if(in_state(PauseMenuState::Open)), ); @@ -224,14 +236,11 @@ fn update_volume_display( } } -fn change_volume_keyboard( - selection: Res, +fn volume_input_keyboard( keyboard: Res>, - mut settings: ResMut, - mut cooldown: ResMut, - time: Res