Correction des bugs de son + amélioration du code pour des meilleurs performances

This commit is contained in:
2024-11-12 20:56:37 +01:00
parent 951a25e295
commit 5fc7b5f37d
4 changed files with 26 additions and 20 deletions

View File

@@ -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);
}
}

View File

@@ -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;
}
}

View File

@@ -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);

View File

@@ -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);
}
}