Modification du menu de pause

This commit is contained in:
2024-12-04 18:00:23 +01:00
parent 6c1dc57cc9
commit bf787f8e1b
8 changed files with 75 additions and 35 deletions

View File

@@ -99,6 +99,10 @@ public class Board extends JPanel{
}
public void handleMouseMove(java.awt.event.MouseEvent e) {
if (Options.isPaused) {
return;
}
// Récupérer les coordonnées du curseur
Point cursorPoint = e.getPoint();
@@ -131,6 +135,10 @@ public class Board extends JPanel{
public Tile getNextTile() { return nextTile; }
public void handleSpaceKeyPress() {
if (Options.isPaused) {
return;
}
// Calculer les dimensions totales du plateau (largeur et hauteur des tuiles)
int totalWidth = 0;
int totalHeight = 0;
@@ -171,6 +179,10 @@ public class Board extends JPanel{
public void handleMouseClick(java.awt.event.MouseEvent e) {
if (Options.isPaused) {
return;
}
// Récupérer les coordonnées du clic
Point clickedPoint = e.getPoint();

View File

@@ -16,6 +16,8 @@ public class EscapeMenu extends JFrame {
// Paramétrer la fenêtre de la pause
setTitle("Menu de Pause");
setSize(550, 200); // Taille de la fenêtre
setMaximumSize(new Dimension(550,200));
setMinimumSize(new Dimension(550,200));
setLocationRelativeTo(gameFrame); // Centrer la fenêtre sur le jeu
setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); // Fermer sans quitter l'application
setLayout(new BorderLayout()); // Utiliser BorderLayout pour gérer les composants
@@ -42,7 +44,7 @@ public class EscapeMenu extends JFrame {
// Créer les boutons et ajouter les écouteurs d'événements
resumeButton = createButton("Reprendre");
settingsButton = createButton("Paramètres");
mainMenuButton = createButton("Menu Principal");
mainMenuButton = createButton("Quitter");
// Ajouter les boutons dans le panneau
buttonPanel.add(resumeButton);
@@ -70,11 +72,15 @@ public class EscapeMenu extends JFrame {
resumeButton.addActionListener(listener);
}
public void setMainMenuButtonListener(ActionListener listener) {
public void setQuitButtonListener(ActionListener listener) {
mainMenuButton.addActionListener(listener);
}
public void setSettingsButtonListener(ActionListener listener) {
settingsButton.addActionListener(listener);
}
public void setMenuVisible(boolean visible) {
setVisible(visible);
}
}

View File

@@ -145,7 +145,7 @@ public class GameOver extends JPanel {
returnButton.setForeground(Color.BLACK); // Couleur du texte du bouton
// Ajouter un listener d'action au bouton
MainMenuButtonListener listener = new MainMenuButtonListener(gameFrame, null, null);
MainMenuButtonListener listener = new MainMenuButtonListener(gameFrame);
returnButton.addActionListener(listener);
// Ajouter le bouton au panneau principal

View File

@@ -6,22 +6,18 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import fr.monkhanny.dorfromantik.Options;
import fr.monkhanny.dorfromantik.gui.MainMenu;
public class MainMenuButtonListener implements ActionListener {
private JFrame gameFrame;
private Game game;
private EscapeMenu escapeMenu;
public MainMenuButtonListener(JFrame gameFrame, Game game, EscapeMenu escapeMenu) {
public MainMenuButtonListener(JFrame gameFrame) {
this.gameFrame = gameFrame;
this.game = game;
this.escapeMenu = escapeMenu;
}
@Override
public void actionPerformed(ActionEvent e) {
this.gameFrame.setVisible(false);
Main.resetGame();
}
}

View File

@@ -11,15 +11,19 @@ public class PauseGame extends KeyAdapter {
private Game game;
private EscapeMenu escapeMenu;
private ResumeButtonListener resumeButtonListener;
private MainMenuButtonListener mainMenuButtonListener;
private QuitButtonListener quitButtonListener;
private SettingsButtonListener settingsButtonListener;
public PauseGame(JFrame gameFrame, Game game) {
this.gameFrame = gameFrame;
this.game = game;
this.resumeButtonListener = new ResumeButtonListener(gameFrame);
this.mainMenuButtonListener = null; // Initialisé après la création de escapeMenu
this.settingsButtonListener = new SettingsButtonListener(gameFrame);
// Initialiser escapeMenu ici avant de le passer à SettingsButtonListener
this.escapeMenu = new EscapeMenu(gameFrame, game); // Initialisation ici
this.escapeMenu.setVisible(false);
this.escapeMenu.setAlwaysOnTop(true);
this.resumeButtonListener = new ResumeButtonListener(gameFrame,this.escapeMenu);
this.quitButtonListener = new QuitButtonListener();; // Initialisé après la création de escapeMenu
this.settingsButtonListener = new SettingsButtonListener(gameFrame, this.escapeMenu); // Passer escapeMenu correctement
}
@Override
@@ -27,17 +31,13 @@ public class PauseGame extends KeyAdapter {
if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
if(Options.isPaused == false){
Options.isPaused = true;
if (escapeMenu == null || !escapeMenu.isVisible()) {
escapeMenu = new EscapeMenu(gameFrame, game);
this.mainMenuButtonListener = new MainMenuButtonListener(gameFrame, game, escapeMenu);
escapeMenu.setResumeButtonListener(this.resumeButtonListener);
escapeMenu.setMainMenuButtonListener(this.mainMenuButtonListener);
escapeMenu.setQuitButtonListener(this.quitButtonListener);
escapeMenu.setSettingsButtonListener(this.settingsButtonListener);
} else {
escapeMenu.setVisible(true);
this.escapeMenu.setVisible(true);
}
escapeMenu.toFront();
}
}
}
}

View File

@@ -0,0 +1,18 @@
package fr.monkhanny.dorfromantik.game;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class QuitButtonListener implements ActionListener {
public QuitButtonListener() {
}
@Override
public void actionPerformed(ActionEvent e) {
// Quitter
System.exit(0);
}
}

View File

@@ -8,15 +8,17 @@ import fr.monkhanny.dorfromantik.Options;
public class ResumeButtonListener implements ActionListener {
private JFrame gameFrame;
private EscapeMenu escapeMenu;
public ResumeButtonListener(JFrame gameFrame) {
public ResumeButtonListener(JFrame gameFrame, EscapeMenu escapeMenu) {
this.gameFrame = gameFrame;
this.escapeMenu = escapeMenu;
}
@Override
public void actionPerformed(ActionEvent e) {
// Fermer le menu de pause et afficher le jeu
gameFrame.setVisible(true);
Options.isPaused = false;
// Cacher le menu de pause
escapeMenu.setVisible(false);
Options.isPaused = false; // Mettre à jour l'état du jeu pour qu'il ne soit plus en pause
}
}

View File

@@ -13,9 +13,11 @@ public class SettingsButtonListener implements ActionListener {
private JFrame gameFrame;
private JFrame settingsFrame;
private SettingsPanel settingsPanel;
private EscapeMenu escapeMenu;
public SettingsButtonListener(JFrame gameFrame) {
public SettingsButtonListener(JFrame gameFrame, EscapeMenu escapeMenu) {
this.gameFrame = gameFrame;
this.escapeMenu = escapeMenu;
this.settingsFrame = new JFrame("Paramètres - Dorfromantik");
this.settingsPanel = new SettingsPanel(Options.mainMenu, settingsFrame);
this.settingsPanel.setReturnButtonVisible(false); // On cache le bouton de retour au menu principal
@@ -26,9 +28,13 @@ public class SettingsButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if (escapeMenu != null) { // Vérifier si escapeMenu est non nul
escapeMenu.setVisible(false);
}
// Obtenir la taille et la position de la gameFrame
int width = gameFrame.getWidth();
int height = gameFrame.getHeight();
int width = gameFrame.getWidth() - 50;
int height = gameFrame.getHeight() - 50;
int x = gameFrame.getX();
int y = gameFrame.getY();
@@ -40,8 +46,8 @@ public class SettingsButtonListener implements ActionListener {
settingsFrame.add(this.settingsPanel);
// Cacher la gameFrame et afficher settingsFrame
gameFrame.setVisible(false);
settingsFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
settingsFrame.setVisible(true);
Options.isPaused = false;
}
}