From 5f2be9434335f0a54514622d21332a3ef7b672ce Mon Sep 17 00:00:00 2001 From: stiti Date: Wed, 6 Nov 2024 20:44:36 +0100 Subject: [PATCH] Settings --- .../images/Settings/speaker-high-volume.png | Bin 0 -> 15886 bytes .../images/Settings/speaker-mute-volume.png | Bin 0 -> 8358 bytes .../fr/monkhanny/dorfromantik/Options.java | 14 +- .../controller/MainMenuButtonController.java | 23 ++- .../dorfromantik/gui/SettingsPanel.java | 133 ++++++++++++++++++ .../dorfromantik/utils/MusicPlayer.java | 18 ++- 6 files changed, 176 insertions(+), 12 deletions(-) create mode 100644 TestV2/ressources/images/Settings/speaker-high-volume.png create mode 100644 TestV2/ressources/images/Settings/speaker-mute-volume.png create mode 100644 TestV2/src/fr/monkhanny/dorfromantik/gui/SettingsPanel.java diff --git a/TestV2/ressources/images/Settings/speaker-high-volume.png b/TestV2/ressources/images/Settings/speaker-high-volume.png new file mode 100644 index 0000000000000000000000000000000000000000..34f36e981a287c64b31479f6b1bbc3588a122709 GIT binary patch literal 15886 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 DO0E!Z literal 0 HcmV?d00001 diff --git a/TestV2/ressources/images/Settings/speaker-mute-volume.png b/TestV2/ressources/images/Settings/speaker-mute-volume.png new file mode 100644 index 0000000000000000000000000000000000000000..5ebcb078a40601efebeeb1ec52f0de7ecc7275e3 GIT binary patch literal 8358 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 I>zopr0F>%K3jhEB literal 0 HcmV?d00001 diff --git a/TestV2/src/fr/monkhanny/dorfromantik/Options.java b/TestV2/src/fr/monkhanny/dorfromantik/Options.java index 2055c0b..1be87b7 100644 --- a/TestV2/src/fr/monkhanny/dorfromantik/Options.java +++ b/TestV2/src/fr/monkhanny/dorfromantik/Options.java @@ -22,12 +22,12 @@ public class Options { /** * Musique en sourdine ou non */ - public static final boolean MUSIC_MUTED = false; + public static boolean MUSIC_MUTED = false; /** * Sons en sourdine ou non */ - public static final boolean SOUNDS_MUTED = false; + public static boolean SOUNDS_MUTED = false; /** * Couleur de subrillance des boutons @@ -38,4 +38,14 @@ public class Options { public static final float HOVER_FONT_SCALE = 1.1f; public static final int ANIMATION_STEPS = 10; public static final int ANIMATION_DELAY = 15; + + /** + * Volume de la musique + */ + public static int MUSIC_VOLUME = 60; + + /** + * Volume des bruitages + */ + public static int SOUNDS_VOLUME = 60; } diff --git a/TestV2/src/fr/monkhanny/dorfromantik/controller/MainMenuButtonController.java b/TestV2/src/fr/monkhanny/dorfromantik/controller/MainMenuButtonController.java index ea73b1b..edff115 100644 --- a/TestV2/src/fr/monkhanny/dorfromantik/controller/MainMenuButtonController.java +++ b/TestV2/src/fr/monkhanny/dorfromantik/controller/MainMenuButtonController.java @@ -1,8 +1,11 @@ package fr.monkhanny.dorfromantik.controller; +import fr.monkhanny.dorfromantik.Options; +import fr.monkhanny.dorfromantik.gui.SettingsPanel; import fr.monkhanny.dorfromantik.gui.MainMenu; import fr.monkhanny.dorfromantik.gui.ButtonPanel; +import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -10,6 +13,8 @@ public class MainMenuButtonController implements ActionListener { private MainMenu mainMenu; + private JFrame settingsFrame; + public MainMenuButtonController(MainMenu mainMenu) { this.mainMenu = mainMenu; // Ajouter les écouteurs d'événements sur les boutons @@ -21,6 +26,11 @@ public class MainMenuButtonController implements ActionListener { buttonPanel.getHowToPlayButton().addActionListener(this); buttonPanel.getSettingsButton().addActionListener(this); buttonPanel.getExitButton().addActionListener(this); + + // Créer la fenêtre des paramètres + this.settingsFrame = new JFrame("Paramètres"); + this.settingsFrame.setLocationRelativeTo(null); + this.settingsFrame.setVisible(false); } @Override @@ -64,12 +74,15 @@ public class MainMenuButtonController implements ActionListener { // Logic to show how to play } - private void openSettings() { - System.out.println("Ouvrir les paramètres..."); - // Logic to open settings - } - private void exitGame() { System.exit(0); // Fermer l'application } + + private void openSettings() { + this.settingsFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + this.settingsFrame.setSize(500, 500); + SettingsPanel settingsPanel = new SettingsPanel(); + this.settingsFrame.add(settingsPanel); + this.settingsFrame.setVisible(true); + } } diff --git a/TestV2/src/fr/monkhanny/dorfromantik/gui/SettingsPanel.java b/TestV2/src/fr/monkhanny/dorfromantik/gui/SettingsPanel.java new file mode 100644 index 0000000..36940dc --- /dev/null +++ b/TestV2/src/fr/monkhanny/dorfromantik/gui/SettingsPanel.java @@ -0,0 +1,133 @@ +package fr.monkhanny.dorfromantik.gui; + +import fr.monkhanny.dorfromantik.Options; +import fr.monkhanny.dorfromantik.enums.Fonts; +import fr.monkhanny.dorfromantik.utils.FontManager; +import fr.monkhanny.dorfromantik.utils.MusicPlayer; +import fr.monkhanny.dorfromantik.components.Title; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.plaf.basic.BasicSliderUI; + +public class SettingsPanel extends JPanel { + private JCheckBox muteMusicCheckBox; + private JCheckBox muteSoundsCheckBox; + private JSlider musicVolumeSlider; + private JSlider soundsVolumeSlider; + + public SettingsPanel() { + // Layout général du panneau + this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); + this.setBackground(new Color(255, 239, 214)); // Fond pastel (beige clair) + this.setBorder(BorderFactory.createEmptyBorder(20, 40, 20, 40)); + + // Titre centré avec une police moderne + Title title = new Title("Paramètres", 45, new Color(255, 179, 128)); // Rose pastel + title.setAlignmentX(Component.CENTER_ALIGNMENT); // Centré + JPanel titlePanel = new JPanel(); + titlePanel.setOpaque(false); // Pour garder le fond transparent + titlePanel.setLayout(new FlowLayout(FlowLayout.CENTER)); // Centrer horizontalement + titlePanel.add(title); + + this.add(titlePanel); + this.add(Box.createVerticalStrut(30)); // Espacement entre le titre et les options + + // Section 1: Couper la musique + Slider musique + JPanel musicPanel = new JPanel(); + musicPanel.setLayout(new BoxLayout(musicPanel, BoxLayout.Y_AXIS)); + musicPanel.setBackground(new Color(255, 179, 128)); // Fond vert pastel + + muteMusicCheckBox = new JCheckBox("Couper la Musique"); + muteMusicCheckBox.setSelected(Options.MUSIC_MUTED); + muteMusicCheckBox.setForeground(new Color(0, 0, 0)); // Rose pastel + muteMusicCheckBox.setBackground(new Color(255, 182, 193)); // Fond vert pastel + muteMusicCheckBox.setFont(new Font("Roboto", Font.PLAIN, 18)); // Police moderne + muteMusicCheckBox.setFocusPainted(false); + muteMusicCheckBox.setBorderPainted(false); + muteMusicCheckBox.setContentAreaFilled(false); + muteMusicCheckBox.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + Options.MUSIC_MUTED = muteMusicCheckBox.isSelected(); + if (Options.MUSIC_MUTED) { + MusicPlayer.pauseMusic(); + } else { + MusicPlayer.playMusic(); + } + } + }); + + musicVolumeSlider = new JSlider(0, 100, Options.MUSIC_VOLUME); + musicVolumeSlider.setForeground(new Color(0, 0, 0)); // Rose pastel + musicVolumeSlider.setBackground(new Color(255, 224, 204)); // Fond vert pastel + musicVolumeSlider.setMajorTickSpacing(25); + musicVolumeSlider.setMinorTickSpacing(5); + musicVolumeSlider.setPaintTicks(true); + musicVolumeSlider.setPaintLabels(true); + musicVolumeSlider.setFont(new Font("Roboto", Font.PLAIN, 14)); // Police moderne + musicVolumeSlider.setUI(new BasicSliderUI(musicVolumeSlider)); + musicVolumeSlider.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + Options.MUSIC_VOLUME = musicVolumeSlider.getValue(); + MusicPlayer.setVolume(MusicPlayer.getMusicClip(), Options.MUSIC_VOLUME); + } + }); + + musicPanel.add(muteMusicCheckBox); + musicPanel.add(Box.createVerticalStrut(10)); // Espacement + musicPanel.add(musicVolumeSlider); + + this.add(musicPanel); // Ajouter le panneau musique + this.add(Box.createVerticalStrut(30)); // Espacement entre la musique et les bruitages + + // Section 2: Couper les bruitages + Slider bruitages + JPanel soundsPanel = new JPanel(); + soundsPanel.setLayout(new BoxLayout(soundsPanel, BoxLayout.Y_AXIS)); + soundsPanel.setBackground(new Color(255, 179, 128)); // Fond orange pastel + + muteSoundsCheckBox = new JCheckBox("Couper les Bruitages"); + muteSoundsCheckBox.setSelected(Options.SOUNDS_MUTED); + muteSoundsCheckBox.setForeground(new Color(0, 0, 0)); // Rose pastel + muteSoundsCheckBox.setBackground(new Color(255, 224, 204)); // Fond orange pastel + muteSoundsCheckBox.setFont(new Font("Roboto", Font.PLAIN, 18)); // Police moderne + muteSoundsCheckBox.setFocusPainted(false); + muteSoundsCheckBox.setBorderPainted(false); + muteSoundsCheckBox.setContentAreaFilled(false); + muteSoundsCheckBox.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + Options.SOUNDS_MUTED = muteSoundsCheckBox.isSelected(); + } + }); + + soundsVolumeSlider = new JSlider(0, 100, Options.SOUNDS_VOLUME); + soundsVolumeSlider.setForeground(new Color(0, 0, 0)); // Rose pastel + soundsVolumeSlider.setBackground(new Color(255, 224, 204)); // Fond orange pastel + soundsVolumeSlider.setMajorTickSpacing(25); + soundsVolumeSlider.setMinorTickSpacing(5); + soundsVolumeSlider.setPaintTicks(true); + soundsVolumeSlider.setPaintLabels(true); + soundsVolumeSlider.setFont(new Font("Roboto", Font.PLAIN, 14)); // Police moderne + soundsVolumeSlider.setUI(new BasicSliderUI(soundsVolumeSlider)); + soundsVolumeSlider.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + Options.SOUNDS_VOLUME = soundsVolumeSlider.getValue(); + MusicPlayer.setVolume(MusicPlayer.getSoundClip(), Options.SOUNDS_VOLUME); + } + }); + + soundsPanel.add(muteSoundsCheckBox); + soundsPanel.add(Box.createVerticalStrut(10)); // Espacement + soundsPanel.add(soundsVolumeSlider); + + this.add(soundsPanel); // Ajouter le panneau bruitages + this.add(Box.createVerticalStrut(30)); // Espacement entre les sections + } +} diff --git a/TestV2/src/fr/monkhanny/dorfromantik/utils/MusicPlayer.java b/TestV2/src/fr/monkhanny/dorfromantik/utils/MusicPlayer.java index 6270661..3271746 100644 --- a/TestV2/src/fr/monkhanny/dorfromantik/utils/MusicPlayer.java +++ b/TestV2/src/fr/monkhanny/dorfromantik/utils/MusicPlayer.java @@ -18,7 +18,7 @@ public class MusicPlayer { if (music == Musics.MAIN_MENU_MUSIC) { musicClip = SoundLoader.loadMusic(Musics.MAIN_MENU_MUSIC.getSoundsPath()); if (musicClip != null) { - setVolume(musicClip, Options.DEFAULT_VOLUME); + setVolume(musicClip, Options.MUSIC_VOLUME); } } } @@ -27,20 +27,20 @@ public class MusicPlayer { if (sound == Sounds.SOUNDS1) { soundClip = SoundLoader.loadMusic(Sounds.SOUNDS1.getSoundsPath()); // Utilise soundClip pour les bruitages if (soundClip != null) { - setVolume(soundClip, Options.DEFAULT_VOLUME); + setVolume(soundClip, Options.SOUNDS_VOLUME); } } } public static void playMusic() { - if (musicClip != null && !isPlayingMusic) { + if (musicClip != null && !isPlayingMusic && !Options.MUSIC_MUTED) { musicClip.start(); isPlayingMusic = true; } } public static void playSound() { - if (soundClip != null && !isPlayingSound) { + if (soundClip != null && !isPlayingSound && !Options.SOUNDS_MUTED) { soundClip.start(); isPlayingSound = true; soundClip.addLineListener(event -> { // Réinitialiser isPlayingSound à la fin du son @@ -83,4 +83,12 @@ public class MusicPlayer { public static boolean isPlayingSound() { return isPlayingSound; } -} + + public static Clip getMusicClip() { + return musicClip; + } + + public static Clip getSoundClip() { + return soundClip; + } +} \ No newline at end of file