Amélioration #1

This commit is contained in:
2024-12-03 10:14:33 +01:00
parent 201d164065
commit f2822db056
7 changed files with 152 additions and 57 deletions

View File

@@ -4,24 +4,25 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import fr.monkhanny.dorfromantik.Main;
import fr.monkhanny.dorfromantik.Options;
public class MainMenuButtonListener implements ActionListener {
private JFrame gameFrame;
private Game game;
private EscapeMenu escapeMenu;
public MainMenuButtonListener(JFrame gameFrame, Game game) {
public MainMenuButtonListener(JFrame gameFrame, Game game, EscapeMenu escapeMenu) {
this.gameFrame = gameFrame;
this.game = game;
this.escapeMenu = escapeMenu;
}
@Override
public void actionPerformed(ActionEvent e) {
// Réinitialiser le jeu
//Main.resetGame();
// ou
// Fermer la fenêtre de pause
if (escapeMenu != null) {
escapeMenu.setVisible(false);
}
// Fermer la fenêtre de jeu et revenir au menu principal
gameFrame.setVisible(false);

View File

@@ -10,28 +10,34 @@ public class PauseGame extends KeyAdapter {
private JFrame gameFrame;
private Game game;
private EscapeMenu escapeMenu;
private ResumeButtonListener resumeButtonListener;
private MainMenuButtonListener mainMenuButtonListener;
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);
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
if (Options.isPaused == false) {
// Afficher le menu de pause seulement si aucun menu n'est déjà ouvert
Options.isPaused = true;
if (escapeMenu == null || !escapeMenu.isVisible()) {
escapeMenu = new EscapeMenu(gameFrame, game);
escapeMenu.setResumeButtonListener(new ResumeButtonListener(gameFrame));
escapeMenu.setMainMenuButtonListener(new MainMenuButtonListener(gameFrame, game));
escapeMenu.setSettingsButtonListener(new SettingsButtonListener(gameFrame));
this.mainMenuButtonListener = new MainMenuButtonListener(gameFrame, game, escapeMenu);
escapeMenu.setResumeButtonListener(this.resumeButtonListener);
escapeMenu.setMainMenuButtonListener(this.mainMenuButtonListener);
escapeMenu.setSettingsButtonListener(this.settingsButtonListener);
} else {
escapeMenu.setVisible(true); // Si la fenêtre est déjà ouverte, la rendre visible
escapeMenu.setVisible(true);
}
escapeMenu.toFront(); // Mettre la fenêtre au premier plan
escapeMenu.toFront();
}
}
}
}
}

View File

@@ -1,18 +1,47 @@
package fr.monkhanny.dorfromantik.game;
import fr.monkhanny.dorfromantik.Options;
import fr.monkhanny.dorfromantik.gui.SettingsPanel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class SettingsButtonListener implements ActionListener {
private JFrame gameFrame;
private JFrame settingsFrame;
private SettingsPanel settingsPanel;
public SettingsButtonListener(JFrame gameFrame) {
this.gameFrame = gameFrame;
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
// Ajouter le WindowListener pour réafficher la gameFrame lors de la fermeture de settingsFrame
this.settingsFrame.addWindowListener(new SettingsWindowListener(gameFrame));
}
@Override
public void actionPerformed(ActionEvent e) {
// Obtenir la taille et la position de la gameFrame
int width = gameFrame.getWidth();
int height = gameFrame.getHeight();
int x = gameFrame.getX();
int y = gameFrame.getY();
// Appliquer ces dimensions et position à settingsFrame
settingsFrame.setSize(width, height);
settingsFrame.setLocation(x, y);
// Ajouter le panneau des paramètres si ce n'est pas déjà fait
settingsFrame.add(this.settingsPanel);
// Cacher la gameFrame et afficher settingsFrame
gameFrame.setVisible(false);
settingsFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
settingsFrame.setVisible(true);
}
}
}

View File

@@ -0,0 +1,49 @@
package fr.monkhanny.dorfromantik.game;
import javax.swing.JFrame;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class SettingsWindowListener implements WindowListener {
private JFrame gameFrame;
public SettingsWindowListener(JFrame gameFrame) {
this.gameFrame = gameFrame;
}
@Override
public void windowOpened(WindowEvent e) {
// Rien à faire ici
}
@Override
public void windowClosing(WindowEvent e) {
// Réafficher la gameFrame
gameFrame.setVisible(true);
}
@Override
public void windowClosed(WindowEvent e) {
// Rien à faire ici
}
@Override
public void windowIconified(WindowEvent e) {
// Rien à faire ici
}
@Override
public void windowDeiconified(WindowEvent e) {
// Rien à faire ici
}
@Override
public void windowActivated(WindowEvent e) {
// Rien à faire ici
}
@Override
public void windowDeactivated(WindowEvent e) {
// Rien à faire ici
}
}