From 5fc7b5f37d0d3a2696db9a1913ba09f589c14130 Mon Sep 17 00:00:00 2001 From: stiti Date: Tue, 12 Nov 2024 20:56:37 +0100 Subject: [PATCH] =?UTF-8?q?Correction=20des=20bugs=20de=20son=20+=20am?= =?UTF-8?q?=C3=A9lioration=20du=20code=20pour=20des=20meilleurs=20performa?= =?UTF-8?q?nces?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/fr/monkhanny/dorfromantik/Main.java | 19 ++++++++++++++++++- .../controller/MainMenuButtonController.java | 14 ++------------ .../dorfromantik/gui/SettingsPanel.java | 8 ++++---- .../listeners/MusicVolumeChangeListener.java | 5 ++--- 4 files changed, 26 insertions(+), 20 deletions(-) diff --git a/TestV2/src/fr/monkhanny/dorfromantik/Main.java b/TestV2/src/fr/monkhanny/dorfromantik/Main.java index 5de15b2..d121acf 100644 --- a/TestV2/src/fr/monkhanny/dorfromantik/Main.java +++ b/TestV2/src/fr/monkhanny/dorfromantik/Main.java @@ -5,6 +5,10 @@ import fr.monkhanny.dorfromantik.controller.MainMenuResizeController; import fr.monkhanny.dorfromantik.controller.MainMenuButtonController; import fr.monkhanny.dorfromantik.utils.MusicPlayer; import fr.monkhanny.dorfromantik.enums.Musics; +import fr.monkhanny.dorfromantik.listeners.SettingsWindowListener; +import fr.monkhanny.dorfromantik.gui.SettingsPanel; + +import javax.swing.JFrame; /** * Classe principale du jeu @@ -19,10 +23,23 @@ public class Main { * @param args Tableau de String contenant les arguments passé en paramètre au programme */ public static void main(String[] args) { + // Créer la fenêtre des paramètres + JFrame settingsFrame = new JFrame("Paramètres"); + + // Menu principal MusicPlayer.loadMusic(Musics.MAIN_MENU_MUSIC); MusicPlayer.playMusic(); MainMenu mainMenu = new MainMenu(); MainMenuResizeController MainMenuResizeController = new MainMenuResizeController(mainMenu); - MainMenuButtonController MainMenuButtonController = new MainMenuButtonController(mainMenu); + MainMenuButtonController MainMenuButtonController = new MainMenuButtonController(mainMenu,settingsFrame); + + + // Fenêtre des paramètres + SettingsWindowListener windowListener = new SettingsWindowListener(mainMenu, settingsFrame); + SettingsPanel settingsPanel = new SettingsPanel(mainMenu, settingsFrame); + settingsFrame.addWindowListener(windowListener); + settingsFrame.add(settingsPanel); + settingsFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + } } diff --git a/TestV2/src/fr/monkhanny/dorfromantik/controller/MainMenuButtonController.java b/TestV2/src/fr/monkhanny/dorfromantik/controller/MainMenuButtonController.java index d9fbdb3..611d3ed 100644 --- a/TestV2/src/fr/monkhanny/dorfromantik/controller/MainMenuButtonController.java +++ b/TestV2/src/fr/monkhanny/dorfromantik/controller/MainMenuButtonController.java @@ -18,7 +18,7 @@ public class MainMenuButtonController implements ActionListener { private JFrame settingsFrame; - public MainMenuButtonController(MainMenu mainMenu) { + public MainMenuButtonController(MainMenu mainMenu, JFrame settingsFrame) { this.mainMenu = mainMenu; // Ajouter les écouteurs d'événements sur les boutons ButtonPanel buttonPanel = mainMenu.getButtonPanel(); @@ -31,7 +31,7 @@ public class MainMenuButtonController implements ActionListener { buttonPanel.getExitButton().addActionListener(this); // Créer la fenêtre des paramètres - this.settingsFrame = new JFrame("Paramètres"); + this.settingsFrame = settingsFrame; this.settingsFrame.setLocationRelativeTo(null); this.settingsFrame.setVisible(false); } @@ -89,21 +89,11 @@ public class MainMenuButtonController implements ActionListener { // Ajuster la fenêtre des paramètres pour qu'elle ait la même taille et position this.settingsFrame.setSize(mainMenuSize); this.settingsFrame.setLocation(mainMenuLocation); - this.settingsFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); - - // Ajouter l'écouteur pour gérer la fermeture de la fenêtre des paramètres - SettingsWindowListener windowListener = new SettingsWindowListener(mainMenu, settingsFrame); - this.settingsFrame.addWindowListener(windowListener); // Cacher la fenêtre du menu principal this.mainMenu.setVisible(false); - // Créer et ajouter le panneau des paramètres - SettingsPanel settingsPanel = new SettingsPanel(mainMenu, settingsFrame); - this.settingsFrame.add(settingsPanel); - // Afficher la fenêtre des paramètres this.settingsFrame.setVisible(true); - return; } } diff --git a/TestV2/src/fr/monkhanny/dorfromantik/gui/SettingsPanel.java b/TestV2/src/fr/monkhanny/dorfromantik/gui/SettingsPanel.java index ce10788..3b78b06 100644 --- a/TestV2/src/fr/monkhanny/dorfromantik/gui/SettingsPanel.java +++ b/TestV2/src/fr/monkhanny/dorfromantik/gui/SettingsPanel.java @@ -43,14 +43,14 @@ public class SettingsPanel extends JPanel { // Musique Panel JSlider musicSlider = new JSlider(0, 100, Options.MUSIC_MUTED ? 0 : Options.MUSIC_VOLUME); - JPanel musicPanel = createSoundPanel("Musique", Options.MUSIC_MUTED, Options.MUSIC_VOLUME, musicSlider, new MusicVolumeChangeListener(musicSlider), new MuteCheckBoxListener("Musique")); + JPanel musicPanel = createSoundPanel("Musique", musicSlider, new MusicVolumeChangeListener(musicSlider), new MuteCheckBoxListener("Musique")); mainPanel.add(musicPanel, createGridBagConstraints(0, 2, 1)); mainPanel.add(Box.createVerticalStrut(30), createGridBagConstraints(0, 3, 1)); // SFX Panel JSlider sfxSlider = new JSlider(0, 100, Options.SOUNDS_MUTED ? 0 : Options.SOUNDS_VOLUME); - JPanel sfxPanel = createSoundPanel("SFX", Options.SOUNDS_MUTED, Options.SOUNDS_VOLUME, sfxSlider, new SoundsVolumeChangeListener(sfxSlider), new MuteCheckBoxListener("SFX")); + JPanel sfxPanel = createSoundPanel("SFX", sfxSlider, new SoundsVolumeChangeListener(sfxSlider), new MuteCheckBoxListener("SFX")); mainPanel.add(sfxPanel, createGridBagConstraints(0, 4, 1)); // Close Button @@ -82,7 +82,7 @@ public class SettingsPanel extends JPanel { return gbc; } - private JPanel createSoundPanel(String labelText, boolean isMuted, int initialVolume, JSlider volumeSlider, ChangeListener sliderChangeListener, MuteCheckBoxListener muteCheckBoxListener) { + private JPanel createSoundPanel(String labelText, JSlider volumeSlider, ChangeListener sliderChangeListener, MuteCheckBoxListener muteCheckBoxListener) { JPanel panel = new JPanel(new GridBagLayout()); panel.setOpaque(false); @@ -91,7 +91,7 @@ public class SettingsPanel extends JPanel { gbc.gridx = 0; JCheckBox muteCheckBox = new JCheckBox(); - muteCheckBox.setSelected(!isMuted); + muteCheckBox.setSelected(!("Musique".equals(labelText) ? Options.MUSIC_MUTED : Options.SOUNDS_MUTED)); muteCheckBox.addActionListener(muteCheckBoxListener); panel.add(new JLabel(labelText), gbc); diff --git a/TestV2/src/fr/monkhanny/dorfromantik/listeners/MusicVolumeChangeListener.java b/TestV2/src/fr/monkhanny/dorfromantik/listeners/MusicVolumeChangeListener.java index 0d01523..7998eaa 100644 --- a/TestV2/src/fr/monkhanny/dorfromantik/listeners/MusicVolumeChangeListener.java +++ b/TestV2/src/fr/monkhanny/dorfromantik/listeners/MusicVolumeChangeListener.java @@ -17,8 +17,7 @@ public class MusicVolumeChangeListener implements ChangeListener { @Override public void stateChanged(ChangeEvent e) { // Récupérer la valeur du slider spécifique - int volume = slider.getValue(); - Options.MUSIC_VOLUME = volume; // Mettre à jour le volume dans Options - MusicPlayer.setVolume(MusicPlayer.getMusicClip(), volume); // Appliquer la nouvelle valeur du volume à la musique + Options.MUSIC_VOLUME = slider.getValue(); + MusicPlayer.setVolume(MusicPlayer.getMusicClip(), Options.MUSIC_VOLUME); } }