Pause menu functionality (#89)

* make menu use actual soundsettings values
* allow changing volume in pause menu
* persist saving settings
This commit is contained in:
extrawurst
2025-12-19 19:49:41 +01:00
committed by GitHub
parent 7b233f2220
commit 8132203653
7 changed files with 257 additions and 7 deletions

View File

@@ -0,0 +1,42 @@
use bevy::prelude::*;
use bevy_pkv::prelude::*;
use crate::client::audio::SoundSettings;
#[derive(Resource)]
struct SaveTimer(Timer);
pub fn plugin(app: &mut App) {
app.insert_resource(PkvStore::new("Rustunit", "HEDZ"));
app.insert_resource(SaveTimer(Timer::from_seconds(1.0, TimerMode::Once)));
app.add_systems(Update, persist_settings);
app.add_systems(Startup, load_settings);
}
fn persist_settings(
settings: Res<SoundSettings>,
mut pkv: ResMut<PkvStore>,
mut timer: ResMut<SaveTimer>,
time: Res<Time>,
) -> Result {
if settings.is_changed() {
timer.0.reset();
}
timer.0.tick(time.delta());
if timer.0.just_finished() {
pkv.set("audio", &*settings)?;
}
Ok(())
}
fn load_settings(mut settings: ResMut<SoundSettings>, pkv: Res<PkvStore>) -> Result {
if let Ok(loaded) = pkv.get::<SoundSettings>("audio") {
*settings = loaded;
}
Ok(())
}