diff --git a/src/fr/monkhanny/dorfromantik/controller/ButtonHoverListener.java b/src/fr/monkhanny/dorfromantik/controller/ButtonHoverListener.java index fdce4fe..0c32710 100644 --- a/src/fr/monkhanny/dorfromantik/controller/ButtonHoverListener.java +++ b/src/fr/monkhanny/dorfromantik/controller/ButtonHoverListener.java @@ -7,23 +7,52 @@ import fr.monkhanny.dorfromantik.enums.Sounds; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +/** + * Listener pour gérer les interactions de survol avec un bouton. + * Ce listener déclenche une animation et un effet sonore lorsqu'un bouton est survolé ou quitté par la souris. + * + * @version 1.0 + * @author Moncef STITI, Lenny FOULOU + */ public class ButtonHoverListener extends MouseAdapter { + /** + * Gestionnaire d'animation pour le survol du bouton. + */ private final ButtonHoverAnimator animator; + /** + * Constructeur pour initialiser le listener avec un animateur. + * + * @param animator Instance de {@link ButtonHoverAnimator} pour gérer l'animation du bouton + */ public ButtonHoverListener(ButtonHoverAnimator animator) { this.animator = animator; } + /** + * Déclenché lorsque la souris entre dans la zone du bouton. + * Démarre l'animation de survol et joue un son. + * + * @param e Événement de souris + * @see MouseEvent + */ @Override public void mouseEntered(MouseEvent e) { - animator.startAnimation(true); - MusicPlayer.loadSound(Sounds.SOUNDS1); // Charge le son - MusicPlayer.playSound(); // Joue le son + animator.startAnimation(true); // Démarre l'animation de survol + MusicPlayer.loadSound(Sounds.SOUNDS1); // Charge le son + MusicPlayer.playSound(); // Joue le son } + /** + * Déclenché lorsque la souris quitte la zone du bouton. + * Arrête l'animation de survol. + * + * @param e Événement de souris + * @see MouseEvent + */ @Override public void mouseExited(MouseEvent e) { - animator.startAnimation(false); + animator.startAnimation(false); // Arrête l'animation de survol } } diff --git a/src/fr/monkhanny/dorfromantik/controller/GameModeController.java b/src/fr/monkhanny/dorfromantik/controller/GameModeController.java index d5cba55..f54099a 100644 --- a/src/fr/monkhanny/dorfromantik/controller/GameModeController.java +++ b/src/fr/monkhanny/dorfromantik/controller/GameModeController.java @@ -13,21 +13,58 @@ import java.sql.SQLException; import java.awt.Dimension; import java.awt.Point; +/** + * Contrôleur pour gérer les interactions liées à la sélection du mode de jeu. + * Cette classe gère les actions déclenchées depuis l'interface de sélection de mode de jeu, + * comme le démarrage d'une partie ou la récupération de seeds depuis une base de données. + * + * @version 1.0 + * @author Moncef STITI, Khalid CHENOUNA + */ public class GameModeController implements ActionListener { + /** + * Panneau de sélection du mode de jeu. + */ private GameModeSelectionPanel gameModeSelectionPanel; + + /** + * Fenêtre principale du jeu. + */ private JFrame gameFrame; + + /** + * Menu principal de l'application. + */ private MainMenu mainMenu; - private Database database; + + /** + * Fenêtre de sélection du mode de jeu. + */ private JFrame gameModeFrame; + + /** + * Instance de la base de données pour gérer les seeds. + */ + private Database database; + + /** + * Instance du plateau de jeu actif. + */ private static Board board; - // Constructeur sans le panneau + /** + * Constructeur pour initialiser le contrôleur sans panneau de sélection. + * + * @param gameFrame Fenêtre principale du jeu + * @param mainMenu Menu principal + * @param gameModeFrame Fenêtre de sélection du mode de jeu + */ public GameModeController(JFrame gameFrame, MainMenu mainMenu, JFrame gameModeFrame) { this.gameFrame = gameFrame; this.mainMenu = mainMenu; this.gameModeFrame = gameModeFrame; - + // Connexion à la base de données try { this.database = new Database(); @@ -36,37 +73,56 @@ public class GameModeController implements ActionListener { } } - // Méthode pour associer le panneau + /** + * Associe le panneau de sélection du mode de jeu à ce contrôleur. + * + * @param panel Panneau de sélection du mode de jeu + */ public void setGameModeSelectionPanel(GameModeSelectionPanel panel) { this.gameModeSelectionPanel = panel; } + /** + * Gère les actions déclenchées par des événements utilisateur, comme le choix ou le démarrage d'un mode de jeu. + * + * @param e Événement d'action + */ @Override -public void actionPerformed(ActionEvent e) { - String command = e.getActionCommand(); + public void actionPerformed(ActionEvent e) { + String command = e.getActionCommand(); - // Handle any series dynamically - if (isDynamicSeries(command)) { - startGame(getSeedFromDatabaseByName(command)); - } else if (command.equals("Démarrer")) { - long seed = gameModeSelectionPanel.getLongSeed(); - startGame(seed); - addCustomSeedToDatabase(seed); - } else { - System.out.println("Commande inconnue: " + command); + if (isDynamicSeries(command)) { + startGame(getSeedFromDatabaseByName(command)); + } else if (command.equals("Démarrer")) { + long seed = gameModeSelectionPanel.getLongSeed(); + startGame(seed); + addCustomSeedToDatabase(seed); + } else { + System.out.println("Commande inconnue: " + command); + } } -} + /** + * Récupère une seed depuis la base de données en fonction du nom du mode de jeu. + * + * @param modeName Nom du mode de jeu + * @return La seed associée au mode de jeu, ou -1 en cas d'erreur + */ private long getSeedFromDatabaseByName(String modeName) { try { Options.SEED = this.database.getSeedByName(modeName); return Options.SEED; } catch (SQLException e) { e.printStackTrace(); - return -1; // Retourner une valeur par défaut si une erreur survient + return -1; } } + /** + * Ajoute une seed personnalisée dans la base de données. + * + * @param seed La seed à ajouter + */ private void addCustomSeedToDatabase(long seed) { try { Options.SEED = seed; @@ -77,9 +133,14 @@ public void actionPerformed(ActionEvent e) { } } + /** + * Vérifie si une série est dynamique en vérifiant son existence dans la base de données. + * + * @param seriesName Nom de la série + * @return {@code true} si la série est dynamique, {@code false} sinon + */ private boolean isDynamicSeries(String seriesName) { try { - // Check if the series exists in the database return database.getSeedByName(seriesName) != -1; } catch (SQLException e) { e.printStackTrace(); @@ -87,31 +148,36 @@ public void actionPerformed(ActionEvent e) { } } + /** + * Démarre une partie avec une seed spécifique. + * + * @param seed La seed utilisée pour démarrer le jeu + */ private void startGame(long seed) { - // Supprimer la potentielle ancienne instance de board GameModeController.board = null; - - // Cacher la fenêtre de sélection de mode this.gameModeFrame.setVisible(false); - - // Cacher la fenêtre avant de faire des modifications this.gameFrame.setVisible(false); if (Options.FULL_SCREEN) { - gameFrame.setExtendedState(JFrame.MAXIMIZED_BOTH); // Set frame to full screen + gameFrame.setExtendedState(JFrame.MAXIMIZED_BOTH); } else { Dimension mainMenuSize = this.mainMenu.getSize(); Point mainMenuLocation = this.mainMenu.getLocation(); gameFrame.setSize(mainMenuSize); - gameFrame.setLocation(mainMenuLocation); + gameFrame.setLocation(mainMenuLocation); } - GameModeController.board = new Board(this.gameFrame,seed); - //this.gameModeFrame.setVisible(false); + + GameModeController.board = new Board(this.gameFrame, seed); this.gameFrame.setVisible(true); this.gameFrame.add(board); } + /** + * Récupère le plateau de jeu actif. + * + * @return Le plateau de jeu actif + */ public static Board getGameModeBoard() { return board; } -} \ No newline at end of file +}