This commit is contained in:
2024-11-06 20:44:36 +01:00
parent b37bdd3476
commit 5f2be94343
6 changed files with 176 additions and 12 deletions

View File

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