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
|
2024-12-05 16:02:08 +01:00
|
|
|
gameModeFrame = new JFrame("Choix des séries - Dorfromantik");
|
2024-12-02 20:51:28 +01:00
|
|
|
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
|
|
|
|
}
|
|
|
|
}
|