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

134 lines
5.3 KiB
Java

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.ImageIcon;
import javax.swing.JFrame;
/**
* Classe principale du jeu
* @version 1.0
* @author Moncef STITI
* @see MainMenu
* @see MainMenuResizeController
*/
public class Main {
/**
* Fenêtres de choix des modes de jeu
*/
private static JFrame gameModeFrame;
/**
* Fenêtres de jeu
*/
private static JFrame gameFrame;
/**
* Fenêtres des paramètres
*/
private static JFrame settingsFrame;
/**
* Fenêtres du tutoriel
*/
private static JFrame howToPlayFrame;
/**
* Indique si la musique a déjà été jouée
*/
private static boolean isMusicPlayed = false;
/**
* Réinitialiser le jeu
*/
@SuppressWarnings("unused")
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
ImageIcon icon = new ImageIcon("./ressources/images/Application/Application_Icon.jpg");
gameModeFrame = new JFrame("Choix des séries - Dorfromantik");
gameModeFrame.setMinimumSize(Options.MINIMUM_FRAME_SIZE);
gameModeFrame.setIconImage(icon.getImage());
gameFrame = new JFrame("Jeu - Dorfromantik");
gameFrame.setIconImage(icon.getImage());
gameFrame.setMinimumSize(Options.MINIMUM_FRAME_SIZE);
settingsFrame = new JFrame("Paramètres - Dorfromantik");
settingsFrame.setIconImage(icon.getImage());
settingsFrame.setMinimumSize(Options.MINIMUM_FRAME_SIZE);
howToPlayFrame = new JFrame("Comment jouer ? - Dorfromantik");
howToPlayFrame.setIconImage(icon.getImage());
howToPlayFrame.setMinimumSize(Options.MINIMUM_FRAME_SIZE);
// 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);
// 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);
}
/**
* Méthode principale du jeu
* @param args Arguments de la ligne de commande
*/
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
}
}