diff --git a/README.md b/README.md index d4323fe..9f03d81 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,10 @@ Können Sie meinen Highscore schlagen? ![Screenshot des Tetris-Spiels](assets/ingame.png) +## Im Falle einer IllegalArgumentException +Eclipse ist unfähig Java-Konventionen zu befolgen und fügt den resources-Ordner nicht automatisch zum classpath hinzu. +Um das zu beheben, gehen Sie in die Projekteinstellungen -> Java Build Path -> Source und fügen Sie den resources-Ordner manuell hinzu. + ## Rechtliche Hinweise »Tetris« ist eine eingetragene Marke von The Tetris Company, Inc. Die Verwendung des Namens »Tetris« und des Spielkonzepts erfolgen lediglich zu Bildungszwecken. \ No newline at end of file diff --git a/src/main/java/eu/midnightdust/yaytris/ui/AbstractMenu.java b/src/main/java/eu/midnightdust/yaytris/ui/AbstractMenu.java index ac2d3d7..18885e7 100644 --- a/src/main/java/eu/midnightdust/yaytris/ui/AbstractMenu.java +++ b/src/main/java/eu/midnightdust/yaytris/ui/AbstractMenu.java @@ -1,16 +1,22 @@ package eu.midnightdust.yaytris.ui; +import eu.midnightdust.yaytris.util.CatppuccinColor; + 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+getSpacing()*this.getComponentCount()), scale(100), scale(20)); - if (comp instanceof JComponent) setFontScale((JComponent) comp); + if (comp instanceof JLabel) { + comp.setForeground(CatppuccinColor.TEXT.getColor()); + } + if (comp instanceof JComponent) { + ((JComponent) comp).setOpaque(false); + } return super.add(comp); } diff --git a/src/main/java/eu/midnightdust/yaytris/ui/HighScoreMenu.java b/src/main/java/eu/midnightdust/yaytris/ui/HighScoreMenu.java index 8356b6b..4399979 100644 --- a/src/main/java/eu/midnightdust/yaytris/ui/HighScoreMenu.java +++ b/src/main/java/eu/midnightdust/yaytris/ui/HighScoreMenu.java @@ -29,11 +29,13 @@ public class HighScoreMenu extends JPanel { highscores.sort((s1, s2) -> Integer.compare(Integer.parseInt(s2.split("–")[0].replace(" ", "")), Integer.parseInt(s1.split("–")[0].replace(" ", "")))); JList highscoreList = new JList<>(highscores.toArray(String[]::new)); highscoreList.setBackground(CatppuccinColor.BASE.getColor()); + highscoreList.setForeground(CatppuccinColor.TEXT.getColor()); highscoreList.setSelectionForeground(CatppuccinColor.CRUST.getColor()); JScrollPane highscoreScrollPane = new JScrollPane(highscoreList); highscoreScrollPane.setBorder(new LineBorder(CatppuccinColor.SURFACE0.getColor(), 3, true)); this.add(highscoreScrollPane); highscoreScrollPane.setBounds(scale(60), scale(43), scale(100), scale(80)); + highscoreList.setBounds(scale(60), scale(43), scale(100), scale(80)); JButton backButton = new JButton(t("ui.back")); backButton.addActionListener(ui::openMainMenu); @@ -45,6 +47,10 @@ public class HighScoreMenu extends JPanel { public Component add(Component comp) { if (comp instanceof JLabel) { comp.setBounds(scale(60), scale(30), scale(100), scale(7)); + comp.setForeground(CatppuccinColor.TEXT.getColor()); + } + if (comp instanceof JComponent) { + ((JComponent) comp).setOpaque(false); } return super.add(comp); } diff --git a/src/main/java/eu/midnightdust/yaytris/ui/SettingsMenu.java b/src/main/java/eu/midnightdust/yaytris/ui/SettingsMenu.java index f2a952f..8f98534 100644 --- a/src/main/java/eu/midnightdust/yaytris/ui/SettingsMenu.java +++ b/src/main/java/eu/midnightdust/yaytris/ui/SettingsMenu.java @@ -2,6 +2,7 @@ package eu.midnightdust.yaytris.ui; import eu.midnightdust.yaytris.Settings; import eu.midnightdust.yaytris.Translation; +import eu.midnightdust.yaytris.util.CatppuccinColor; import eu.midnightdust.yaytris.util.Difficulty; import eu.midnightdust.yaytris.util.Language; @@ -10,7 +11,6 @@ import java.awt.*; import static eu.midnightdust.yaytris.Translation.t; import static eu.midnightdust.yaytris.ui.TetrisUI.scale; -import static eu.midnightdust.yaytris.ui.TetrisUI.setFontScale; public class SettingsMenu extends JPanel { final TetrisUI ui; @@ -87,9 +87,10 @@ public class SettingsMenu extends JPanel { comp.setBounds(scale(60), scale(20+17*this.getComponentCount()-labelAmount*10), scale(100), scale(20)); if (comp instanceof JLabel) { comp.setBounds(scale(60), scale(20+17*(this.getComponentCount())-labelAmount*10), scale(100), scale(7)); + comp.setForeground(CatppuccinColor.TEXT.getColor()); labelAmount++; } - if (comp instanceof JComponent) setFontScale((JComponent) comp); + if (comp instanceof JComponent) ((JComponent) comp).setOpaque(false); return super.add(comp); } } diff --git a/src/main/java/eu/midnightdust/yaytris/ui/TetrisUI.java b/src/main/java/eu/midnightdust/yaytris/ui/TetrisUI.java index d5a5d00..f3a98be 100644 --- a/src/main/java/eu/midnightdust/yaytris/ui/TetrisUI.java +++ b/src/main/java/eu/midnightdust/yaytris/ui/TetrisUI.java @@ -29,7 +29,7 @@ public class TetrisUI extends JFrame implements KeyListener { public TetrisUI() { this.setLayout(null); this.setTitle("Tetris"); - this.setSize((int) (400 * guiScale), (int) (300 * guiScale)); + this.setSize((int) (400 * guiScale), (int) (320 * guiScale)); this.setResizable(false); this.getContentPane().setBackground(CatppuccinColor.MANTLE.getColor()); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); @@ -62,13 +62,10 @@ public class TetrisUI extends JFrame implements KeyListener { * Resize all elements to match the current GUI scale. */ private void rescale() { - this.setSize((int) (400 * guiScale), (int) (300 * guiScale)); + this.setSize((int) (400 * guiScale), (int) (320 * guiScale)); titleLabel.setBounds(scale(225), scale(7), scale(110), scale(30)); titleLabel.setIcon(new ImageIcon(new ImageIcon(titleImage).getImage().getScaledInstance(scale(110), scale(30), Image.SCALE_DEFAULT))); gamePanel.setBounds(scale(10), scale(10), scale(150), scale(282)); - for (Component comp : this.getComponents()){ - if (comp instanceof JComponent) setFontScale((JComponent) comp); - } } /** @@ -79,9 +76,6 @@ public class TetrisUI extends JFrame implements KeyListener { public static int scale(int bound) { return (int) (bound * guiScale); } - public static void setFontScale(JComponent label) { - //if (label.getFont() != null) label.setFont(label.getFont().deriveFont((float) label.getFont().getSize() * guiScale)); - } public GameCanvas getGamePanel() { return gamePanel; diff --git a/src/main/java/eu/midnightdust/yaytris/util/CatppuccinColor.java b/src/main/java/eu/midnightdust/yaytris/util/CatppuccinColor.java index 480e87f..c54d0a9 100644 --- a/src/main/java/eu/midnightdust/yaytris/util/CatppuccinColor.java +++ b/src/main/java/eu/midnightdust/yaytris/util/CatppuccinColor.java @@ -6,7 +6,7 @@ import java.awt.*; * Color scheme based on the Catppuccin Mocha color palette */ public enum CatppuccinColor { - CRUST(0x11111b), MANTLE(0x181825), BASE(0x1e1e2e), SURFACE0(0x313244); + TEXT(0xcdd6f4), CRUST(0x11111b), MANTLE(0x181825), BASE(0x1e1e2e), SURFACE0(0x313244); final Color color; CatppuccinColor(int rgb) { diff --git a/src/main/java/eu/midnightdust/yaytris/util/sound/MusicThread.java b/src/main/java/eu/midnightdust/yaytris/util/sound/MusicThread.java index 31b8ae4..3a6d30f 100644 --- a/src/main/java/eu/midnightdust/yaytris/util/sound/MusicThread.java +++ b/src/main/java/eu/midnightdust/yaytris/util/sound/MusicThread.java @@ -65,6 +65,8 @@ public class MusicThread extends Thread { sourceDataLine.close(); } catch (LineUnavailableException | IOException | UnsupportedAudioFileException e) { throw new RuntimeException(e); + } catch (IllegalArgumentException ignored) { + // Happens when no audio device is connected } } } diff --git a/src/main/java/eu/midnightdust/yaytris/util/sound/SoundUtil.java b/src/main/java/eu/midnightdust/yaytris/util/sound/SoundUtil.java index 13ae023..d66f54f 100644 --- a/src/main/java/eu/midnightdust/yaytris/util/sound/SoundUtil.java +++ b/src/main/java/eu/midnightdust/yaytris/util/sound/SoundUtil.java @@ -52,6 +52,8 @@ public class SoundUtil { setVolume(audioClip, Settings.soundVolume); } catch (LineUnavailableException | IOException | UnsupportedAudioFileException e) { throw new RuntimeException(e); + } catch (IllegalArgumentException ignored) { + // Happens when no audio device is connected } } diff --git a/tetris_settings.json5 b/tetris_settings.json5 index bd52745..771ee91 100644 --- a/tetris_settings.json5 +++ b/tetris_settings.json5 @@ -1,10 +1,10 @@ { // Volume of theme music (0-100) - "musicVolume": 30, + "musicVolume": 100, // Volume of sound effects (0-100) "soundVolume": 100, // Amount the user interface should be scaled - "guiScale": 5.7, + "guiScale": 2.00, // Whether speed should scale with level (true/false) "shouldScaleSpeed": true, // One of [Noob, Easy, Normal, Hard, Extreme, WTF]