From 755599b4f3fe48443b8b02ff076b528cbd7c9454 Mon Sep 17 00:00:00 2001 From: Martin Prokoph Date: Fri, 27 Jun 2025 20:29:59 +0200 Subject: [PATCH] feat: improve menus --- .../midnightdust/yaytris/ui/AbstractMenu.java | 16 +++++++++++++++ .../eu/midnightdust/yaytris/ui/MainMenu.java | 20 +++++++++---------- .../midnightdust/yaytris/ui/SettingsMenu.java | 16 ++------------- tetris_settings.json5 | 2 +- 4 files changed, 29 insertions(+), 25 deletions(-) create mode 100644 src/main/java/eu/midnightdust/yaytris/ui/AbstractMenu.java diff --git a/src/main/java/eu/midnightdust/yaytris/ui/AbstractMenu.java b/src/main/java/eu/midnightdust/yaytris/ui/AbstractMenu.java new file mode 100644 index 0000000..0a5a257 --- /dev/null +++ b/src/main/java/eu/midnightdust/yaytris/ui/AbstractMenu.java @@ -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); + } +} diff --git a/src/main/java/eu/midnightdust/yaytris/ui/MainMenu.java b/src/main/java/eu/midnightdust/yaytris/ui/MainMenu.java index c90ec9c..6e5381a 100644 --- a/src/main/java/eu/midnightdust/yaytris/ui/MainMenu.java +++ b/src/main/java/eu/midnightdust/yaytris/ui/MainMenu.java @@ -1,14 +1,8 @@ package eu.midnightdust.yaytris.ui; 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; -import static eu.midnightdust.yaytris.ui.TetrisUI.setFontScale; - -public class MainMenu extends JPanel { +public class MainMenu extends AbstractMenu { final 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.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.setBounds(scale(60), scale(20), scale(100), scale(20)); - setFontScale(settingsButton); this.add(settingsButton); + + JButton leaveButton = new JButton("Spiel verlassen"); + leaveButton.addActionListener(e -> System.exit(0)); + this.add(leaveButton); } } diff --git a/src/main/java/eu/midnightdust/yaytris/ui/SettingsMenu.java b/src/main/java/eu/midnightdust/yaytris/ui/SettingsMenu.java index cebfec0..39d3c24 100644 --- a/src/main/java/eu/midnightdust/yaytris/ui/SettingsMenu.java +++ b/src/main/java/eu/midnightdust/yaytris/ui/SettingsMenu.java @@ -1,17 +1,10 @@ package eu.midnightdust.yaytris.ui; import eu.midnightdust.yaytris.Settings; -import eu.midnightdust.yaytris.Tetris; import javax.swing.*; -import javax.swing.plaf.basic.BasicSliderUI; -import java.awt.*; - -import static eu.midnightdust.yaytris.ui.TetrisUI.scale; -import static eu.midnightdust.yaytris.ui.TetrisUI.setFontScale; - -public class SettingsMenu extends JPanel { +public class SettingsMenu extends AbstractMenu { final 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); 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 -> { Settings.guiScale = scaleSlider.getValue() / 100f; Settings.write(); }); - setFontScale(scaleSlider); this.add(scaleSlider); - JButton backButton = new JButton("Back"); + JButton backButton = new JButton("Zurück"); backButton.addActionListener(ui::openMainMenu); - backButton.setBounds(scale(60), scale(140), scale(100), scale(20)); - setFontScale(backButton); this.add(backButton); } } diff --git a/tetris_settings.json5 b/tetris_settings.json5 index 396dd38..d8a8731 100644 --- a/tetris_settings.json5 +++ b/tetris_settings.json5 @@ -1,5 +1,5 @@ { "musicVolume": 100, "soundVolume": 100, - "guiScale": 4.95 + "guiScale": 4.62 } \ No newline at end of file