ui(settings): add volume sliders

This commit is contained in:
Martin Prokoph
2025-06-29 14:30:09 +02:00
parent b5f65bd2bb
commit 0a2294cd3d

View File

@@ -3,6 +3,10 @@ package eu.midnightdust.yaytris.ui;
import eu.midnightdust.yaytris.Settings; import eu.midnightdust.yaytris.Settings;
import javax.swing.*; import javax.swing.*;
import java.awt.*;
import static eu.midnightdust.yaytris.ui.TetrisUI.scale;
import static eu.midnightdust.yaytris.ui.TetrisUI.setFontScale;
public class SettingsMenu extends AbstractMenu { public class SettingsMenu extends AbstractMenu {
final TetrisUI ui; final TetrisUI ui;
@@ -12,6 +16,23 @@ public class SettingsMenu extends AbstractMenu {
this.setBounds(x, y, width, height); this.setBounds(x, y, width, height);
this.setLayout(null); this.setLayout(null);
this.add(new JLabel("Musik-Lautstärke:"));
JSlider musicVolumeSlider = new JSlider(0, 100, Settings.musicVolume);
musicVolumeSlider.addChangeListener(change -> {
Settings.musicVolume = musicVolumeSlider.getValue();
Settings.write();
});
this.add(musicVolumeSlider);
this.add(new JLabel("Sound-Lautstärke:"));
JSlider soundVolumeSlider = new JSlider(0, 100, Settings.soundVolume);
soundVolumeSlider.addChangeListener(change -> {
Settings.soundVolume = soundVolumeSlider.getValue();
Settings.write();
});
this.add(soundVolumeSlider);
this.add(new JLabel("Skalierung:"));
JSlider scaleSlider = new JSlider(100, 500, (int) (Settings.guiScale * 100)); JSlider scaleSlider = new JSlider(100, 500, (int) (Settings.guiScale * 100));
scaleSlider.addChangeListener(change -> { scaleSlider.addChangeListener(change -> {
Settings.guiScale = scaleSlider.getValue() / 100f; Settings.guiScale = scaleSlider.getValue() / 100f;
@@ -23,4 +44,11 @@ public class SettingsMenu extends AbstractMenu {
backButton.addActionListener(ui::openMainMenu); backButton.addActionListener(ui::openMainMenu);
this.add(backButton); this.add(backButton);
} }
@Override
public Component add(Component comp) {
Component ret = super.add(comp);
if (comp instanceof JLabel) comp.setBounds(scale(60), scale(40+23*(this.getComponentCount()-1)), scale(100), scale(10));
return ret;
}
} }