diff --git a/src/fr/monkhanny/dorfromantik/game/Board.java b/src/fr/monkhanny/dorfromantik/game/Board.java index c2b4409..f35e790 100644 --- a/src/fr/monkhanny/dorfromantik/game/Board.java +++ b/src/fr/monkhanny/dorfromantik/game/Board.java @@ -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(); diff --git a/src/fr/monkhanny/dorfromantik/game/EscapeMenu.java b/src/fr/monkhanny/dorfromantik/game/EscapeMenu.java index 79264bb..a6ab615 100644 --- a/src/fr/monkhanny/dorfromantik/game/EscapeMenu.java +++ b/src/fr/monkhanny/dorfromantik/game/EscapeMenu.java @@ -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); + } } diff --git a/src/fr/monkhanny/dorfromantik/game/GameOver.java b/src/fr/monkhanny/dorfromantik/game/GameOver.java index f2d1df1..27c1ba1 100644 --- a/src/fr/monkhanny/dorfromantik/game/GameOver.java +++ b/src/fr/monkhanny/dorfromantik/game/GameOver.java @@ -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 diff --git a/src/fr/monkhanny/dorfromantik/game/MainMenuButtonListener.java b/src/fr/monkhanny/dorfromantik/game/MainMenuButtonListener.java index 11e1a0d..482ba9f 100644 --- a/src/fr/monkhanny/dorfromantik/game/MainMenuButtonListener.java +++ b/src/fr/monkhanny/dorfromantik/game/MainMenuButtonListener.java @@ -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(); } -} +} \ No newline at end of file diff --git a/src/fr/monkhanny/dorfromantik/game/PauseGame.java b/src/fr/monkhanny/dorfromantik/game/PauseGame.java index 59823e2..fdbff47 100644 --- a/src/fr/monkhanny/dorfromantik/game/PauseGame.java +++ b/src/fr/monkhanny/dorfromantik/game/PauseGame.java @@ -11,33 +11,33 @@ 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 public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ESCAPE) { - if (Options.isPaused == false) { + 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.setSettingsButtonListener(this.settingsButtonListener); - } else { - escapeMenu.setVisible(true); - } - escapeMenu.toFront(); + escapeMenu.setResumeButtonListener(this.resumeButtonListener); + escapeMenu.setQuitButtonListener(this.quitButtonListener); + escapeMenu.setSettingsButtonListener(this.settingsButtonListener); + this.escapeMenu.setVisible(true); } + escapeMenu.toFront(); } } -} \ No newline at end of file +} + diff --git a/src/fr/monkhanny/dorfromantik/game/QuitButtonListener.java b/src/fr/monkhanny/dorfromantik/game/QuitButtonListener.java new file mode 100644 index 0000000..b417f25 --- /dev/null +++ b/src/fr/monkhanny/dorfromantik/game/QuitButtonListener.java @@ -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); + } +} diff --git a/src/fr/monkhanny/dorfromantik/game/ResumeButtonListener.java b/src/fr/monkhanny/dorfromantik/game/ResumeButtonListener.java index 5e2106a..f72d549 100644 --- a/src/fr/monkhanny/dorfromantik/game/ResumeButtonListener.java +++ b/src/fr/monkhanny/dorfromantik/game/ResumeButtonListener.java @@ -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 } } diff --git a/src/fr/monkhanny/dorfromantik/game/SettingsButtonListener.java b/src/fr/monkhanny/dorfromantik/game/SettingsButtonListener.java index 398ddec..7a518c2 100644 --- a/src/fr/monkhanny/dorfromantik/game/SettingsButtonListener.java +++ b/src/fr/monkhanny/dorfromantik/game/SettingsButtonListener.java @@ -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; } -} \ No newline at end of file +}