Files
SAE31_2024/src/fr/monkhanny/dorfromantik/Main.java

99 lines
4.4 KiB
Java
Raw Normal View History

2024-12-02 20:51:28 +01:00
package fr.monkhanny.dorfromantik;
import fr.monkhanny.dorfromantik.gui.MainMenu;
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.CloseWindowListener;
import fr.monkhanny.dorfromantik.gui.SettingsPanel;
import fr.monkhanny.dorfromantik.controller.TutorialController;
import fr.monkhanny.dorfromantik.controller.GameModeController;
import fr.monkhanny.dorfromantik.gui.GameModeSelectionPanel;
import javax.swing.JFrame;
/**
* Classe principale du jeu
* @version 1.0
* @author Moncef STITI
* @see MainMenu
* @see MainMenuResizeController
*/
public class Main {
private static JFrame gameModeFrame;
private static JFrame gameFrame;
private static JFrame settingsFrame;
private static JFrame howToPlayFrame;
// Variable statique pour savoir si la musique a été jouée
private static boolean isMusicPlayed = false;
// Fonction pour réinitialiser tout le jeu
2024-12-04 18:06:34 +01:00
@SuppressWarnings("unused")
2024-12-02 20:51:28 +01:00
public static void resetGame() {
// 1. Fermer toutes les fenêtres ouvertes
if (gameModeFrame != null) {
gameModeFrame.dispose(); // Ferme la fenêtre du choix des modes de jeu
}
if (gameFrame != null) {
gameFrame.dispose(); // Ferme la fenêtre de jeu
}
if (settingsFrame != null) {
settingsFrame.dispose(); // Ferme la fenêtre des paramètres
}
if (howToPlayFrame != null) {
howToPlayFrame.dispose(); // Ferme la fenêtre du tutoriel
}
// 2. Réinitialiser les variables globales ou statiques si nécessaire
Options.mainMenu = new MainMenu(); // Réinitialiser le menu principal
// 3. Lancer la musique uniquement si ce n'est pas déjà fait
if (!isMusicPlayed) {
MusicPlayer.loadMusic(Musics.MAIN_MENU_MUSIC); // Recharger la musique du menu principal
MusicPlayer.playMusic(); // Reprendre la musique
isMusicPlayed = true; // Marquer la musique comme jouée
}
// 4. Créer les fenêtres à nouveau comme au début
gameModeFrame = new JFrame("Choix des modes de jeu - Dorfromantik");
gameFrame = new JFrame("Jeu - Dorfromantik");
settingsFrame = new JFrame("Paramètres - Dorfromantik");
howToPlayFrame = new JFrame("Comment jouer ? - Dorfromantik");
2024-12-03 10:14:33 +01:00
2024-12-02 20:51:28 +01:00
// Re-créer et réinitialiser les panels et les contrôleurs
MainMenuResizeController mainMenuResizeController = new MainMenuResizeController(Options.mainMenu);
2024-12-03 11:41:20 +01:00
MainMenuButtonController mainMenuButtonController = new MainMenuButtonController(Options.mainMenu, settingsFrame, howToPlayFrame, gameModeFrame, gameFrame);
2024-12-02 20:51:28 +01:00
// Fenêtre des paramètres
CloseWindowListener settingsWindowListener = new CloseWindowListener(Options.mainMenu, settingsFrame);
SettingsPanel settingsPanel = new SettingsPanel(Options.mainMenu, settingsFrame);
settingsFrame.addWindowListener(settingsWindowListener);
settingsFrame.add(settingsPanel);
// Fenêtre du tutoriel
CloseWindowListener howToPlayWindowListener = new CloseWindowListener(Options.mainMenu, howToPlayFrame);
TutorialController tutorialController = new TutorialController(Options.mainMenu, howToPlayFrame);
howToPlayFrame.addWindowListener(howToPlayWindowListener);
howToPlayFrame.add(tutorialController.getTutorialPanel());
// Fenêtre du choix des modes de jeu
CloseWindowListener gameModeWindowListener = new CloseWindowListener(Options.mainMenu, gameModeFrame);
GameModeController gameModeController = new GameModeController(gameFrame, Options.mainMenu, gameModeFrame);
GameModeSelectionPanel gameModeSelectionPanel = new GameModeSelectionPanel(gameModeController,gameModeFrame, Options.mainMenu);
gameModeFrame.addWindowListener(gameModeWindowListener);
gameModeController.setGameModeSelectionPanel(gameModeSelectionPanel);
gameModeFrame.add(gameModeSelectionPanel);
// Afficher à nouveau le menu principal
Options.mainMenu.setVisible(true);
}
public static void main(String[] args) {
// Appel initial pour créer les fenêtres et démarrer le jeu
resetGame(); // Appel à la fonction de réinitialisation
}
}