feat: improve menus

This commit is contained in:
Martin Prokoph
2025-06-27 20:29:59 +02:00
parent 9e45ea3f37
commit 755599b4f3
4 changed files with 29 additions and 25 deletions

View File

@@ -0,0 +1,16 @@
package eu.midnightdust.yaytris.ui;
import javax.swing.*;
import java.awt.*;
import static eu.midnightdust.yaytris.ui.TetrisUI.scale;
import static eu.midnightdust.yaytris.ui.TetrisUI.setFontScale;
public class AbstractMenu extends JPanel {
@Override
public Component add(Component comp) {
comp.setBounds(scale(60), scale(20+23*this.getComponentCount()), scale(100), scale(20));
if (comp instanceof JComponent) setFontScale((JComponent) comp);
return super.add(comp);
}
}

View File

@@ -1,14 +1,8 @@
package eu.midnightdust.yaytris.ui; package eu.midnightdust.yaytris.ui;
import javax.swing.*; import javax.swing.*;
import javax.swing.plaf.basic.BasicButtonUI;
import javax.swing.plaf.metal.MetalButtonUI;
import javax.swing.plaf.synth.SynthButtonUI;
import static eu.midnightdust.yaytris.ui.TetrisUI.scale; public class MainMenu extends AbstractMenu {
import static eu.midnightdust.yaytris.ui.TetrisUI.setFontScale;
public class MainMenu extends JPanel {
final TetrisUI ui; final TetrisUI ui;
MainMenu(int x, int y, int width, int height, TetrisUI ui) { MainMenu(int x, int y, int width, int height, TetrisUI ui) {
@@ -16,10 +10,16 @@ public class MainMenu extends JPanel {
this.setBounds(x, y, width, height); this.setBounds(x, y, width, height);
this.setLayout(null); this.setLayout(null);
JButton settingsButton = new JButton("Settings"); JButton startButton = new JButton("Start");
startButton.addActionListener(ui::openSettings);
this.add(startButton);
JButton settingsButton = new JButton("Einstellungen");
settingsButton.addActionListener(ui::openSettings); settingsButton.addActionListener(ui::openSettings);
settingsButton.setBounds(scale(60), scale(20), scale(100), scale(20));
setFontScale(settingsButton);
this.add(settingsButton); this.add(settingsButton);
JButton leaveButton = new JButton("Spiel verlassen");
leaveButton.addActionListener(e -> System.exit(0));
this.add(leaveButton);
} }
} }

View File

@@ -1,17 +1,10 @@
package eu.midnightdust.yaytris.ui; package eu.midnightdust.yaytris.ui;
import eu.midnightdust.yaytris.Settings; import eu.midnightdust.yaytris.Settings;
import eu.midnightdust.yaytris.Tetris;
import javax.swing.*; import javax.swing.*;
import javax.swing.plaf.basic.BasicSliderUI;
import java.awt.*; public class SettingsMenu extends AbstractMenu {
import static eu.midnightdust.yaytris.ui.TetrisUI.scale;
import static eu.midnightdust.yaytris.ui.TetrisUI.setFontScale;
public class SettingsMenu extends JPanel {
final TetrisUI ui; final TetrisUI ui;
SettingsMenu(int x, int y, int width, int height, TetrisUI ui) { SettingsMenu(int x, int y, int width, int height, TetrisUI ui) {
@@ -20,19 +13,14 @@ public class SettingsMenu extends JPanel {
this.setLayout(null); this.setLayout(null);
JSlider scaleSlider = new JSlider(100, 500, (int) (Settings.guiScale * 100)); JSlider scaleSlider = new JSlider(100, 500, (int) (Settings.guiScale * 100));
scaleSlider.setBounds(scale(10), scale(20), scale(200), scale(20));
scaleSlider.setBackground(Color.DARK_GRAY);
scaleSlider.addChangeListener(change -> { scaleSlider.addChangeListener(change -> {
Settings.guiScale = scaleSlider.getValue() / 100f; Settings.guiScale = scaleSlider.getValue() / 100f;
Settings.write(); Settings.write();
}); });
setFontScale(scaleSlider);
this.add(scaleSlider); this.add(scaleSlider);
JButton backButton = new JButton("Back"); JButton backButton = new JButton("Zurück");
backButton.addActionListener(ui::openMainMenu); backButton.addActionListener(ui::openMainMenu);
backButton.setBounds(scale(60), scale(140), scale(100), scale(20));
setFontScale(backButton);
this.add(backButton); this.add(backButton);
} }
} }

View File

@@ -1,5 +1,5 @@
{ {
"musicVolume": 100, "musicVolume": 100,
"soundVolume": 100, "soundVolume": 100,
"guiScale": 4.95 "guiScale": 4.62
} }