Add a music volume slider (#135)

This commit is contained in:
Stef
2025-10-07 11:47:57 +02:00
committed by GitHub
parent 58269e917a
commit 3af182b986
7 changed files with 80 additions and 6 deletions

View File

@@ -41,6 +41,9 @@ public final class OptionsPopup extends Popup {
final var fxVolumeHeader = NodeBuilder.header(AppContext.getString("effectsVolume"));
final var fxVolumeSeparator = NodeBuilder.separator();
final var musicVolumeHeader = NodeBuilder.header(AppContext.getString("musicVolume"));
final var musicVolumeSeparator = NodeBuilder.separator();
final var themeHeader = NodeBuilder.header(AppContext.getString("theme"));
final var themeSeparator = NodeBuilder.separator();
@@ -51,6 +54,7 @@ public final class OptionsPopup extends Popup {
optionsContainer.addNodes(languageHeader, languageChoiceBox(), languageSeparator);
optionsContainer.addNodes(volumeHeader, volumeSlider(), volumeSeparator);
optionsContainer.addNodes(fxVolumeHeader, fxVolumeSlider(), fxVolumeSeparator);
optionsContainer.addNodes(musicVolumeHeader, musicVolumeSlider(), musicVolumeSeparator);
optionsContainer.addNodes(themeHeader, themeChoiceBox(), themeSeparator);
optionsContainer.addNodes(layoutSizeHeader, layoutSizeChoiceBox(), layoutSizeSeparator);
optionsContainer.addNodes(fullscreenToggle());
@@ -115,6 +119,13 @@ public final class OptionsPopup extends Popup {
});
}
private Slider musicVolumeSlider() {
return NodeBuilder.slider(100, settings.getMusicVolume(), (volume) -> {
settings.setMusicVolume(volume);
new EventFlow().addPostEvent(new AudioEvents.ChangeMusicVolume(volume.doubleValue())).asyncPostEvent();
});
}
private Label fullscreenToggle() {
return NodeBuilder.toggle(AppContext.getString("windowed"), AppContext.getString("fullscreen"), !isWindowed, (fullscreen) -> {

View File

@@ -1,5 +1,6 @@
package org.toop.local;
import jdk.jfr.Event;
import org.toop.app.App;
import org.toop.framework.asset.resources.SettingsAsset;
import org.toop.framework.audio.events.AudioEvents;
@@ -23,6 +24,8 @@ public class AppSettings {
AppContext.setLocale(Locale.of(settingsData.locale));
App.setFullscreen(settingsData.fullScreen);
new EventFlow().addPostEvent(new AudioEvents.ChangeVolume(settingsData.volume)).asyncPostEvent();
new EventFlow().addPostEvent(new AudioEvents.ChangeFxVolume(settingsData.fxVolume)).asyncPostEvent();
new EventFlow().addPostEvent(new AudioEvents.ChangeMusicVolume(settingsData.musicVolume)).asyncPostEvent();
App.setStyle(settingsAsset.getTheme(), settingsAsset.getLayoutSize());
}

View File

@@ -17,6 +17,7 @@ deny=Deny
developers=Developers
drawText=The game ended in a draw
effectsVolume=Effects Volume
musicVolume=Music Volume
fullscreen=Fullscreen
gameIsText=To a game of
goodGameText=Good game. Well played.
@@ -47,7 +48,7 @@ small=Small
start=Start
theme=Theme
tictactoe=Tic Tac Toe
volume=Volume
volume=Master Volume
windowed=Windowed
yes=Yes