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.MouseAdapter;
|
||||||
import java.awt.event.MouseEvent;
|
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 {
|
public class ButtonHoverListener extends MouseAdapter {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gestionnaire d'animation pour le survol du bouton.
|
||||||
|
*/
|
||||||
private final ButtonHoverAnimator animator;
|
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) {
|
public ButtonHoverListener(ButtonHoverAnimator animator) {
|
||||||
this.animator = 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
|
@Override
|
||||||
public void mouseEntered(MouseEvent e) {
|
public void mouseEntered(MouseEvent e) {
|
||||||
animator.startAnimation(true);
|
animator.startAnimation(true); // Démarre l'animation de survol
|
||||||
MusicPlayer.loadSound(Sounds.SOUNDS1); // Charge le son
|
MusicPlayer.loadSound(Sounds.SOUNDS1); // Charge le son
|
||||||
MusicPlayer.playSound(); // Joue 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
|
@Override
|
||||||
public void mouseExited(MouseEvent e) {
|
public void mouseExited(MouseEvent e) {
|
||||||
animator.startAnimation(false);
|
animator.startAnimation(false); // Arrête l'animation de survol
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -13,21 +13,58 @@ import java.sql.SQLException;
|
|||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.Point;
|
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 {
|
public class GameModeController implements ActionListener {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Panneau de sélection du mode de jeu.
|
||||||
|
*/
|
||||||
private GameModeSelectionPanel gameModeSelectionPanel;
|
private GameModeSelectionPanel gameModeSelectionPanel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fenêtre principale du jeu.
|
||||||
|
*/
|
||||||
private JFrame gameFrame;
|
private JFrame gameFrame;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Menu principal de l'application.
|
||||||
|
*/
|
||||||
private MainMenu mainMenu;
|
private MainMenu mainMenu;
|
||||||
private Database database;
|
|
||||||
|
/**
|
||||||
|
* Fenêtre de sélection du mode de jeu.
|
||||||
|
*/
|
||||||
private JFrame gameModeFrame;
|
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;
|
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) {
|
public GameModeController(JFrame gameFrame, MainMenu mainMenu, JFrame gameModeFrame) {
|
||||||
this.gameFrame = gameFrame;
|
this.gameFrame = gameFrame;
|
||||||
this.mainMenu = mainMenu;
|
this.mainMenu = mainMenu;
|
||||||
this.gameModeFrame = gameModeFrame;
|
this.gameModeFrame = gameModeFrame;
|
||||||
|
|
||||||
// Connexion à la base de données
|
// Connexion à la base de données
|
||||||
try {
|
try {
|
||||||
this.database = new Database();
|
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) {
|
public void setGameModeSelectionPanel(GameModeSelectionPanel panel) {
|
||||||
this.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
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
String command = e.getActionCommand();
|
String command = e.getActionCommand();
|
||||||
|
|
||||||
// Handle any series dynamically
|
if (isDynamicSeries(command)) {
|
||||||
if (isDynamicSeries(command)) {
|
startGame(getSeedFromDatabaseByName(command));
|
||||||
startGame(getSeedFromDatabaseByName(command));
|
} else if (command.equals("Démarrer")) {
|
||||||
} else if (command.equals("Démarrer")) {
|
long seed = gameModeSelectionPanel.getLongSeed();
|
||||||
long seed = gameModeSelectionPanel.getLongSeed();
|
startGame(seed);
|
||||||
startGame(seed);
|
addCustomSeedToDatabase(seed);
|
||||||
addCustomSeedToDatabase(seed);
|
} else {
|
||||||
} else {
|
System.out.println("Commande inconnue: " + command);
|
||||||
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) {
|
private long getSeedFromDatabaseByName(String modeName) {
|
||||||
try {
|
try {
|
||||||
Options.SEED = this.database.getSeedByName(modeName);
|
Options.SEED = this.database.getSeedByName(modeName);
|
||||||
return Options.SEED;
|
return Options.SEED;
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
e.printStackTrace();
|
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) {
|
private void addCustomSeedToDatabase(long seed) {
|
||||||
try {
|
try {
|
||||||
Options.SEED = seed;
|
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) {
|
private boolean isDynamicSeries(String seriesName) {
|
||||||
try {
|
try {
|
||||||
// Check if the series exists in the database
|
|
||||||
return database.getSeedByName(seriesName) != -1;
|
return database.getSeedByName(seriesName) != -1;
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
e.printStackTrace();
|
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) {
|
private void startGame(long seed) {
|
||||||
// Supprimer la potentielle ancienne instance de board
|
|
||||||
GameModeController.board = null;
|
GameModeController.board = null;
|
||||||
|
|
||||||
// Cacher la fenêtre de sélection de mode
|
|
||||||
this.gameModeFrame.setVisible(false);
|
this.gameModeFrame.setVisible(false);
|
||||||
|
|
||||||
// Cacher la fenêtre avant de faire des modifications
|
|
||||||
this.gameFrame.setVisible(false);
|
this.gameFrame.setVisible(false);
|
||||||
|
|
||||||
if (Options.FULL_SCREEN) {
|
if (Options.FULL_SCREEN) {
|
||||||
gameFrame.setExtendedState(JFrame.MAXIMIZED_BOTH); // Set frame to full screen
|
gameFrame.setExtendedState(JFrame.MAXIMIZED_BOTH);
|
||||||
} else {
|
} else {
|
||||||
Dimension mainMenuSize = this.mainMenu.getSize();
|
Dimension mainMenuSize = this.mainMenu.getSize();
|
||||||
Point mainMenuLocation = this.mainMenu.getLocation();
|
Point mainMenuLocation = this.mainMenu.getLocation();
|
||||||
gameFrame.setSize(mainMenuSize);
|
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.setVisible(true);
|
||||||
this.gameFrame.add(board);
|
this.gameFrame.add(board);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Récupère le plateau de jeu actif.
|
||||||
|
*
|
||||||
|
* @return Le plateau de jeu actif
|
||||||
|
*/
|
||||||
public static Board getGameModeBoard() {
|
public static Board getGameModeBoard() {
|
||||||
return board;
|
return board;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user