2024-11-14 18:30:20 +01:00
|
|
|
package fr.monkhanny.dorfromantik;
|
|
|
|
|
|
|
|
import fr.monkhanny.dorfromantik.gui.MainMenu;
|
2024-11-30 13:33:16 +01:00
|
|
|
import fr.monkhanny.dorfromantik.gui.RewardsPanel;
|
2024-11-14 18:30:20 +01:00
|
|
|
import fr.monkhanny.dorfromantik.controller.MainMenuResizeController;
|
|
|
|
import fr.monkhanny.dorfromantik.controller.MainMenuButtonController;
|
|
|
|
import fr.monkhanny.dorfromantik.utils.MusicPlayer;
|
|
|
|
import fr.monkhanny.dorfromantik.enums.Musics;
|
2024-11-30 13:33:16 +01:00
|
|
|
import fr.monkhanny.dorfromantik.listeners.CloseWindowListener;
|
2024-11-14 18:30:20 +01:00
|
|
|
import fr.monkhanny.dorfromantik.gui.SettingsPanel;
|
2024-11-14 19:21:56 +01:00
|
|
|
import fr.monkhanny.dorfromantik.controller.TutorialController;
|
2024-11-30 13:33:16 +01:00
|
|
|
import fr.monkhanny.dorfromantik.controller.GameModeController;
|
|
|
|
import fr.monkhanny.dorfromantik.gui.GameModeSelectionPanel;
|
2024-11-14 18:30:20 +01:00
|
|
|
|
|
|
|
import javax.swing.JFrame;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Classe principale du jeu
|
|
|
|
* @version 1.0
|
|
|
|
* @author Moncef STITI
|
|
|
|
* @see MainMenu
|
|
|
|
* @see MainMenuResizeController
|
|
|
|
*/
|
|
|
|
public class Main {
|
2024-11-30 13:33:16 +01:00
|
|
|
|
|
|
|
private static JFrame gameModeFrame;
|
|
|
|
private static JFrame gameFrame;
|
|
|
|
private static JFrame settingsFrame;
|
|
|
|
private static JFrame howToPlayFrame;
|
|
|
|
private static JFrame rewardsFrame;
|
|
|
|
|
|
|
|
// Variable statique pour savoir si la musique a été jouée
|
|
|
|
private static boolean isMusicPlayed = false;
|
|
|
|
|
|
|
|
// Fonction pour réinitialiser tout le jeu
|
|
|
|
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
|
|
|
|
}
|
|
|
|
if (rewardsFrame != null) {
|
|
|
|
rewardsFrame.dispose(); // Ferme la fenêtre des récompenses
|
|
|
|
}
|
|
|
|
|
|
|
|
// 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");
|
|
|
|
rewardsFrame = new JFrame("Récompenses - Dorfromantik");
|
|
|
|
|
|
|
|
// Re-créer et réinitialiser les panels et les contrôleurs
|
|
|
|
MainMenuResizeController mainMenuResizeController = new MainMenuResizeController(Options.mainMenu);
|
|
|
|
MainMenuButtonController mainMenuButtonController = new MainMenuButtonController(Options.mainMenu, settingsFrame, howToPlayFrame, gameModeFrame, gameFrame, rewardsFrame);
|
|
|
|
|
|
|
|
// 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.addWindowListener(gameModeWindowListener);
|
|
|
|
gameModeController.setGameModeSelectionPanel(gameModeSelectionPanel);
|
|
|
|
gameModeFrame.add(gameModeSelectionPanel);
|
|
|
|
|
|
|
|
// Fenêtre des récompenses
|
|
|
|
CloseWindowListener rewardsWindowListener = new CloseWindowListener(Options.mainMenu, rewardsFrame);
|
|
|
|
rewardsFrame.addWindowListener(rewardsWindowListener);
|
|
|
|
RewardsPanel rewardsPanel = new RewardsPanel();
|
|
|
|
rewardsFrame.setContentPane(rewardsPanel);
|
|
|
|
rewardsFrame.pack();
|
|
|
|
|
|
|
|
// 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
|
|
|
|
}
|
2024-11-14 18:30:20 +01:00
|
|
|
}
|