javadoc
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
@@ -13,16 +13,53 @@ 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;
|
||||
@@ -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,30 +148,35 @@ 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);
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user