Compare commits

..

59 Commits

Author SHA1 Message Date
Katchan
b12dee698f Add rapport 2021-12-09 22:14:38 +01:00
063d57961b first delivery 2021-12-09 21:36:20 +01:00
a4e1831052 fix :client:run 2021-12-09 21:24:51 +01:00
681e8b798f fix build not working 2021-12-09 21:15:23 +01:00
Katchan
cdb11a2de6 Merge remote-tracking branch 'origin/master' 2021-12-09 21:02:06 +01:00
Katchan
06319283bb Imports optimization 2021-12-09 20:57:34 +01:00
Katchan
51a0498886 Add FactoryPattern Javadoc 2021-12-09 20:56:50 +01:00
dcd100cb76 Reworked how work Bomb and Mine, fix Bomb not exploding correctly when player walks on it 2021-12-09 20:26:26 +01:00
80b737ad5f fix DropBomb, DropMine and Shot not using the correct Direction implementation, delete debug messages 2021-12-09 19:55:16 +01:00
af5cbf80c1 add start bash and cmd files 2021-12-09 17:33:14 +01:00
2b77a2a566 Add support to 8 axis to shot action 2021-12-09 16:50:43 +01:00
1b556e5ac8 add javadoc to client.listener 2021-12-09 16:30:11 +01:00
fb408a3f78 update javadoc from package client.view 2021-12-09 16:07:03 +01:00
4caa131a4c add javadoc to client.view 2021-12-09 15:39:45 +01:00
94cd0bb030 Add javadoc to client package (no subpackage) 2021-12-09 14:48:27 +01:00
Katchan
4062f43c40 Merge remote-tracking branch 'origin/master' 2021-12-09 14:19:37 +01:00
Katchan
491f537cae Improve Window view 2021-12-09 14:19:08 +01:00
4098e01630 move playersList from App to ViewManager 2021-12-09 14:18:44 +01:00
5beaeacc1e fix special character not showing correctly in javafx on windows 2021-12-09 13:07:59 +01:00
35875a8107
Merge pull request #3 from quentinlegot/conflit-3
Added buttons when player is human
2021-12-09 12:52:30 +01:00
aacbd65b56
Merge branch 'master' into conflit-3 2021-12-09 12:51:10 +01:00
71f87a3f1c Added buttons when player is human 2021-12-09 12:47:41 +01:00
Katchan
17e63aa826 Add stage icon 2021-12-09 12:46:40 +01:00
Katchan
2670acc775 Improve window view 2021-12-09 12:39:12 +01:00
9771d397a8 add javadoc to server.utils and server.listener 2021-12-08 22:52:09 +01:00
Katchan
eaec044950 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	server/src/main/java/fr/lnl/game/server/games/Game.java
2021-12-08 21:50:00 +01:00
Katchan
dab710597b Improve display in terminal view and add Shot icon in Window view 2021-12-08 21:47:34 +01:00
Katchan
417d311435 Improve StrategyComputerPlayer 2021-12-08 21:46:37 +01:00
f7b6f32ae2 add javadoc to Game.java, delete InterfaceAction (was useless), improved grid factory calls consistency 2021-12-08 21:18:55 +01:00
c856a03621 update README.txt 2021-12-08 19:55:29 +01:00
66cdda1304
Merge pull request #2 from quentinlegot/conflit-2
updated javadoc syntax in some places, add javadoc to game.player and…
2021-12-08 19:11:45 +01:00
3e2252a5ad
Merge branch 'master' into conflit-2 2021-12-08 19:11:18 +01:00
848fccbefd updated javadoc syntax in some places, add javadoc to game.player and game.weapon 2021-12-08 19:09:58 +01:00
Katchan
37d03e570a Add basis strategy on StrategyComputerPlayer and implementation on this player in the game, view. 2021-12-08 18:56:26 +01:00
Katchan
4c52bedc9f Improve display of classes in the view, add player shield icon 2021-12-08 18:54:52 +01:00
Katchan
2e99366e56 Add utils functions 2021-12-08 18:52:12 +01:00
8415739d18 add javadoc to grid's elements, deleted useless x and y parameters in Wall, adjustments to bombs timer and explosion size 2021-12-08 18:43:34 +01:00
ea07ca0c6a add comments to Grid package, delete arguments to GridFacotryBuilder's methods where it's unnecessary 2021-12-08 17:18:11 +01:00
03be6c2a78 add javadoc to actions, delete gradle.properties 2021-12-08 16:08:33 +01:00
938eefe387 Improve CrashException handler, fix java encoding, updated junit dependencies, add private methods to javadoc, renamed Error to ErrorMessage 2021-12-08 15:00:13 +01:00
Katchan
4305f8963b Add private view 2021-12-08 12:52:25 +01:00
609966d9af Rework ChoseAction when currentPlayer is Human(now respect M-VC(terminal) model), but not implemented with Window 2021-12-08 11:58:40 +01:00
74b8489854 fix NullPointerException error when using Terminal view, fix MVC model not respected to display winner 2021-12-08 11:32:16 +01:00
Valentin Lucas
6e13a3124e Correction de quelques propriétés de Cell et modification de Window 2021-12-08 09:12:45 +01:00
Katchan
2e5fcd2a05 Add human terminal choseAction 2021-12-07 21:38:59 +01:00
Katchan
a6b9b69d9b Fix player who stayed on the grid 2021-12-07 21:38:43 +01:00
Katchan
4958c7688e Add useful functions and class 2021-12-07 21:37:16 +01:00
bf37f32407 Reworked GridStrategy and renamed it to GridFactoryBuilder 2021-12-07 18:10:18 +01:00
cacf5ee8c3 fix tests 2021-12-07 17:37:32 +01:00
2a8eac9ea2 Merge branch 'master' of https://github.com/quentinlegot/legot-neveu-lucas 2021-12-07 16:05:46 +01:00
221aa3faec fix ButtonListener.java 2021-12-07 16:05:09 +01:00
Valentin Lucas
b0be4e1f68 Merge remote-tracking branch 'origin/master' 2021-12-07 16:03:28 +01:00
Valentin Lucas
422b0a4962 Correction du numéro du joueur + factorisation de quelques méthodes de window 2021-12-07 16:03:02 +01:00
c07266a763
add dialog when game finish (#1) 2021-12-07 16:02:20 +01:00
Katchan
db2e2e1f7a Merge remote-tracking branch 'origin/master' 2021-12-07 15:56:03 +01:00
Katchan
ca756c6e01 Fix explosives bugs 2021-12-07 15:55:51 +01:00
Valentin Lucas
486d3a2e2a Modification de ButtonListener 2021-12-07 15:32:09 +01:00
Katchan
0e8a46421f Merge remote-tracking branch 'origin/master' 2021-12-07 15:31:28 +01:00
Katchan
f4c3b09078 Fix actions and display bugs 2021-12-07 15:31:18 +01:00
385 changed files with 30094 additions and 626 deletions

4
.gitignore vendored
View File

@ -7,4 +7,6 @@
.gradle
# Ignore Gradle build output directory
build
server/build
client/build
buildSrc/build

View File

@ -1,6 +1,44 @@
Projet de Conception Logiciel concu par :
" Projet de Conception Logiciel conçu par :
LUCAS Valentin
LEGOT Quentin
NEVEU Thomas
# Attention
Ce projet utilise la possibilité de séparé son projet en plusieurs modules en avec Gradle ainsi la disposition des dossiers demandé pour le rendu n'a pas pu être respecté
afin que le programme fonctionne.
# Dépendances
Le projet nécessite le ressources suivante pour fonctionner:
- Java 17 (téléchargeable depuis apt sur Debian 11 ou en téléchargeant sur Oracle ou openJDK)
- Gradle 7.3 ou supérieur (téléchargeable depuis https://gradle.org/releases/ puis en suivez les indications données sur cette page: https://docs.gradle.org/7.3.1/userguide/installation.html#installing_manually )
Accédez ensuite à la racine du projet (dossier livraison/ normalement ou du moins le dossier contenant le fichier settings.gradle) pour pouvoir execute le programme
# Les commandes
- `gradle :client:run --args="[ARGUMENTS]"` permet de lancer le jeu avec les arguments suivant la logique suivant
- le premier argument concerne le type de vue, indiquer `terminal` pour jouer en mode terminal ou `window` pour jouer en mode fenêtre avec JavaFX
- les arguments suivants concernent les joueurs, ils suivent une forme "<type du joueur> [classe du joueur]"
- `type du joueur` pour indiquer si le joueur est:
- `human` pour indiquer un joueur humain utilisant le clavier ou la souris
- `computer` indiquant un joueur ordinateur jouant des coups aléatoire
- `computerS` indiquant un joueur ordinateur semi-aléatoire
- `classe du joueur` est un paramètre facultatif correspond à:
- `tank` indiquant que le joueur est de type tank et qu'il subit moins de dégâts des explosions que les autres ses coups en energies pour faire des actions sont plus élevés
- `dps` ou `default` et un joueur standard, infligeant le plus de dégâts d'attaque et ayant un coup de déplacement équilibré, c'est la valeur par défaut si la classe de ce joueur n'est pas donné
- `support` est un joueur basé sur la pose d'explosif, n'allant que peu au combat direct, ses coups de déplacement sont standard mais ses coups en energies de pose de mine ou de bombes sont les plus faibles.
- Un exemple de ce que cela peux donner est: `window computer default human support computerS dps human tank`
- ici On joue en vue fenêtre avec 4 joueurs:
- computer de classe default (ou dps)
- human de classe support
- computerS de classe dps (ou default)
- human de classe tank
- `gradle build` permet de compiler, exécuter les tests et archiver les classes dans un fichier `.jar` pour chaque module (client et server)
- `gradle javadoc` pour générer la javadoc, une javadoc est générer par projet (soit 2 javadocs), nous vous mettons à disposition dans le dossier livraison un dossier javadoc pour faciliter la navigation
- Si vous voulez naviguer dans la nouvelle javadoc que vous aurez générer, vous pouvez y accéder en allant dans livraison/MODULE/build/doc/javadoc
- les modules étant `client` et `server`
- `gradle test` pour exécuter les tests unitaires

8
build.gradle Normal file
View File

@ -0,0 +1,8 @@
subprojects {
apply plugin: 'java'
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
javadoc {
options.memberLevel = JavadocMemberLevel.PRIVATE
}
}

View File

@ -6,6 +6,7 @@ plugins {
id 'application'
id 'fr.lnl.game.java-application-conventions'
id 'org.openjfx.javafxplugin' version '0.0.10'
id 'org.javamodularity.moduleplugin' version '1.8.10' apply false
}
repositories {
@ -21,13 +22,10 @@ javafx {
modules = [ 'javafx.controls', 'javafx.graphics' ]
}
compileJava {
options.encoding = 'UTF-8'
}
application {
// Define the main class for the application.
mainClassName = 'fr.lnl.game.client.App'
mainModule = "client"
}
run {

View File

@ -1,32 +1,35 @@
package fr.lnl.game.client;
import fr.lnl.game.client.listener.DisplayWinnerEvent;
import fr.lnl.game.client.view.AbstractView;
import fr.lnl.game.client.view.Terminal;
import fr.lnl.game.client.view.ViewManager;
import fr.lnl.game.client.view.Window;
import fr.lnl.game.server.games.Game;
import fr.lnl.game.server.games.grid.Grid;
import fr.lnl.game.server.games.grid.build.BuildStrategy;
import fr.lnl.game.server.games.grid.build.LockStrategy;
import fr.lnl.game.server.games.grid.build.GridFactoryBuilder;
import fr.lnl.game.server.games.grid.build.LockGridFactoryBuilder;
import fr.lnl.game.server.games.player.*;
import fr.lnl.game.server.listener.GameFinishEvent;
import fr.lnl.game.server.utils.CrashException;
import fr.lnl.game.server.utils.Point;
import javafx.application.Application;
import javafx.stage.Stage;
import java.lang.reflect.InvocationTargetException;
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
/**
* Application starting point
*/
public class App extends Application {
private static LinkedList<String> argsList;
public static HashMap<Player, ClientPlayer> playerList = new HashMap<>();
private static Game game;
private static ViewManager viewManager;
public static void main(String[] args) {
try {
argsList = new LinkedList<>(Arrays.asList(args));
argsList.removeIf(s -> s.startsWith("-D") || s.equals("fr.lnl.game.client.App")); // remove given parameters from gradle
Class<? extends AbstractView> clazz;
@ -40,40 +43,68 @@ public class App extends Application {
} else {
launch();
}
} catch(CrashException e) {
System.err.println("Une erreur est survenue et l'application a été obligé de fermer");
System.err.println(e.getCause().toString());
for (StackTraceElement element : e.getStackTrace()) {
System.err.println(" at " + element.toString());
}
System.exit(1);
}
}
public static void startGame(ViewLambda lambda) throws IllegalArgumentException, InvocationTargetException, NoSuchMethodException,
/**
* Parse players arguments and create a new instance of Game
* @throws IllegalArgumentException when given argument is unknown
* @throws InvocationTargetException when the creation of the player throw an exception
* @throws NoSuchMethodException when constructor with given parameter in {@link Class#getConstructor(Class[])}
* doesn't exist
* @throws InstantiationException when the instanciation of the player is impossible (like when class is abstract),
* is probably never called
* @throws IllegalAccessException when the instanciation of thr player is impossible (like a private constructor),
* is probably never called
*/
public static void startGame() throws IllegalArgumentException, InvocationTargetException, NoSuchMethodException,
InstantiationException, IllegalAccessException {
List<Player> players = parsePlayers();
Grid grid = new Grid(12, 12, players);
BuildStrategy buildStrategy = new LockStrategy(grid, 0.80F, 0.95F);
game = new Game(buildStrategy, players, new DisplayWinnerEvent());
for (Player player : game.getPlayers()) {
playerList.put(player, new ClientPlayer(player, lambda.createViewLambda(player)));
}
GridFactoryBuilder builder = LockGridFactoryBuilder.create().energyProbability(0.95F).wallProbability(0.80F).gridDimensions(12, 12);
game = new Game(builder, players);
}
@Override
public void start(Stage stage) {
try {
startGame(player -> new Window(stage, game, player));
startGame();
} catch (IllegalArgumentException | InvocationTargetException | NoSuchMethodException | InstantiationException
| IllegalAccessException e) {
throw new CrashException(e.getMessage(), e);
}
viewManager = new ViewManager(playerList, game, Window.class);
viewManager = new ViewManager(game, Window.class, player -> new Window(stage, game, player));
viewManager.run();
}
public static void launchTerminal() {
try {
startGame(player -> new Terminal(game, player));
startGame();
} catch (IllegalArgumentException | InvocationTargetException | NoSuchMethodException | InstantiationException
| IllegalAccessException e) {
throw new CrashException(e.getMessage(), e);
}
viewManager = new ViewManager(playerList, game, Terminal.class);
viewManager = new ViewManager(game, Terminal.class, player -> new Terminal(game, player));
viewManager.run();
}
/**
* Parse players arguments and create instances for each player
* @throws IllegalArgumentException when given argument is unknown
* @throws InvocationTargetException when the creation of the player throw an exception
* @throws NoSuchMethodException when constructor with given parameter in {@link Class#getConstructor(Class[])}
* doesn't exist
* @throws InstantiationException when the instanciation of the player is impossible (like when class is abstract),
* is probably never called
* @throws IllegalAccessException when the instanciation of thr player is impossible (like a private constructor),
* is probably never called
*/
public static List<Player> parsePlayers() throws IllegalArgumentException, NoSuchMethodException,
InvocationTargetException, InstantiationException, IllegalAccessException {
List<Player> playerList = new ArrayList<>();
@ -99,6 +130,15 @@ public class App extends Application {
}
playerClass = RandomComputerPlayer.class;
}
case "computerS" -> {
if(playerClass != null) {
playerList.add(createNewPlayer(playerClass,
classPlayer != null ? classPlayer : ClassPlayer.DEFAULT, playerList.size())
);
classPlayer = null;
}
playerClass = StrategyComputerPlayer.class;
}
case "default" -> classPlayer = ClassPlayer.DEFAULT;
case "tank" -> classPlayer = ClassPlayer.TANK;
case "dps" -> classPlayer = ClassPlayer.DPS;
@ -113,6 +153,17 @@ public class App extends Application {
return playerList;
}
/**
* create a new instance of the player
* @throws IllegalArgumentException when given argument is unknown (probably never called in production)
* @throws InvocationTargetException when the creation of the player throw an exception
* @throws NoSuchMethodException when constructor with given parameter in {@link Class#getConstructor(Class[])}
* doesn't exist
* @throws InstantiationException when the instanciation of the player is impossible (like when class is abstract),
* is probably never called
* @throws IllegalAccessException when the instanciation of thr player is impossible (like a private constructor),
* is probably never called
*/
private static Player createNewPlayer(Class<? extends AbstractPlayer> playerClass, ClassPlayer playerType,
int playerListSize) throws NoSuchMethodException, InvocationTargetException,
InstantiationException, IllegalAccessException {
@ -120,7 +171,12 @@ public class App extends Application {
.newInstance(playerListSize, null, playerType);
}
public static Class<? extends AbstractView> parseView() {
/**
* Parse the first argument given by user to know the view to use (Terminal or Window)
* @return The class of the View to use
* @throws IllegalArgumentException when given argument is unknown or no argument is given by user
*/
public static Class<? extends AbstractView> parseView() throws IllegalArgumentException {
Class<? extends AbstractView> clazz;
if(!argsList.isEmpty()) {
if(argsList.get(0).equals("terminal")) {

View File

@ -3,6 +3,9 @@ package fr.lnl.game.client;
import fr.lnl.game.client.view.View;
import fr.lnl.game.server.games.player.Player;
/**
* Store a view per player
*/
public record ClientPlayer(Player serverPlayer, View view) {
public Player getServerPlayer() {

View File

@ -3,9 +3,17 @@ package fr.lnl.game.client;
import fr.lnl.game.client.view.View;
import fr.lnl.game.server.games.player.Player;
/**
* Used as Lambda expression to instantiate a {@link View} per {@link Player} stored in {@link ClientPlayer}
*/
@FunctionalInterface
public interface ViewLambda {
/**
* A lambda create an anonymous class which implements this interface
* @param player an instance of {@link Player} to store in {@link View}
* @return an instance of view (depending on the first argument when launching the program)
*/
View createViewLambda(Player player);
}

View File

@ -1,41 +0,0 @@
package fr.lnl.game.client.listener;
import fr.lnl.game.client.App;
import fr.lnl.game.server.games.Game;
import fr.lnl.game.server.games.player.Player;
import fr.lnl.game.server.listener.AbstractModelListening;
import fr.lnl.game.server.listener.ModelListener;
import javafx.scene.control.Alert;
public class ButtonListener extends AbstractModelListening {
private final Game game;
public ButtonListener(Game game) {
this.game = game;
}
@Override
public void addListener(ModelListener e) {
this.listeners.add(e);
}
@Override
public void removalListener(ModelListener e) {
this.listeners.remove(e);
}
@Override
public void updateModel(Object event) {
Player player = game.getCurrentPlayer();
game.play();
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("Un joueur ordinateur a joué");
alert.setHeaderText("Le joueur ordinateur numéro" + player.getId() + " a joué");
alert.setContentText("Il a joué l'action: " + game.getSelectedAction());
App.getViewManager().updateView();
alert.showAndWait();
}
}

View File

@ -4,14 +4,15 @@ import fr.lnl.game.server.listener.ModelListener;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
public class ClientEventHandler implements EventHandler<ActionEvent> {
private final ModelListener listener;
public ClientEventHandler(ButtonListener listener) {
this.listener = listener;
}
/**
* implementation of a listener from JavaFX {@link EventHandler}
*/
public record ClientEventHandler(ModelListener listener) implements EventHandler<ActionEvent> {
/**
* This method is call by JavaFX when we click to the button
* @param event event class created when clicking on the element
*/
@Override
public void handle(ActionEvent event) {
listener.updateModel(event);

View File

@ -1,12 +1,21 @@
package fr.lnl.game.client.listener;
import fr.lnl.game.client.App;
import fr.lnl.game.server.games.player.Player;
import fr.lnl.game.server.listener.AbstractModelListening;
/**
* Used to display the winner of the game
*/
public class DisplayWinnerEvent extends AbstractModelListening {
/**
* This method is call when the game is over
* @param obj contains the winner of the game, can be null
*/
@Override
public void updateModel(Object obj) {
App.getViewManager().displayWinner(App.getGame().getWinner());
Player winner = (Player) obj;
App.getViewManager().displayWinner(winner);
}
}

View File

@ -0,0 +1,40 @@
package fr.lnl.game.client.listener;
import fr.lnl.game.client.App;
import fr.lnl.game.server.games.Game;
import fr.lnl.game.server.listener.AbstractModelListening;
/**
* This method is call when the current player have selected an action to play (or if it's a computer player, will
* select it), then we call {@link Game#play()} and we update the view
*/
public class NextPlayerButtonListener extends AbstractModelListening {
private final Game game;
private final DisplayWinnerEvent displayWinnerEvent;
public NextPlayerButtonListener(Game game) {
this.game = game;
this.displayWinnerEvent = new DisplayWinnerEvent();
}
/**
* Call when clicking on "SUIVANT" button if current player is a computer player or after the human player selected
* action it want to play
*/
@Override
public void updateModel(Object event) {
// Player player = game.getCurrentPlayer();
boolean isOver = game.play();
/* Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("Un joueur ordinateur a joué");
alert.setHeaderText("Le joueur ordinateur numéro" + player.getId() + " a joué");
alert.setContentText("Il a joué l'action: " + game.getSelectedAction()); */
App.getViewManager().updateView();
if(isOver) {
displayWinnerEvent.updateModel(game.getWinner());
System.exit(0);
}
//alert.showAndWait();
}
}

View File

@ -0,0 +1,38 @@
package fr.lnl.game.client.listener;
import fr.lnl.game.client.App;
import fr.lnl.game.client.view.Window;
import fr.lnl.game.server.games.Game;
import fr.lnl.game.server.games.action.ReunionSameAction;
import fr.lnl.game.server.listener.AbstractModelListening;
/**
* Used when the human player select type of action it want to play
*/
public class SelectActionButton extends AbstractModelListening {
private final Window window;
private final ReunionSameAction reunionSameAction;
private final Game game;
public SelectActionButton(Game game, Window window, ReunionSameAction reunionSameAction) {
this.game = game;
this.window = window;
this.reunionSameAction = reunionSameAction;
}
/**
* This method is call when the player select the type of action it want to play
* @param obj contain information about the event like the button where the player clicked
*/
@Override
public void updateModel(Object obj) {
if(reunionSameAction.getActions().size() == 1){
game.setSelectedAction(reunionSameAction.getActions().get(0));
window.getNextPlayerButtonListener().updateModel(obj);
} else {
window.setSelectedReunionAction(reunionSameAction);
App.getViewManager().updateView(); // update screen
}
}
}

View File

@ -0,0 +1,34 @@
package fr.lnl.game.client.listener;
import fr.lnl.game.client.view.Window;
import fr.lnl.game.server.games.Game;
import fr.lnl.game.server.games.action.Action;
import fr.lnl.game.server.listener.AbstractModelListening;
/**
* Call when the player selected the direction where it wants to play it
*/
public class SelectDirectionListener extends AbstractModelListening {
private final Game game;
private final Action action;
private final Window window;
public SelectDirectionListener(Game game, Window window, Action action) {
this.game = game;
this.window = window;
this.action = action;
}
/**
* This method is call when the player click on the button to select the direction of the previously selected action
* @param obj contain information about the event like the button where the player clicked
*/
@Override
public void updateModel(Object obj) {
game.setSelectedAction(action);
window.setSelectedReunionAction(null);
window.getNextPlayerButtonListener().updateModel(obj);
}
}

View File

@ -0,0 +1,4 @@
/**
* Package that contains every view listeners
*/
package fr.lnl.game.client.listener;

View File

@ -0,0 +1,4 @@
/**
* Client package
*/
package fr.lnl.game.client;

View File

@ -3,6 +3,9 @@ package fr.lnl.game.client.view;
import fr.lnl.game.server.games.Game;
import fr.lnl.game.server.games.player.Player;
/**
* Abstract class implemented by every view classes
*/
public abstract class AbstractView implements View {
protected final Player player;

View File

@ -1,12 +1,15 @@
package fr.lnl.game.client.view;
import fr.lnl.game.server.games.Game;
import fr.lnl.game.server.games.action.Shot;
import fr.lnl.game.server.games.grid.elements.Bomb;
import fr.lnl.game.server.games.grid.elements.EnergyBall;
import fr.lnl.game.server.games.grid.elements.Mine;
import fr.lnl.game.server.games.grid.elements.Wall;
import fr.lnl.game.server.games.player.Player;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
@ -16,42 +19,71 @@ import javafx.scene.shape.Rectangle;
*/
public class Cell extends Rectangle {
private static Image PLAYER_IMAGE = new Image("player.png");
private static Image ENERGY_BALL_IMAGE = new Image("energyBall.png");
private static Image BOMB_IMAGE = new Image("bomb.jpg");
private static Image MINE_IMAGE = new Image("mine.webp");
private static Image WALL_IMAGE = new Image("wall.jpg");
//Images libres de droit :
//https://www.minecraftforum.net/forums/mapping-and-modding-java-edition/resource-packs/1242533-pixel-perfection-now-with-polar-bears-1-11
//https://www.stocklib.fr/media-134367689/pixel-game-icons-vector-isolated-bombs-with-fire-graphics-of-retro-gaming-flat-style-of-weapon-with-flames-destruction-and-danger-explosive-substance.html?keyword=bomb%20pixel
private static final Image PLAYER_IMAGE = new Image("player.png");
private static final Image PLAYER_SHIELD_IMAGE = new Image("player_shield.png");
private static final Image PLAYER_SHOT_IMAGE = new Image("player_shot.png");
private static final Image ENERGY_BALL_IMAGE = new Image("energyBall.png");
private static final Image BOMB_IMAGE = new Image("bomb.png");
private static final Image MINE_IMAGE = new Image("mine.png");
private static final Image WALL_IMAGE = new Image("wall.png");
private static final Image BACKGROUND_IMAGE = new Image("background.png");
private static final BackgroundImage BG = new BackgroundImage(BACKGROUND_IMAGE,BackgroundRepeat.NO_REPEAT,BackgroundRepeat.NO_REPEAT,BackgroundPosition.DEFAULT,
BackgroundSize.DEFAULT);
public Cell(int x, int y){
setWidth(Window.cellSize);
setHeight(Window.cellSize);
relocate(x * Window.cellSize,y * Window.cellSize);
setFill(Color.valueOf("#ffffff"));
setFill(Color.WHITE);
setStroke(Color.DARKGRAY);
}
public static StackPane setImageObject(Object object){
/**
* @param object the object we'll define the type
* @return a pane which contains an image depending on the type of the object
*/
public static StackPane setImageObject(Object object, Game game){
StackPane sp = new StackPane();
Image in;
BackgroundImage bg = BG;
if(object instanceof Player){
if(object.equals(game.getCurrentPlayer()) && game.getSelectedAction() instanceof Shot){
in = PLAYER_SHOT_IMAGE;
}
else if(((Player) object).isShieldDeploy()){
in = PLAYER_SHIELD_IMAGE;
}
else{
in = PLAYER_IMAGE;
}
} else if(object instanceof EnergyBall){
in = ENERGY_BALL_IMAGE;
} else if(object instanceof Bomb){
in = BOMB_IMAGE;
} else if(object instanceof Mine){
in = MINE_IMAGE;
} else{
}
else if(object instanceof Wall){
in = WALL_IMAGE;
bg = null;
}
else{
in = null;
}
ImageView iv = new ImageView(in);
iv.setFitHeight(40);
iv.setFitWidth(40);
iv.setFitHeight(Window.cellSize);
iv.setFitWidth(Window.cellSize);
sp.getChildren().add(iv);
sp.setBackground(new Background(bg));
return sp;
}
public static Image getPlayerImage() {
return PLAYER_IMAGE;
}
}

View File

@ -1,21 +1,113 @@
package fr.lnl.game.client.view;
import fr.lnl.game.server.games.Game;
import fr.lnl.game.server.games.action.*;
import fr.lnl.game.server.games.player.Player;
import fr.lnl.game.server.utils.Maths;
import java.util.List;
import java.util.Scanner;
/**
* View terminal, use standard input and output
*/
public class Terminal extends AbstractView {
/**
* Standard input
*/
public static Scanner scanner;
public Terminal(Game game, Player player) {
super(game, player);
}
/**
* Used to update view
*/
public void show() {
System.out.println(game.getGrid().toString());
System.out.println(game.getGrid().privateView(player));
}
/**
* Used to display the winner of the game
* @param winner the player who win the game, can be Null
*/
@Override
public void displayWinner(Player winner) {
System.out.println("Le joueur " + winner + " a gagné la partie");
System.out.println("\n\033[0;31m====== FIN DU JEU ======\033[0m");
System.out.println(game.getGrid().toString());
if(winner == null) {
System.out.println("\n\033[0;Partie nulle, personne n'a gagné la partie\033[0m");
} else {
System.out.println("\n\033[0;33mVictoire de " + winner + " " + winner.getId() + "\033[0m");
}
}
/**
* Used when current player is an instance of {@link fr.lnl.game.server.games.player.HumanPlayer} and demand to it
* an action to do
* @return chosen action
* @see Terminal#choseReunionSameAction(List)
*/
public Action choseAction() {
List<ReunionSameAction> actions = player.generateAvailableActions();
List<Action> listActions = choseReunionSameAction(actions).getActions();
Action action = null;
String error = "Veuillez renseigner une valeur numérique comprise entre 1 et " + listActions.size();
do {
if(listActions.size() == 1){
return listActions.get(0);
}
System.out.println("Choisissez la cible :");
for (int i = 0; i < listActions.size(); i++) {
Action a = listActions.get(i);
if(a instanceof Move m){
System.out.println(i + 1 + " : " + m.getDirection());
}
else if(a instanceof DropObject o){
System.out.println(i + 1 + " : " + o.getDirection());
}
else if(a instanceof Shot s){
System.out.println(i + 1 + " : " + s.getPoint());
}
else{
System.out.println(i + 1 + " : " + a.getClass().getSimpleName());
}
}
String entry = scanner.next();
int value = Maths.testInteger(entry, scanner, error);
if (value >= 1 && value <= listActions.size()) {
action = listActions.get(value - 1);
}
} while (action == null);
return action;
}
/**
* Used when current player is an instance of {@link fr.lnl.game.server.games.player.HumanPlayer} and demand to it
* a type of action to do
* @param actions the list of actions possible
* @return the type of action to execute
* @see Terminal#choseAction()
*/
private ReunionSameAction choseReunionSameAction(List<ReunionSameAction> actions) {
ReunionSameAction reunion = null;
String error = "Veuillez renseigner une valeur numérique comprise entre 1 et " + actions.size();
Scanner scanner = new Scanner(System.in);
do {
System.out.println("Choisissez une action :");
for (int i = 0; i < actions.size(); i++) {
System.out.println(i + 1 + " : " + actions.get(i).getActionName());
}
String entry = scanner.next();
int value = Maths.testInteger(entry, scanner, error);
if (value >= 1 && value <= actions.size()) {
reunion = actions.get(value - 1);
}
}while (reunion == null) ;
return reunion;
}
}

View File

@ -2,9 +2,19 @@ package fr.lnl.game.client.view;
import fr.lnl.game.server.games.player.Player;
/**
* View interface, implemented by Terminal and Window.
*/
public interface View {
/**
* used to update screen
*/
void show();
void displayWinner(Player winner);
/**
* Used to display the name of the winner
* @param winner the player who win the game, can be Null
*/
void displayWinner(/* Nullable */ Player winner);
}

View File

@ -1,20 +1,76 @@
package fr.lnl.game.client.view;
import fr.lnl.game.client.ClientPlayer;
import fr.lnl.game.client.ViewLambda;
import fr.lnl.game.client.listener.DisplayWinnerEvent;
import fr.lnl.game.server.games.Game;
import fr.lnl.game.server.games.player.HumanPlayer;
import fr.lnl.game.server.games.player.Player;
import java.util.HashMap;
import java.util.Scanner;
public class ViewManager {
/**
* View manager, main access to every views
*/
public final class ViewManager {
private final HashMap<Player, ClientPlayer> players;
private final Game game;
private final Class<? extends View> viewType;
public HashMap<Player, ClientPlayer> players = new HashMap<>();
public ViewManager(HashMap<Player, ClientPlayer> players, Game game, Class<? extends View> viewType) {
this.players = players;
public ViewManager(Game game, Class<? extends View> viewType, ViewLambda lambda) {
this.game = game;
this.viewType = viewType;
for (Player player : game.getPlayers()) {
players.put(player, new ClientPlayer(player, lambda.createViewLambda(player)));
}
}
/**
* Call when we need to change or update view
*/
public void updateView() {
players.get(game.getCurrentPlayer()).getView().show();
}
/**
* This method is call when the view is a terminal
*/
public void terminalView() {
Terminal.scanner = new Scanner(System.in);
DisplayWinnerEvent displayWinnerEvent = new DisplayWinnerEvent();
while (true) {
Player player = game.getCurrentPlayer();
System.out.println("\n\033[0;34m====== Tour n°" + game.getNbrTurn() + " =======\033[0m");
System.out.println("\nA \033[0;31m" + player + " " + player.getId() + "\033[0m de jouer");
players.get(game.getCurrentPlayer()).getView().show();
if (game.getCurrentPlayer() instanceof HumanPlayer human) {
game.setSelectedAction(((Terminal) players.get(human).getView()).choseAction());
}
boolean isOver = game.play();
System.out.println("\n\033[0;31m" + player + " " + player.getId() + "\033[0m utilise l'action \033[0;36m" +
game.getSelectedAction().getClass().getSimpleName() + "\033[0m");
if (isOver) {
displayWinnerEvent.updateModel(game.getWinner());
Terminal.scanner.close();
System.exit(0);
}
}
}
/**
* This method is call when the game is finish
* @param winner The winner of the game, can be null
*/
public void displayWinner(Player winner) {
players.get(game.getCurrentPlayer()).getView().displayWinner(winner);
}
/**
* This method is call after initialized view manager to display a first screen
*/
public void run() {
if (viewType == Terminal.class) {
terminalView();
} else {
@ -22,21 +78,4 @@ public class ViewManager {
}
}
public void updateView() {
players.get(game.getCurrentPlayer()).getView().show();
}
public void terminalView() {
while(true) {
Player player = game.getCurrentPlayer();
players.get(game.getCurrentPlayer()).getView().show();
game.play();
System.out.println("Le joueur ordinateur numéro " + player.getId() + " a joué");
System.out.println("Il a joué l'action: " + game.getSelectedAction());
}
}
public void displayWinner(Player winner) {
players.get(game.getCurrentPlayer()).getView().displayWinner(winner);
}
}

View File

@ -1,33 +1,54 @@
package fr.lnl.game.client.view;
import fr.lnl.game.client.App;
import fr.lnl.game.client.listener.ButtonListener;
import fr.lnl.game.client.listener.ClientEventHandler;
import fr.lnl.game.client.listener.NextPlayerButtonListener;
import fr.lnl.game.client.listener.SelectActionButton;
import fr.lnl.game.client.listener.SelectDirectionListener;
import fr.lnl.game.server.games.Game;
import fr.lnl.game.server.games.action.*;
import fr.lnl.game.server.games.grid.Grid;
import fr.lnl.game.server.games.grid.elements.*;
import fr.lnl.game.server.games.grid.elements.Box;
import fr.lnl.game.server.games.grid.elements.EnergyBall;
import fr.lnl.game.server.games.grid.elements.Explosive;
import fr.lnl.game.server.games.grid.elements.Wall;
import fr.lnl.game.server.games.player.HumanPlayer;
import fr.lnl.game.server.games.player.Player;
import fr.lnl.game.server.utils.Pair;
import fr.lnl.game.server.utils.Point;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import java.util.List;
/**
* Window view, use mouse and keyboard to control interface
*/
public class Window extends AbstractView {
// il faut pouvoir trouver une formule responsive avec width et height
public static final int cellSize = 40;
public static final int width = 24;
public static final int height = 16;
public static final int width = 500;
public static final int height = 160;
private static final Color dark = Color.valueOf("1F1F1F");
private static final Background bg = new Background(new BackgroundFill(dark, CornerRadii.EMPTY, Insets.EMPTY));
private final Stage stage;
private Pane buttonPane;
private ReunionSameAction selectedReunionAction = null;
private final NextPlayerButtonListener nextPlayerButtonListener = new NextPlayerButtonListener(game);
public Window(Stage stage, Game game, Player player) {
@ -35,28 +56,105 @@ public class Window extends AbstractView {
this.stage = stage;
}
/**
* used to update screen
*/
public void show() {
Scene scene = new Scene(createContent());
stage.setScene(scene);
stage.setTitle("Game");
stage.getIcons().add(Cell.getPlayerImage());
stage.setResizable(false);
stage.sizeToScene();
stage.show();
}
/**
* Used to display the name of the winner
* @param winner the player who win the game, can be Null
*/
@Override
public void displayWinner(Player winner) {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("Fin du jeu");
alert.setHeaderText("La partie est terminé");
alert.setContentText("Un joueur " + winner + " a gagné");
alert.setHeaderText("La partie est termin\u00E9");
if(winner == null) {
alert.setContentText("La partie est nulle, personne n'a gagn\u00E9");
} else {
alert.setContentText("Le joueur " + winner + " " + winner.getId() + " a gagn\u00E9");
}
App.getViewManager().updateView();
alert.showAndWait();
}
/**
* Choose a direction between all possible from the previously selected action type
* @param selectedReunionAction previously selected type of action
* @see Window#choseReunionSameAction(List)
*/
public void choseDirectionAction(ReunionSameAction selectedReunionAction) {
for(int i = 0; i < selectedReunionAction.getActions().size(); ++i) {
Action action = selectedReunionAction.getActions().get(i);
if(action instanceof Move m){
addButtonToPane(m.getDirection().toString(),
new ClientEventHandler(new SelectDirectionListener(game, this, action)), buttonPane,
i * 100 + 50, 0);
}
else if(action instanceof DropObject o){
addButtonToPane(o.getDirection().toString(), new ClientEventHandler(new SelectDirectionListener(game, this, action)), buttonPane, i * 100 + 50, 0);
}
else if(action instanceof Shot s){
addButtonToPane(s.getPoint().toString(), new ClientEventHandler(new SelectDirectionListener(game, this, action)), buttonPane, i * 100 + 50, 0);
}
else{
addButtonToPane(action.getClass().getSimpleName(), new ClientEventHandler(new SelectDirectionListener(game, this, action)), buttonPane, i * 100 + 50, 0);
}
}
}
/**
* Used when {@link Game#getCurrentPlayer()} is an instance of {@link HumanPlayer}.
* Display button to demand to player to choose the type of action to execute
* @param actions the list of possible actions
* @see Window#choseDirectionAction(ReunionSameAction)
*/
private void choseReunionSameAction(List<ReunionSameAction> actions) {
for (int i = 0; i < actions.size(); i++) {
ReunionSameAction action = actions.get(i);
addButtonToPane(action.getActionName(), new ClientEventHandler(new SelectActionButton(game, this, action)),
buttonPane, i * 100 + 50, 0);
}
}
/**
* called when we add a button in the interface
* @param content content of the button
* @param listener listener of the button
* @param pane pane where we add the button
* @param offsetX move the button from the base position of the pane to the left (when offsetX is negative) or on
* the right (when offsetY is positive)
* @param offsetY move the button from the base position of the pane to the up (when offsetX is negative) or on
* the down (when offsetY is positive)
*/
private void addButtonToPane(String content, EventHandler<ActionEvent> listener, Pane pane, int offsetX, int offsetY) {
Button button = new Button(content);
button.setOnAction(listener);
button.setPrefSize(85, 35);
button.setStyle("-fx-background-color: #a96806;");
button.setTextFill(javafx.scene.paint.Color.WHITE);
button.setLayoutX(offsetX - button.getPrefWidth() / 2);
button.setLayoutY(offsetY);
pane.getChildren().add(button);
}
/**
* Create content of the stage
* @return the parent element to set to the stage
*/
private Parent createContent() {
Pane principalPane = new Pane();
principalPane.setPrefSize(width * cellSize, height * cellSize); // TODO: 04/12/2021 A corriger -> doit plutôt s'adapter à la taille de la grid (grid.getRow() et grid.getColumn())
principalPane.setPrefSize(game.getGrid().getRow() * cellSize + width, game.getGrid().getColumn() * cellSize + height); // TODO: 04/12/2021 A corriger -> doit plutôt s'adapter à la taille de la grid (grid.getRow() et grid.getColumn())
for (int i = 0; i < game.getGrid().getRow(); i++) {
for (int j = 0; j < game.getGrid().getColumn(); j++) {
Cell cell = new Cell(i, j);
@ -67,45 +165,67 @@ public class Window extends AbstractView {
for (int i = 0; i < grid.getRow(); i++) {
for (int j = 0; j < grid.getColumn(); j++) {
Pair<Player, Box> value = grid.getBoard().get(new Point(i, j));
if (value.getB() instanceof Wall || value.getB() instanceof EnergyBall || value.getB() instanceof Explosive) {
if (value.getB() instanceof Wall || value.getB() instanceof EnergyBall) {
addToPrincipalPanel(value.getB(), principalPane, i, j);
}
if (value.getA() != null) {
else if(value.getB() instanceof Explosive){
if(((Explosive) value.getB()).getPlayer().equals(player)){
addToPrincipalPanel(value.getB(), principalPane, i, j);
}
else{
addToPrincipalPanel(null,principalPane, i, j);
}
}
else if (value.getA() != null) {
addToPrincipalPanel(value.getA(), principalPane, i, j);
}
else{
addToPrincipalPanel(null,principalPane, i, j);
}
}
}
putStatePlayerPane(principalPane);
StackPane stateMoveTextPane = showMoveText();
stateMoveTextPane.setLayoutY(480);
principalPane.getChildren().add(stateMoveTextPane);
putMoveTextPane(principalPane);
this.buttonPane = new Pane();
buttonPane.setLayoutX(0);
buttonPane.setLayoutY(600);
if(game.getCurrentPlayer() instanceof HumanPlayer) {
if(this.selectedReunionAction == null) {
choseReunionSameAction(player.generateAvailableActions());
} else {
choseDirectionAction(selectedReunionAction);
}
} else {
addButtonToPane("SUIVANT", new ClientEventHandler(nextPlayerButtonListener), buttonPane, (int) (principalPane.getPrefWidth() / 2), 0);
}
Button followingButton = new Button("SUIVANT");
followingButton.setOnAction(new ClientEventHandler(new ButtonListener(game)));
followingButton.setLayoutX(700);
followingButton.setLayoutY(600);
followingButton.setStyle("-fx-background-color: #a96806;");
followingButton.setTextFill(javafx.scene.paint.Color.WHITE);
principalPane.getChildren().add(followingButton);
principalPane.getChildren().add(buttonPane);
principalPane.setBackground(bg);
return principalPane;
}
/**
* Add grid element to the principal pane
* @param object object to add to the pane
* @param principalPane pane where we'll add the object
* @param i
* @param j
*/
public void addToPrincipalPanel(Object object, Pane principalPane, int i, int j) {
StackPane sp = Cell.setImageObject(object);
StackPane sp = Cell.setImageObject(object, game);
sp.setLayoutY(i * cellSize);
sp.setLayoutX(j * cellSize);
principalPane.getChildren().add(sp);
}
// TODO: 07/12/2021 WARNING : générer autant de frames quil y a de joueurs,(à implémenter)
// TODO: 07/12/2021 Maintenant régler : Factorisation du code, Responsive
//à voir si on peut faire plus proprement les deux méthodes en dessous avec une List<StackPane> ?
/**
* Create the right pane
* @param principalPane principal pane where we'll add the left down pane
*/
public void putStatePlayerPane(Pane principalPane){
int Y = 0;
for(int i=0;i<game.getPlayers().size();i++){
StackPane sp = showStatePlayer(i);
StackPane sp = showStatePlayer(game.getPlayers().get(i).toString(),i);
sp.setLayoutX(480);
sp.setLayoutY(Y);
Y+=90;
@ -113,44 +233,70 @@ public class Window extends AbstractView {
}
}
public StackPane showStatePlayer(int playerNumber){
/**
* Build left down pane (list all players information)
* @param type
* @param playerNumber
* @return
*/
public StackPane showStatePlayer(String type, int playerNumber){
StackPane subSp = new StackPane();
String s = "Joueur " + (playerNumber+1) + "\n" +
String s = type + " " + (playerNumber+1) + "\n" +
"Energie : " + game.getPlayers().get(playerNumber).getEnergy() + "\n" +
"Arme : " + game.getPlayers().get(playerNumber).getWeapon() + "\n";
"Arme : " + game.getPlayers().get(playerNumber).getWeapon().getClass().getSimpleName() + "\n";
Text t = new Text(s);
Rectangle r = new Rectangle();
r.setWidth(500);
r.setHeight(90);
//à voir
if(game.getPlayers().get(playerNumber).getEnergy() <= 0){
r.setFill(Color.RED);
r.setFill(Color.valueOf("A54747"));
}else{
r.setFill(Color.GREEN);
r.setFill(Color.valueOf("62B262"));
}
r.setStrokeWidth(2);
r.setStrokeWidth(1);
r.setStroke(Color.BLACK);
subSp.getChildren().addAll(r,t);
return subSp;
}
//idem que au dessus
/**
* build left down pane and move it to its position
* @param principalPane the principal pane where we'll add the left down pane
*/
public void putMoveTextPane(Pane principalPane){
StackPane stateMoveTextPane = showMoveText();
stateMoveTextPane.setLayoutY(480);
principalPane.getChildren().add((stateMoveTextPane));
}
/**
* Build the left down pane (contains current player information)
* @return the built pane
*/
public StackPane showMoveText() {
StackPane subSp = new StackPane();
String s = "Joueur : " + (player.getId()+1) + "\n" +
"Vient de jouer : " + game.getSelectedAction() + "\n";
String action = game.getSelectedAction() == null ? "null" : game.getSelectedAction().getClass().getSimpleName();
String s = "Vous \u00EAtes \u00E0 la position " + player.getPosition().toString();
if(game.getPreviousPlayer() != null) {
s = game.getPreviousPlayer() + " : " + (game.getPreviousPlayer().getId()+1) + "\n" +
"Vient de jouer : " + action + "\n";
}
Text t = new Text(s);
t.setFill(Color.WHITE);
Rectangle r = new Rectangle();
r.setWidth(478);
r.setHeight(165);
r.setStrokeWidth(2);
r.setStroke(Color.BLACK);
r.setFill(Color.WHITE);
r.setFill(dark);
subSp.getChildren().addAll(r,t);
return subSp;
}
public void setSelectedReunionAction(ReunionSameAction selectedReunionAction) {
this.selectedReunionAction = selectedReunionAction;
}
public NextPlayerButtonListener getNextPlayerButtonListener() {
return nextPlayerButtonListener;
}
}

View File

@ -0,0 +1,4 @@
/**
* View package, contains all classes about user view
*/
package fr.lnl.game.client.view;

View File

@ -1,3 +1,6 @@
/**
* Client module, include every view and controller classes from MVC model
*/
module client {
requires javafx.controls;
requires transitive javafx.graphics;

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 B

View File

@ -1 +0,0 @@
org.gradle.jvmargs='-Dfile.encoding=utf-8'

44
livraison/README.txt Normal file
View File

@ -0,0 +1,44 @@
" Projet de Conception Logiciel conçu par :
LUCAS Valentin
LEGOT Quentin
NEVEU Thomas
# Attention
Ce projet utilise la possibilité de séparé son projet en plusieurs modules en avec Gradle ainsi la disposition des dossiers demandé pour le rendu n'a pas pu être respecté
afin que le programme fonctionne.
# Dépendances
Le projet nécessite le ressources suivante pour fonctionner:
- Java 17 (téléchargeable depuis apt sur Debian 11 ou en téléchargeant sur Oracle ou openJDK)
- Gradle 7.3 ou supérieur (téléchargeable depuis https://gradle.org/releases/ puis en suivez les indications données sur cette page: https://docs.gradle.org/7.3.1/userguide/installation.html#installing_manually )
Accédez ensuite à la racine du projet (dossier livraison/ normalement ou du moins le dossier contenant le fichier settings.gradle) pour pouvoir execute le programme
# Les commandes
- `gradle :client:run --args="[ARGUMENTS]"` permet de lancer le jeu avec les arguments suivant la logique suivant
- le premier argument concerne le type de vue, indiquer `terminal` pour jouer en mode terminal ou `window` pour jouer en mode fenêtre avec JavaFX
- les arguments suivants concernent les joueurs, ils suivent une forme "<type du joueur> [classe du joueur]"
- `type du joueur` pour indiquer si le joueur est:
- `human` pour indiquer un joueur humain utilisant le clavier ou la souris
- `computer` indiquant un joueur ordinateur jouant des coups aléatoire
- `computerS` indiquant un joueur ordinateur semi-aléatoire
- `classe du joueur` est un paramètre facultatif correspond à:
- `tank` indiquant que le joueur est de type tank et qu'il subit moins de dégâts des explosions que les autres ses coups en energies pour faire des actions sont plus élevés
- `dps` ou `default` et un joueur standard, infligeant le plus de dégâts d'attaque et ayant un coup de déplacement équilibré, c'est la valeur par défaut si la classe de ce joueur n'est pas donné
- `support` est un joueur basé sur la pose d'explosif, n'allant que peu au combat direct, ses coups de déplacement sont standard mais ses coups en energies de pose de mine ou de bombes sont les plus faibles.
- Un exemple de ce que cela peux donner est: `window computer default human support computerS dps human tank`
- ici On joue en vue fenêtre avec 4 joueurs:
- computer de classe default (ou dps)
- human de classe support
- computerS de classe dps (ou default)
- human de classe tank
- `gradle build` permet de compiler, exécuter les tests et archiver les classes dans un fichier `.jar` pour chaque module (client et server)
- `gradle javadoc` pour générer la javadoc, une javadoc est générer par projet (soit 2 javadocs), nous vous mettons à disposition dans le dossier livraison un dossier javadoc pour faciliter la navigation
- Si vous voulez naviguer dans la nouvelle javadoc que vous aurez générer, vous pouvez y accéder en allant dans livraison/MODULE/build/doc/javadoc
- les modules étant `client` et `server`
- `gradle test` pour exécuter les tests unitaires

8
livraison/build.gradle Normal file
View File

@ -0,0 +1,8 @@
subprojects {
apply plugin: 'java'
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
javadoc {
options.memberLevel = JavadocMemberLevel.PRIVATE
}
}

View File

@ -0,0 +1,13 @@
/*
* This file was generated by the Gradle 'init' task.
*/
plugins {
// Support convention plugins written in Groovy. Convention plugins are build scripts in 'src/main' that automatically become available as plugins in the main build.
id 'groovy-gradle-plugin'
}
repositories {
// Use the plugin portal to apply community plugins in convention plugins.
gradlePluginPortal()
}

View File

@ -0,0 +1,11 @@
/*
* This file was generated by the Gradle 'init' task.
*/
plugins {
// Apply the common convention plugin for shared build configuration between library and application projects.
id 'fr.lnl.game.java-common-conventions'
// Apply the application plugin to add support for building a CLI application in Java.
id 'application'
}

View File

@ -0,0 +1,31 @@
/*
* This file was generated by the Gradle 'init' task.
*/
plugins {
// Apply the java Plugin to add support for Java.
id 'java'
}
repositories {
// Use Maven Central for resolving dependencies.
mavenCentral()
}
dependencies {
constraints {
// Define dependency versions as constraints
implementation 'org.apache.commons:commons-text:1.9'
}
// Use JUnit Jupiter API for testing.
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.1'
// Use JUnit Jupiter Engine for testing.
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
}
tasks.named('test') {
// Use junit platform for unit tests.
useJUnitPlatform()
}

View File

@ -0,0 +1,11 @@
/*
* This file was generated by the Gradle 'init' task.
*/
plugins {
// Apply the common convention plugin for shared build configuration between library and application projects.
id 'fr.lnl.game.java-common-conventions'
// Apply the java-library plugin for API and implementation separation.
id 'java-library'
}

View File

@ -0,0 +1,33 @@
/*
* This file was generated by the Gradle 'init' task.
*/
plugins {
id 'application'
id 'fr.lnl.game.java-application-conventions'
id 'org.openjfx.javafxplugin' version '0.0.10'
id 'org.javamodularity.moduleplugin' version '1.8.10' apply false
}
repositories {
mavenCentral()
}
dependencies {
implementation project(':server')
}
javafx {
version = JavaVersion.VERSION_17
modules = [ 'javafx.controls', 'javafx.graphics' ]
}
application {
// Define the main class for the application.
mainClassName = 'fr.lnl.game.client.App'
mainModule = "client"
}
run {
standardInput = System.in
}

View File

@ -0,0 +1,203 @@
package fr.lnl.game.client;
import fr.lnl.game.client.view.AbstractView;
import fr.lnl.game.client.view.Terminal;
import fr.lnl.game.client.view.ViewManager;
import fr.lnl.game.client.view.Window;
import fr.lnl.game.server.games.Game;
import fr.lnl.game.server.games.grid.build.GridFactoryBuilder;
import fr.lnl.game.server.games.grid.build.LockGridFactoryBuilder;
import fr.lnl.game.server.games.player.*;
import fr.lnl.game.server.utils.CrashException;
import fr.lnl.game.server.utils.Point;
import javafx.application.Application;
import javafx.stage.Stage;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
/**
* Application starting point
*/
public class App extends Application {
private static LinkedList<String> argsList;
private static Game game;
private static ViewManager viewManager;
public static void main(String[] args) {
try {
argsList = new LinkedList<>(Arrays.asList(args));
argsList.removeIf(s -> s.startsWith("-D") || s.equals("fr.lnl.game.client.App")); // remove given parameters from gradle
Class<? extends AbstractView> clazz;
try {
clazz = parseView();
} catch (IllegalArgumentException e) {
throw new CrashException(e.getMessage(), e);
}
if(clazz.equals(Terminal.class)) {
launchTerminal();
} else {
launch();
}
} catch(CrashException e) {
System.err.println("Une erreur est survenue et l'application a été obligé de fermer");
System.err.println(e.getCause().toString());
for (StackTraceElement element : e.getStackTrace()) {
System.err.println(" at " + element.toString());
}
System.exit(1);
}
}
/**
* Parse players arguments and create a new instance of Game
* @throws IllegalArgumentException when given argument is unknown
* @throws InvocationTargetException when the creation of the player throw an exception
* @throws NoSuchMethodException when constructor with given parameter in {@link Class#getConstructor(Class[])}
* doesn't exist
* @throws InstantiationException when the instanciation of the player is impossible (like when class is abstract),
* is probably never called
* @throws IllegalAccessException when the instanciation of thr player is impossible (like a private constructor),
* is probably never called
*/
public static void startGame() throws IllegalArgumentException, InvocationTargetException, NoSuchMethodException,
InstantiationException, IllegalAccessException {
List<Player> players = parsePlayers();
GridFactoryBuilder builder = LockGridFactoryBuilder.create().energyProbability(0.95F).wallProbability(0.80F).gridDimensions(12, 12);
game = new Game(builder, players);
}
@Override
public void start(Stage stage) {
try {
startGame();
} catch (IllegalArgumentException | InvocationTargetException | NoSuchMethodException | InstantiationException
| IllegalAccessException e) {
throw new CrashException(e.getMessage(), e);
}
viewManager = new ViewManager(game, Window.class, player -> new Window(stage, game, player));
viewManager.run();
}
public static void launchTerminal() {
try {
startGame();
} catch (IllegalArgumentException | InvocationTargetException | NoSuchMethodException | InstantiationException
| IllegalAccessException e) {
throw new CrashException(e.getMessage(), e);
}
viewManager = new ViewManager(game, Terminal.class, player -> new Terminal(game, player));
viewManager.run();
}
/**
* Parse players arguments and create instances for each player
* @throws IllegalArgumentException when given argument is unknown
* @throws InvocationTargetException when the creation of the player throw an exception
* @throws NoSuchMethodException when constructor with given parameter in {@link Class#getConstructor(Class[])}
* doesn't exist
* @throws InstantiationException when the instanciation of the player is impossible (like when class is abstract),
* is probably never called
* @throws IllegalAccessException when the instanciation of thr player is impossible (like a private constructor),
* is probably never called
*/
public static List<Player> parsePlayers() throws IllegalArgumentException, NoSuchMethodException,
InvocationTargetException, InstantiationException, IllegalAccessException {
List<Player> playerList = new ArrayList<>();
Class<? extends AbstractPlayer> playerClass = null;
ClassPlayer classPlayer = null;
for(String str : argsList) {
switch (str) {
case "human" -> {
if(playerClass != null) {
playerList.add(createNewPlayer(playerClass,
classPlayer != null ? classPlayer : ClassPlayer.DEFAULT, playerList.size())
);
classPlayer = null;
}
playerClass = HumanPlayer.class;
}
case "computer" -> {
if(playerClass != null) {
playerList.add(createNewPlayer(playerClass,
classPlayer != null ? classPlayer : ClassPlayer.DEFAULT, playerList.size())
);
classPlayer = null;
}
playerClass = RandomComputerPlayer.class;
}
case "computerS" -> {
if(playerClass != null) {
playerList.add(createNewPlayer(playerClass,
classPlayer != null ? classPlayer : ClassPlayer.DEFAULT, playerList.size())
);
classPlayer = null;
}
playerClass = StrategyComputerPlayer.class;
}
case "default" -> classPlayer = ClassPlayer.DEFAULT;
case "tank" -> classPlayer = ClassPlayer.TANK;
case "dps" -> classPlayer = ClassPlayer.DPS;
case "support" -> classPlayer = ClassPlayer.SUPPORT;
default -> throw new IllegalArgumentException("Unknown argument: " + str);
}
}
if(playerClass != null)
playerList.add(createNewPlayer(playerClass,
classPlayer != null ? classPlayer : ClassPlayer.DEFAULT, playerList.size())
);
return playerList;
}
/**
* create a new instance of the player
* @throws IllegalArgumentException when given argument is unknown (probably never called in production)
* @throws InvocationTargetException when the creation of the player throw an exception
* @throws NoSuchMethodException when constructor with given parameter in {@link Class#getConstructor(Class[])}
* doesn't exist
* @throws InstantiationException when the instanciation of the player is impossible (like when class is abstract),
* is probably never called
* @throws IllegalAccessException when the instanciation of thr player is impossible (like a private constructor),
* is probably never called
*/
private static Player createNewPlayer(Class<? extends AbstractPlayer> playerClass, ClassPlayer playerType,
int playerListSize) throws NoSuchMethodException, InvocationTargetException,
InstantiationException, IllegalAccessException {
return playerClass.getConstructor(Integer.class, Point.class, ClassPlayer.class)
.newInstance(playerListSize, null, playerType);
}
/**
* Parse the first argument given by user to know the view to use (Terminal or Window)
* @return The class of the View to use
* @throws IllegalArgumentException when given argument is unknown or no argument is given by user
*/
public static Class<? extends AbstractView> parseView() throws IllegalArgumentException {
Class<? extends AbstractView> clazz;
if(!argsList.isEmpty()) {
if(argsList.get(0).equals("terminal")) {
clazz = Terminal.class;
} else if(argsList.get(0).equals("window")){
clazz = Window.class;
} else {
throw new IllegalArgumentException("Unknown argument: " + argsList.get(0));
}
argsList.removeFirst();
} else {
throw new IllegalArgumentException("No argument given");
}
return clazz;
}
public static ViewManager getViewManager() {
return viewManager;
}
public static Game getGame() {
return game;
}
}

View File

@ -0,0 +1,18 @@
package fr.lnl.game.client;
import fr.lnl.game.client.view.View;
import fr.lnl.game.server.games.player.Player;
/**
* Store a view per player
*/
public record ClientPlayer(Player serverPlayer, View view) {
public Player getServerPlayer() {
return serverPlayer;
}
public View getView() {
return view;
}
}

View File

@ -0,0 +1,19 @@
package fr.lnl.game.client;
import fr.lnl.game.client.view.View;
import fr.lnl.game.server.games.player.Player;
/**
* Used as Lambda expression to instantiate a {@link View} per {@link Player} stored in {@link ClientPlayer}
*/
@FunctionalInterface
public interface ViewLambda {
/**
* A lambda create an anonymous class which implements this interface
* @param player an instance of {@link Player} to store in {@link View}
* @return an instance of view (depending on the first argument when launching the program)
*/
View createViewLambda(Player player);
}

View File

@ -0,0 +1,20 @@
package fr.lnl.game.client.listener;
import fr.lnl.game.server.listener.ModelListener;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
/**
* implementation of a listener from JavaFX {@link EventHandler}
*/
public record ClientEventHandler(ModelListener listener) implements EventHandler<ActionEvent> {
/**
* This method is call by JavaFX when we click to the button
* @param event event class created when clicking on the element
*/
@Override
public void handle(ActionEvent event) {
listener.updateModel(event);
}
}

View File

@ -0,0 +1,21 @@
package fr.lnl.game.client.listener;
import fr.lnl.game.client.App;
import fr.lnl.game.server.games.player.Player;
import fr.lnl.game.server.listener.AbstractModelListening;
/**
* Used to display the winner of the game
*/
public class DisplayWinnerEvent extends AbstractModelListening {
/**
* This method is call when the game is over
* @param obj contains the winner of the game, can be null
*/
@Override
public void updateModel(Object obj) {
Player winner = (Player) obj;
App.getViewManager().displayWinner(winner);
}
}

View File

@ -0,0 +1,40 @@
package fr.lnl.game.client.listener;
import fr.lnl.game.client.App;
import fr.lnl.game.server.games.Game;
import fr.lnl.game.server.listener.AbstractModelListening;
/**
* This method is call when the current player have selected an action to play (or if it's a computer player, will
* select it), then we call {@link Game#play()} and we update the view
*/
public class NextPlayerButtonListener extends AbstractModelListening {
private final Game game;
private final DisplayWinnerEvent displayWinnerEvent;
public NextPlayerButtonListener(Game game) {
this.game = game;
this.displayWinnerEvent = new DisplayWinnerEvent();
}
/**
* Call when clicking on "SUIVANT" button if current player is a computer player or after the human player selected
* action it want to play
*/
@Override
public void updateModel(Object event) {
// Player player = game.getCurrentPlayer();
boolean isOver = game.play();
/* Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("Un joueur ordinateur a joué");
alert.setHeaderText("Le joueur ordinateur numéro" + player.getId() + " a joué");
alert.setContentText("Il a joué l'action: " + game.getSelectedAction()); */
App.getViewManager().updateView();
if(isOver) {
displayWinnerEvent.updateModel(game.getWinner());
System.exit(0);
}
//alert.showAndWait();
}
}

View File

@ -0,0 +1,38 @@
package fr.lnl.game.client.listener;
import fr.lnl.game.client.App;
import fr.lnl.game.client.view.Window;
import fr.lnl.game.server.games.Game;
import fr.lnl.game.server.games.action.ReunionSameAction;
import fr.lnl.game.server.listener.AbstractModelListening;
/**
* Used when the human player select type of action it want to play
*/
public class SelectActionButton extends AbstractModelListening {
private final Window window;
private final ReunionSameAction reunionSameAction;
private final Game game;
public SelectActionButton(Game game, Window window, ReunionSameAction reunionSameAction) {
this.game = game;
this.window = window;
this.reunionSameAction = reunionSameAction;
}
/**
* This method is call when the player select the type of action it want to play
* @param obj contain information about the event like the button where the player clicked
*/
@Override
public void updateModel(Object obj) {
if(reunionSameAction.getActions().size() == 1){
game.setSelectedAction(reunionSameAction.getActions().get(0));
window.getNextPlayerButtonListener().updateModel(obj);
} else {
window.setSelectedReunionAction(reunionSameAction);
App.getViewManager().updateView(); // update screen
}
}
}

View File

@ -0,0 +1,34 @@
package fr.lnl.game.client.listener;
import fr.lnl.game.client.view.Window;
import fr.lnl.game.server.games.Game;
import fr.lnl.game.server.games.action.Action;
import fr.lnl.game.server.listener.AbstractModelListening;
/**
* Call when the player selected the direction where it wants to play it
*/
public class SelectDirectionListener extends AbstractModelListening {
private final Game game;
private final Action action;
private final Window window;
public SelectDirectionListener(Game game, Window window, Action action) {
this.game = game;
this.window = window;
this.action = action;
}
/**
* This method is call when the player click on the button to select the direction of the previously selected action
* @param obj contain information about the event like the button where the player clicked
*/
@Override
public void updateModel(Object obj) {
game.setSelectedAction(action);
window.setSelectedReunionAction(null);
window.getNextPlayerButtonListener().updateModel(obj);
}
}

View File

@ -0,0 +1,4 @@
/**
* Package that contains every view listeners
*/
package fr.lnl.game.client.listener;

View File

@ -0,0 +1,4 @@
/**
* Client package
*/
package fr.lnl.game.client;

View File

@ -0,0 +1,18 @@
package fr.lnl.game.client.view;
import fr.lnl.game.server.games.Game;
import fr.lnl.game.server.games.player.Player;
/**
* Abstract class implemented by every view classes
*/
public abstract class AbstractView implements View {
protected final Player player;
protected Game game;
public AbstractView(Game game, Player player) {
this.game = game;
this.player = player;
}
}

View File

@ -0,0 +1,89 @@
package fr.lnl.game.client.view;
import fr.lnl.game.server.games.Game;
import fr.lnl.game.server.games.action.Shot;
import fr.lnl.game.server.games.grid.elements.Bomb;
import fr.lnl.game.server.games.grid.elements.EnergyBall;
import fr.lnl.game.server.games.grid.elements.Mine;
import fr.lnl.game.server.games.grid.elements.Wall;
import fr.lnl.game.server.games.player.Player;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
/**
* classe qui a pour but de générer chaque case de la grid et de vérifier les entités présentes dessus
* (Mur, Joueur, Energie, Bombe, etc.)
*/
public class Cell extends Rectangle {
//Images libres de droit :
//https://www.minecraftforum.net/forums/mapping-and-modding-java-edition/resource-packs/1242533-pixel-perfection-now-with-polar-bears-1-11
//https://www.stocklib.fr/media-134367689/pixel-game-icons-vector-isolated-bombs-with-fire-graphics-of-retro-gaming-flat-style-of-weapon-with-flames-destruction-and-danger-explosive-substance.html?keyword=bomb%20pixel
private static final Image PLAYER_IMAGE = new Image("player.png");
private static final Image PLAYER_SHIELD_IMAGE = new Image("player_shield.png");
private static final Image PLAYER_SHOT_IMAGE = new Image("player_shot.png");
private static final Image ENERGY_BALL_IMAGE = new Image("energyBall.png");
private static final Image BOMB_IMAGE = new Image("bomb.png");
private static final Image MINE_IMAGE = new Image("mine.png");
private static final Image WALL_IMAGE = new Image("wall.png");
private static final Image BACKGROUND_IMAGE = new Image("background.png");
private static final BackgroundImage BG = new BackgroundImage(BACKGROUND_IMAGE,BackgroundRepeat.NO_REPEAT,BackgroundRepeat.NO_REPEAT,BackgroundPosition.DEFAULT,
BackgroundSize.DEFAULT);
public Cell(int x, int y){
setWidth(Window.cellSize);
setHeight(Window.cellSize);
relocate(x * Window.cellSize,y * Window.cellSize);
setFill(Color.WHITE);
setStroke(Color.DARKGRAY);
}
/**
* @param object the object we'll define the type
* @return a pane which contains an image depending on the type of the object
*/
public static StackPane setImageObject(Object object, Game game){
StackPane sp = new StackPane();
Image in;
BackgroundImage bg = BG;
if(object instanceof Player){
if(object.equals(game.getCurrentPlayer()) && game.getSelectedAction() instanceof Shot){
in = PLAYER_SHOT_IMAGE;
}
else if(((Player) object).isShieldDeploy()){
in = PLAYER_SHIELD_IMAGE;
}
else{
in = PLAYER_IMAGE;
}
} else if(object instanceof EnergyBall){
in = ENERGY_BALL_IMAGE;
} else if(object instanceof Bomb){
in = BOMB_IMAGE;
} else if(object instanceof Mine){
in = MINE_IMAGE;
}
else if(object instanceof Wall){
in = WALL_IMAGE;
bg = null;
}
else{
in = null;
}
ImageView iv = new ImageView(in);
iv.setFitHeight(Window.cellSize);
iv.setFitWidth(Window.cellSize);
sp.getChildren().add(iv);
sp.setBackground(new Background(bg));
return sp;
}
public static Image getPlayerImage() {
return PLAYER_IMAGE;
}
}

View File

@ -0,0 +1,113 @@
package fr.lnl.game.client.view;
import fr.lnl.game.server.games.Game;
import fr.lnl.game.server.games.action.*;
import fr.lnl.game.server.games.player.Player;
import fr.lnl.game.server.utils.Maths;
import java.util.List;
import java.util.Scanner;
/**
* View terminal, use standard input and output
*/
public class Terminal extends AbstractView {
/**
* Standard input
*/
public static Scanner scanner;
public Terminal(Game game, Player player) {
super(game, player);
}
/**
* Used to update view
*/
public void show() {
System.out.println(game.getGrid().privateView(player));
}
/**
* Used to display the winner of the game
* @param winner the player who win the game, can be Null
*/
@Override
public void displayWinner(Player winner) {
System.out.println("\n\033[0;31m====== FIN DU JEU ======\033[0m");
System.out.println(game.getGrid().toString());
if(winner == null) {
System.out.println("\n\033[0;Partie nulle, personne n'a gagné la partie\033[0m");
} else {
System.out.println("\n\033[0;33mVictoire de " + winner + " " + winner.getId() + "\033[0m");
}
}
/**
* Used when current player is an instance of {@link fr.lnl.game.server.games.player.HumanPlayer} and demand to it
* an action to do
* @return chosen action
* @see Terminal#choseReunionSameAction(List)
*/
public Action choseAction() {
List<ReunionSameAction> actions = player.generateAvailableActions();
List<Action> listActions = choseReunionSameAction(actions).getActions();
Action action = null;
String error = "Veuillez renseigner une valeur numérique comprise entre 1 et " + listActions.size();
do {
if(listActions.size() == 1){
return listActions.get(0);
}
System.out.println("Choisissez la cible :");
for (int i = 0; i < listActions.size(); i++) {
Action a = listActions.get(i);
if(a instanceof Move m){
System.out.println(i + 1 + " : " + m.getDirection());
}
else if(a instanceof DropObject o){
System.out.println(i + 1 + " : " + o.getDirection());
}
else if(a instanceof Shot s){
System.out.println(i + 1 + " : " + s.getPoint());
}
else{
System.out.println(i + 1 + " : " + a.getClass().getSimpleName());
}
}
String entry = scanner.next();
int value = Maths.testInteger(entry, scanner, error);
if (value >= 1 && value <= listActions.size()) {
action = listActions.get(value - 1);
}
} while (action == null);
return action;
}
/**
* Used when current player is an instance of {@link fr.lnl.game.server.games.player.HumanPlayer} and demand to it
* a type of action to do
* @param actions the list of actions possible
* @return the type of action to execute
* @see Terminal#choseAction()
*/
private ReunionSameAction choseReunionSameAction(List<ReunionSameAction> actions) {
ReunionSameAction reunion = null;
String error = "Veuillez renseigner une valeur numérique comprise entre 1 et " + actions.size();
Scanner scanner = new Scanner(System.in);
do {
System.out.println("Choisissez une action :");
for (int i = 0; i < actions.size(); i++) {
System.out.println(i + 1 + " : " + actions.get(i).getActionName());
}
String entry = scanner.next();
int value = Maths.testInteger(entry, scanner, error);
if (value >= 1 && value <= actions.size()) {
reunion = actions.get(value - 1);
}
}while (reunion == null) ;
return reunion;
}
}

View File

@ -0,0 +1,20 @@
package fr.lnl.game.client.view;
import fr.lnl.game.server.games.player.Player;
/**
* View interface, implemented by Terminal and Window.
*/
public interface View {
/**
* used to update screen
*/
void show();
/**
* Used to display the name of the winner
* @param winner the player who win the game, can be Null
*/
void displayWinner(/* Nullable */ Player winner);
}

View File

@ -0,0 +1,81 @@
package fr.lnl.game.client.view;
import fr.lnl.game.client.ClientPlayer;
import fr.lnl.game.client.ViewLambda;
import fr.lnl.game.client.listener.DisplayWinnerEvent;
import fr.lnl.game.server.games.Game;
import fr.lnl.game.server.games.player.HumanPlayer;
import fr.lnl.game.server.games.player.Player;
import java.util.HashMap;
import java.util.Scanner;
/**
* View manager, main access to every views
*/
public final class ViewManager {
private final Game game;
private final Class<? extends View> viewType;
public HashMap<Player, ClientPlayer> players = new HashMap<>();
public ViewManager(Game game, Class<? extends View> viewType, ViewLambda lambda) {
this.game = game;
this.viewType = viewType;
for (Player player : game.getPlayers()) {
players.put(player, new ClientPlayer(player, lambda.createViewLambda(player)));
}
}
/**
* Call when we need to change or update view
*/
public void updateView() {
players.get(game.getCurrentPlayer()).getView().show();
}
/**
* This method is call when the view is a terminal
*/
public void terminalView() {
Terminal.scanner = new Scanner(System.in);
DisplayWinnerEvent displayWinnerEvent = new DisplayWinnerEvent();
while (true) {
Player player = game.getCurrentPlayer();
System.out.println("\n\033[0;34m====== Tour n°" + game.getNbrTurn() + " =======\033[0m");
System.out.println("\nA \033[0;31m" + player + " " + player.getId() + "\033[0m de jouer");
players.get(game.getCurrentPlayer()).getView().show();
if (game.getCurrentPlayer() instanceof HumanPlayer human) {
game.setSelectedAction(((Terminal) players.get(human).getView()).choseAction());
}
boolean isOver = game.play();
System.out.println("\n\033[0;31m" + player + " " + player.getId() + "\033[0m utilise l'action \033[0;36m" +
game.getSelectedAction().getClass().getSimpleName() + "\033[0m");
if (isOver) {
displayWinnerEvent.updateModel(game.getWinner());
Terminal.scanner.close();
System.exit(0);
}
}
}
/**
* This method is call when the game is finish
* @param winner The winner of the game, can be null
*/
public void displayWinner(Player winner) {
players.get(game.getCurrentPlayer()).getView().displayWinner(winner);
}
/**
* This method is call after initialized view manager to display a first screen
*/
public void run() {
if (viewType == Terminal.class) {
terminalView();
} else {
updateView();
}
}
}

View File

@ -0,0 +1,302 @@
package fr.lnl.game.client.view;
import fr.lnl.game.client.App;
import fr.lnl.game.client.listener.ClientEventHandler;
import fr.lnl.game.client.listener.NextPlayerButtonListener;
import fr.lnl.game.client.listener.SelectActionButton;
import fr.lnl.game.client.listener.SelectDirectionListener;
import fr.lnl.game.server.games.Game;
import fr.lnl.game.server.games.action.*;
import fr.lnl.game.server.games.grid.Grid;
import fr.lnl.game.server.games.grid.elements.Box;
import fr.lnl.game.server.games.grid.elements.EnergyBall;
import fr.lnl.game.server.games.grid.elements.Explosive;
import fr.lnl.game.server.games.grid.elements.Wall;
import fr.lnl.game.server.games.player.HumanPlayer;
import fr.lnl.game.server.games.player.Player;
import fr.lnl.game.server.utils.Pair;
import fr.lnl.game.server.utils.Point;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import java.util.List;
/**
* Window view, use mouse and keyboard to control interface
*/
public class Window extends AbstractView {
// il faut pouvoir trouver une formule responsive avec width et height
public static final int cellSize = 40;
public static final int width = 500;
public static final int height = 160;
private static final Color dark = Color.valueOf("1F1F1F");
private static final Background bg = new Background(new BackgroundFill(dark, CornerRadii.EMPTY, Insets.EMPTY));
private final Stage stage;
private Pane buttonPane;
private ReunionSameAction selectedReunionAction = null;
private final NextPlayerButtonListener nextPlayerButtonListener = new NextPlayerButtonListener(game);
public Window(Stage stage, Game game, Player player) {
super(game, player);
this.stage = stage;
}
/**
* used to update screen
*/
public void show() {
Scene scene = new Scene(createContent());
stage.setScene(scene);
stage.setTitle("Game");
stage.getIcons().add(Cell.getPlayerImage());
stage.setResizable(false);
stage.sizeToScene();
stage.show();
}
/**
* Used to display the name of the winner
* @param winner the player who win the game, can be Null
*/
@Override
public void displayWinner(Player winner) {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("Fin du jeu");
alert.setHeaderText("La partie est termin\u00E9");
if(winner == null) {
alert.setContentText("La partie est nulle, personne n'a gagn\u00E9");
} else {
alert.setContentText("Le joueur " + winner + " " + winner.getId() + " a gagn\u00E9");
}
App.getViewManager().updateView();
alert.showAndWait();
}
/**
* Choose a direction between all possible from the previously selected action type
* @param selectedReunionAction previously selected type of action
* @see Window#choseReunionSameAction(List)
*/
public void choseDirectionAction(ReunionSameAction selectedReunionAction) {
for(int i = 0; i < selectedReunionAction.getActions().size(); ++i) {
Action action = selectedReunionAction.getActions().get(i);
if(action instanceof Move m){
addButtonToPane(m.getDirection().toString(),
new ClientEventHandler(new SelectDirectionListener(game, this, action)), buttonPane,
i * 100 + 50, 0);
}
else if(action instanceof DropObject o){
addButtonToPane(o.getDirection().toString(), new ClientEventHandler(new SelectDirectionListener(game, this, action)), buttonPane, i * 100 + 50, 0);
}
else if(action instanceof Shot s){
addButtonToPane(s.getPoint().toString(), new ClientEventHandler(new SelectDirectionListener(game, this, action)), buttonPane, i * 100 + 50, 0);
}
else{
addButtonToPane(action.getClass().getSimpleName(), new ClientEventHandler(new SelectDirectionListener(game, this, action)), buttonPane, i * 100 + 50, 0);
}
}
}
/**
* Used when {@link Game#getCurrentPlayer()} is an instance of {@link HumanPlayer}.
* Display button to demand to player to choose the type of action to execute
* @param actions the list of possible actions
* @see Window#choseDirectionAction(ReunionSameAction)
*/
private void choseReunionSameAction(List<ReunionSameAction> actions) {
for (int i = 0; i < actions.size(); i++) {
ReunionSameAction action = actions.get(i);
addButtonToPane(action.getActionName(), new ClientEventHandler(new SelectActionButton(game, this, action)),
buttonPane, i * 100 + 50, 0);
}
}
/**
* called when we add a button in the interface
* @param content content of the button
* @param listener listener of the button
* @param pane pane where we add the button
* @param offsetX move the button from the base position of the pane to the left (when offsetX is negative) or on
* the right (when offsetY is positive)
* @param offsetY move the button from the base position of the pane to the up (when offsetX is negative) or on
* the down (when offsetY is positive)
*/
private void addButtonToPane(String content, EventHandler<ActionEvent> listener, Pane pane, int offsetX, int offsetY) {
Button button = new Button(content);
button.setOnAction(listener);
button.setPrefSize(85, 35);
button.setStyle("-fx-background-color: #a96806;");
button.setTextFill(javafx.scene.paint.Color.WHITE);
button.setLayoutX(offsetX - button.getPrefWidth() / 2);
button.setLayoutY(offsetY);
pane.getChildren().add(button);
}
/**
* Create content of the stage
* @return the parent element to set to the stage
*/
private Parent createContent() {
Pane principalPane = new Pane();
principalPane.setPrefSize(game.getGrid().getRow() * cellSize + width, game.getGrid().getColumn() * cellSize + height); // TODO: 04/12/2021 A corriger -> doit plutôt s'adapter à la taille de la grid (grid.getRow() et grid.getColumn())
for (int i = 0; i < game.getGrid().getRow(); i++) {
for (int j = 0; j < game.getGrid().getColumn(); j++) {
Cell cell = new Cell(i, j);
principalPane.getChildren().add(cell);
}
}
Grid grid = game.getGrid();
for (int i = 0; i < grid.getRow(); i++) {
for (int j = 0; j < grid.getColumn(); j++) {
Pair<Player, Box> value = grid.getBoard().get(new Point(i, j));
if (value.getB() instanceof Wall || value.getB() instanceof EnergyBall) {
addToPrincipalPanel(value.getB(), principalPane, i, j);
}
else if(value.getB() instanceof Explosive){
if(((Explosive) value.getB()).getPlayer().equals(player)){
addToPrincipalPanel(value.getB(), principalPane, i, j);
}
else{
addToPrincipalPanel(null,principalPane, i, j);
}
}
else if (value.getA() != null) {
addToPrincipalPanel(value.getA(), principalPane, i, j);
}
else{
addToPrincipalPanel(null,principalPane, i, j);
}
}
}
putStatePlayerPane(principalPane);
putMoveTextPane(principalPane);
this.buttonPane = new Pane();
buttonPane.setLayoutX(0);
buttonPane.setLayoutY(600);
if(game.getCurrentPlayer() instanceof HumanPlayer) {
if(this.selectedReunionAction == null) {
choseReunionSameAction(player.generateAvailableActions());
} else {
choseDirectionAction(selectedReunionAction);
}
} else {
addButtonToPane("SUIVANT", new ClientEventHandler(nextPlayerButtonListener), buttonPane, (int) (principalPane.getPrefWidth() / 2), 0);
}
principalPane.getChildren().add(buttonPane);
principalPane.setBackground(bg);
return principalPane;
}
/**
* Add grid element to the principal pane
* @param object object to add to the pane
* @param principalPane pane where we'll add the object
* @param i
* @param j
*/
public void addToPrincipalPanel(Object object, Pane principalPane, int i, int j) {
StackPane sp = Cell.setImageObject(object, game);
sp.setLayoutY(i * cellSize);
sp.setLayoutX(j * cellSize);
principalPane.getChildren().add(sp);
}
/**
* Create the right pane
* @param principalPane principal pane where we'll add the left down pane
*/
public void putStatePlayerPane(Pane principalPane){
int Y = 0;
for(int i=0;i<game.getPlayers().size();i++){
StackPane sp = showStatePlayer(game.getPlayers().get(i).toString(),i);
sp.setLayoutX(480);
sp.setLayoutY(Y);
Y+=90;
principalPane.getChildren().add(sp);
}
}
/**
* Build left down pane (list all players information)
* @param type
* @param playerNumber
* @return
*/
public StackPane showStatePlayer(String type, int playerNumber){
StackPane subSp = new StackPane();
String s = type + " " + (playerNumber+1) + "\n" +
"Energie : " + game.getPlayers().get(playerNumber).getEnergy() + "\n" +
"Arme : " + game.getPlayers().get(playerNumber).getWeapon().getClass().getSimpleName() + "\n";
Text t = new Text(s);
Rectangle r = new Rectangle();
r.setWidth(500);
r.setHeight(90);
if(game.getPlayers().get(playerNumber).getEnergy() <= 0){
r.setFill(Color.valueOf("A54747"));
}else{
r.setFill(Color.valueOf("62B262"));
}
r.setStrokeWidth(1);
r.setStroke(Color.BLACK);
subSp.getChildren().addAll(r,t);
return subSp;
}
/**
* build left down pane and move it to its position
* @param principalPane the principal pane where we'll add the left down pane
*/
public void putMoveTextPane(Pane principalPane){
StackPane stateMoveTextPane = showMoveText();
stateMoveTextPane.setLayoutY(480);
principalPane.getChildren().add((stateMoveTextPane));
}
/**
* Build the left down pane (contains current player information)
* @return the built pane
*/
public StackPane showMoveText() {
StackPane subSp = new StackPane();
String action = game.getSelectedAction() == null ? "null" : game.getSelectedAction().getClass().getSimpleName();
String s = "Vous \u00EAtes \u00E0 la position " + player.getPosition().toString();
if(game.getPreviousPlayer() != null) {
s = game.getPreviousPlayer() + " : " + (game.getPreviousPlayer().getId()+1) + "\n" +
"Vient de jouer : " + action + "\n";
}
Text t = new Text(s);
t.setFill(Color.WHITE);
Rectangle r = new Rectangle();
r.setWidth(478);
r.setHeight(165);
r.setFill(dark);
subSp.getChildren().addAll(r,t);
return subSp;
}
public void setSelectedReunionAction(ReunionSameAction selectedReunionAction) {
this.selectedReunionAction = selectedReunionAction;
}
public NextPlayerButtonListener getNextPlayerButtonListener() {
return nextPlayerButtonListener;
}
}

View File

@ -0,0 +1,4 @@
/**
* View package, contains all classes about user view
*/
package fr.lnl.game.client.view;

View File

@ -0,0 +1,11 @@
/**
* Client module, include every view and controller classes from MVC model
*/
module client {
requires javafx.controls;
requires transitive javafx.graphics;
requires server;
exports fr.lnl.game.client;
exports fr.lnl.game.client.listener;
exports fr.lnl.game.client.view;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 B

BIN
livraison/dist/client.jar vendored Normal file

Binary file not shown.

BIN
livraison/dist/server.jar vendored Normal file

Binary file not shown.

View File

@ -0,0 +1,127 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>All Classes and Interfaces (client API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="class index">
<meta name="generator" content="javadoc/AllClassesIndexWriter">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
</head>
<body class="all-classes-index-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "./";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="client/module-summary.html">Module</a></li>
<li>Package</li>
<li>Class</li>
<li><a href="overview-tree.html">Tree</a></li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html#all-classes">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="All Classes and Interfaces" class="title">All Classes and Interfaces</h1>
</div>
<div id="all-classes-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="all-classes-table-tab0" role="tab" aria-selected="true" aria-controls="all-classes-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="all-classes-table-tab1" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab1', 2)" class="table-tab">Interfaces</button><button id="all-classes-table-tab2" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab2', 2)" class="table-tab">Classes</button><button id="all-classes-table-tab4" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab4', 2)" class="table-tab">Record Classes</button></div>
<div id="all-classes-table.tabpanel" role="tabpanel">
<div class="summary-table two-column-summary" aria-labelledby="all-classes-table-tab0">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="client/fr/lnl/game/client/view/AbstractView.html" title="class in fr.lnl.game.client.view">AbstractView</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Abstract class implemented by every view classes</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="client/fr/lnl/game/client/App.html" title="class in fr.lnl.game.client">App</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Application starting point</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="client/fr/lnl/game/client/view/Cell.html" title="class in fr.lnl.game.client.view">Cell</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">classe qui a pour but de générer chaque case de la grid et de vérifier les entités présentes dessus
(Mur, Joueur, Energie, Bombe, etc.)</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab4"><a href="client/fr/lnl/game/client/listener/ClientEventHandler.html" title="class in fr.lnl.game.client.listener">ClientEventHandler</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab4">
<div class="block">implementation of a listener from JavaFX <code>EventHandler</code></div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab4"><a href="client/fr/lnl/game/client/ClientPlayer.html" title="class in fr.lnl.game.client">ClientPlayer</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab4">
<div class="block">Store a view per player</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="client/fr/lnl/game/client/listener/DisplayWinnerEvent.html" title="class in fr.lnl.game.client.listener">DisplayWinnerEvent</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Used to display the winner of the game</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="client/fr/lnl/game/client/listener/NextPlayerButtonListener.html" title="class in fr.lnl.game.client.listener">NextPlayerButtonListener</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">This method is call when the current player have selected an action to play (or if it's a computer player, will
select it), then we call <code>Game.play()</code> and we update the view</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="client/fr/lnl/game/client/listener/SelectActionButton.html" title="class in fr.lnl.game.client.listener">SelectActionButton</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Used when the human player select type of action it want to play</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="client/fr/lnl/game/client/listener/SelectDirectionListener.html" title="class in fr.lnl.game.client.listener">SelectDirectionListener</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Call when the player selected the direction where it wants to play it</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="client/fr/lnl/game/client/view/Terminal.html" title="class in fr.lnl.game.client.view">Terminal</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">View terminal, use standard input and output</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="client/fr/lnl/game/client/view/View.html" title="interface in fr.lnl.game.client.view">View</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab1">
<div class="block">View interface, implemented by Terminal and Window.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="client/fr/lnl/game/client/ViewLambda.html" title="interface in fr.lnl.game.client">ViewLambda</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">
<div class="block">Used as Lambda expression to instantiate a <a href="client/fr/lnl/game/client/view/View.html" title="interface in fr.lnl.game.client.view"><code>View</code></a> per <code>Player</code> stored in <a href="client/fr/lnl/game/client/ClientPlayer.html" title="class in fr.lnl.game.client"><code>ClientPlayer</code></a></div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="client/fr/lnl/game/client/view/ViewManager.html" title="class in fr.lnl.game.client.view">ViewManager</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">View manager, main access to every views</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="client/fr/lnl/game/client/view/Window.html" title="class in fr.lnl.game.client.view">Window</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Window view, use mouse and keyboard to control interface</div>
</div>
</div>
</div>
</div>
</main>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,73 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>All Packages (client API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="package index">
<meta name="generator" content="javadoc/AllPackagesIndexWriter">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
</head>
<body class="all-packages-index-page">
<script type="text/javascript">var pathtoroot = "./";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="client/module-summary.html">Module</a></li>
<li>Package</li>
<li>Class</li>
<li><a href="overview-tree.html">Tree</a></li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html#all-packages">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="All&amp;nbsp;Packages" class="title">All&nbsp;Packages</h1>
</div>
<div class="caption"><span>Package Summary</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><a href="client/fr/lnl/game/client/package-summary.html">fr.lnl.game.client</a></div>
<div class="col-last even-row-color">
<div class="block">Client package</div>
</div>
<div class="col-first odd-row-color"><a href="client/fr/lnl/game/client/listener/package-summary.html">fr.lnl.game.client.listener</a></div>
<div class="col-last odd-row-color">
<div class="block">Package that contains every view listeners</div>
</div>
<div class="col-first even-row-color"><a href="client/fr/lnl/game/client/view/package-summary.html">fr.lnl.game.client.view</a></div>
<div class="col-last even-row-color">
<div class="block">View package, contains all classes about user view</div>
</div>
</div>
</main>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,369 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>App (client API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="declaration: module: client, package: fr.lnl.game.client, class: App">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="module-label-in-type">Module</span>&nbsp;<a href="../../../../module-summary.html">client</a></div>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">fr.lnl.game.client</a></div>
<h1 title="Class App" class="title">Class App</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">javafx.application.Application
<div class="inheritance">fr.lnl.game.client.App</div>
</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">App</span>
<span class="extends-implements">extends javafx.application.Application</span></div>
<div class="block">Application starting point</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<li>
<section class="nested-class-summary" id="nested-class-summary">
<h2>Nested Class Summary</h2>
<div class="inherited-list">
<h2 id="nested-classes-inherited-from-class-javafx.application.Application">Nested classes/interfaces inherited from class&nbsp;javafx.application.Application</h2>
<code>javafx.application.Application.Parameters</code></div>
</section>
</li>
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/LinkedList.html" title="class or interface in java.util" class="external-link">LinkedList</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
<div class="col-second even-row-color"><code><a href="#argsList" class="member-name-link">argsList</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>private static fr.lnl.game.server.games.Game</code></div>
<div class="col-second odd-row-color"><code><a href="#game" class="member-name-link">game</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>private static <a href="view/ViewManager.html" title="class in fr.lnl.game.client.view">ViewManager</a></code></div>
<div class="col-second even-row-color"><code><a href="#viewManager" class="member-name-link">viewManager</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-javafx.application.Application">Fields inherited from class&nbsp;javafx.application.Application</h3>
<code>STYLESHEET_CASPIAN, STYLESHEET_MODENA</code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">App</a>()</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>private static fr.lnl.game.server.games.player.Player</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#createNewPlayer(java.lang.Class,fr.lnl.game.server.games.player.ClassPlayer,int)" class="member-name-link">createNewPlayer</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends fr.lnl.game.server.games.player.AbstractPlayer&gt;&nbsp;playerClass,
fr.lnl.game.server.games.player.ClassPlayer&nbsp;playerType,
int&nbsp;playerListSize)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">create a new instance of the player</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static fr.lnl.game.server.games.Game</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getGame()" class="member-name-link">getGame</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="view/ViewManager.html" title="class in fr.lnl.game.client.view">ViewManager</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getViewManager()" class="member-name-link">getViewManager</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#launchTerminal()" class="member-name-link">launchTerminal</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#main(java.lang.String%5B%5D)" class="member-name-link">main</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>[]&nbsp;args)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;fr.lnl.game.server.games.player.Player&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#parsePlayers()" class="member-name-link">parsePlayers</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Parse players arguments and create instances for each player</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="view/AbstractView.html" title="class in fr.lnl.game.client.view">AbstractView</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#parseView()" class="member-name-link">parseView</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Parse the first argument given by user to know the view to use (Terminal or Window)</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#start(javafx.stage.Stage)" class="member-name-link">start</a><wbr>(javafx.stage.Stage&nbsp;stage)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#startGame()" class="member-name-link">startGame</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Parse players arguments and create a new instance of Game</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-javafx.application.Application">Methods inherited from class&nbsp;javafx.application.Application</h3>
<code>getHostServices, getParameters, getUserAgentStylesheet, init, launch, launch, notifyPreloader, setUserAgentStylesheet, stop</code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="argsList">
<h3>argsList</h3>
<div class="member-signature"><span class="modifiers">private static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/LinkedList.html" title="class or interface in java.util" class="external-link">LinkedList</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">argsList</span></div>
</section>
</li>
<li>
<section class="detail" id="game">
<h3>game</h3>
<div class="member-signature"><span class="modifiers">private static</span>&nbsp;<span class="return-type">fr.lnl.game.server.games.Game</span>&nbsp;<span class="element-name">game</span></div>
</section>
</li>
<li>
<section class="detail" id="viewManager">
<h3>viewManager</h3>
<div class="member-signature"><span class="modifiers">private static</span>&nbsp;<span class="return-type"><a href="view/ViewManager.html" title="class in fr.lnl.game.client.view">ViewManager</a></span>&nbsp;<span class="element-name">viewManager</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;()">
<h3>App</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">App</span>()</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="main(java.lang.String[])">
<h3>main</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">main</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>[]&nbsp;args)</span></div>
</section>
</li>
<li>
<section class="detail" id="startGame()">
<h3>startGame</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">startGame</span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a>,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/reflect/InvocationTargetException.html" title="class or interface in java.lang.reflect" class="external-link">InvocationTargetException</a>,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NoSuchMethodException.html" title="class or interface in java.lang" class="external-link">NoSuchMethodException</a>,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/InstantiationException.html" title="class or interface in java.lang" class="external-link">InstantiationException</a>,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalAccessException.html" title="class or interface in java.lang" class="external-link">IllegalAccessException</a></span></div>
<div class="block">Parse players arguments and create a new instance of Game</div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - when given argument is unknown</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/reflect/InvocationTargetException.html" title="class or interface in java.lang.reflect" class="external-link">InvocationTargetException</a></code> - when the creation of the player throw an exception</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NoSuchMethodException.html" title="class or interface in java.lang" class="external-link">NoSuchMethodException</a></code> - when constructor with given parameter in <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html#getConstructor(java.lang.Class...)" title="class or interface in java.lang" class="external-link"><code>Class.getConstructor(Class[])</code></a>
doesn't exist</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/InstantiationException.html" title="class or interface in java.lang" class="external-link">InstantiationException</a></code> - when the instanciation of the player is impossible (like when class is abstract),
is probably never called</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalAccessException.html" title="class or interface in java.lang" class="external-link">IllegalAccessException</a></code> - when the instanciation of thr player is impossible (like a private constructor),
is probably never called</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="start(javafx.stage.Stage)">
<h3>start</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">start</span><wbr><span class="parameters">(javafx.stage.Stage&nbsp;stage)</span></div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code>start</code>&nbsp;in class&nbsp;<code>javafx.application.Application</code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="launchTerminal()">
<h3>launchTerminal</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">launchTerminal</span>()</div>
</section>
</li>
<li>
<section class="detail" id="parsePlayers()">
<h3>parsePlayers</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;fr.lnl.game.server.games.player.Player&gt;</span>&nbsp;<span class="element-name">parsePlayers</span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a>,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NoSuchMethodException.html" title="class or interface in java.lang" class="external-link">NoSuchMethodException</a>,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/reflect/InvocationTargetException.html" title="class or interface in java.lang.reflect" class="external-link">InvocationTargetException</a>,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/InstantiationException.html" title="class or interface in java.lang" class="external-link">InstantiationException</a>,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalAccessException.html" title="class or interface in java.lang" class="external-link">IllegalAccessException</a></span></div>
<div class="block">Parse players arguments and create instances for each player</div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - when given argument is unknown</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/reflect/InvocationTargetException.html" title="class or interface in java.lang.reflect" class="external-link">InvocationTargetException</a></code> - when the creation of the player throw an exception</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NoSuchMethodException.html" title="class or interface in java.lang" class="external-link">NoSuchMethodException</a></code> - when constructor with given parameter in <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html#getConstructor(java.lang.Class...)" title="class or interface in java.lang" class="external-link"><code>Class.getConstructor(Class[])</code></a>
doesn't exist</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/InstantiationException.html" title="class or interface in java.lang" class="external-link">InstantiationException</a></code> - when the instanciation of the player is impossible (like when class is abstract),
is probably never called</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalAccessException.html" title="class or interface in java.lang" class="external-link">IllegalAccessException</a></code> - when the instanciation of thr player is impossible (like a private constructor),
is probably never called</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createNewPlayer(java.lang.Class,fr.lnl.game.server.games.player.ClassPlayer,int)">
<h3>createNewPlayer</h3>
<div class="member-signature"><span class="modifiers">private static</span>&nbsp;<span class="return-type">fr.lnl.game.server.games.player.Player</span>&nbsp;<span class="element-name">createNewPlayer</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends fr.lnl.game.server.games.player.AbstractPlayer&gt;&nbsp;playerClass,
fr.lnl.game.server.games.player.ClassPlayer&nbsp;playerType,
int&nbsp;playerListSize)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NoSuchMethodException.html" title="class or interface in java.lang" class="external-link">NoSuchMethodException</a>,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/reflect/InvocationTargetException.html" title="class or interface in java.lang.reflect" class="external-link">InvocationTargetException</a>,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/InstantiationException.html" title="class or interface in java.lang" class="external-link">InstantiationException</a>,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalAccessException.html" title="class or interface in java.lang" class="external-link">IllegalAccessException</a></span></div>
<div class="block">create a new instance of the player</div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - when given argument is unknown (probably never called in production)</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/reflect/InvocationTargetException.html" title="class or interface in java.lang.reflect" class="external-link">InvocationTargetException</a></code> - when the creation of the player throw an exception</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NoSuchMethodException.html" title="class or interface in java.lang" class="external-link">NoSuchMethodException</a></code> - when constructor with given parameter in <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html#getConstructor(java.lang.Class...)" title="class or interface in java.lang" class="external-link"><code>Class.getConstructor(Class[])</code></a>
doesn't exist</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/InstantiationException.html" title="class or interface in java.lang" class="external-link">InstantiationException</a></code> - when the instanciation of the player is impossible (like when class is abstract),
is probably never called</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalAccessException.html" title="class or interface in java.lang" class="external-link">IllegalAccessException</a></code> - when the instanciation of thr player is impossible (like a private constructor),
is probably never called</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="parseView()">
<h3>parseView</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="view/AbstractView.html" title="class in fr.lnl.game.client.view">AbstractView</a>&gt;</span>&nbsp;<span class="element-name">parseView</span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></span></div>
<div class="block">Parse the first argument given by user to know the view to use (Terminal or Window)</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>The class of the View to use</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - when given argument is unknown or no argument is given by user</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getViewManager()">
<h3>getViewManager</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="view/ViewManager.html" title="class in fr.lnl.game.client.view">ViewManager</a></span>&nbsp;<span class="element-name">getViewManager</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getGame()">
<h3>getGame</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">fr.lnl.game.server.games.Game</span>&nbsp;<span class="element-name">getGame</span>()</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,312 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>ClientPlayer (client API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="declaration: module: client, package: fr.lnl.game.client, record: ClientPlayer">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="module-label-in-type">Module</span>&nbsp;<a href="../../../../module-summary.html">client</a></div>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">fr.lnl.game.client</a></div>
<h1 title="Record Class ClientPlayer" class="title">Record Class ClientPlayer</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
<div class="inheritance">fr.lnl.game.client.ClientPlayer</div>
</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public record </span><span class="element-name type-name-label">ClientPlayer</span>(fr.lnl.game.server.games.player.Player&nbsp;serverPlayer, <a href="view/View.html" title="interface in fr.lnl.game.client.view">View</a>&nbsp;view)
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
<div class="block">Store a view per player</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final fr.lnl.game.server.games.player.Player</code></div>
<div class="col-second even-row-color"><code><a href="#serverPlayer" class="member-name-link">serverPlayer</a></code></div>
<div class="col-last even-row-color">
<div class="block">The field for the <code>serverPlayer</code> record component.</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="view/View.html" title="interface in fr.lnl.game.client.view">View</a></code></div>
<div class="col-second odd-row-color"><code><a href="#view" class="member-name-link">view</a></code></div>
<div class="col-last odd-row-color">
<div class="block">The field for the <code>view</code> record component.</div>
</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(fr.lnl.game.server.games.player.Player,fr.lnl.game.client.view.View)" class="member-name-link">ClientPlayer</a><wbr>(fr.lnl.game.server.games.player.Player&nbsp;serverPlayer,
<a href="view/View.html" title="interface in fr.lnl.game.client.view">View</a>&nbsp;view)</code></div>
<div class="col-last even-row-color">
<div class="block">Creates an instance of a <code>ClientPlayer</code> record class.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Indicates whether some other object is "equal to" this one.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>fr.lnl.game.server.games.player.Player</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getServerPlayer()" class="member-name-link">getServerPlayer</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="view/View.html" title="interface in fr.lnl.game.client.view">View</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getView()" class="member-name-link">getView</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns a hash code value for this object.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>fr.lnl.game.server.games.player.Player</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#serverPlayer()" class="member-name-link">serverPlayer</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the value of the <code>serverPlayer</code> record component.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns a string representation of this record class.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="view/View.html" title="interface in fr.lnl.game.client.view">View</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#view()" class="member-name-link">view</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the value of the <code>view</code> record component.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="serverPlayer">
<h3>serverPlayer</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">fr.lnl.game.server.games.player.Player</span>&nbsp;<span class="element-name">serverPlayer</span></div>
<div class="block">The field for the <code>serverPlayer</code> record component.</div>
</section>
</li>
<li>
<section class="detail" id="view">
<h3>view</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="view/View.html" title="interface in fr.lnl.game.client.view">View</a></span>&nbsp;<span class="element-name">view</span></div>
<div class="block">The field for the <code>view</code> record component.</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(fr.lnl.game.server.games.player.Player,fr.lnl.game.client.view.View)">
<h3>ClientPlayer</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ClientPlayer</span><wbr><span class="parameters">(fr.lnl.game.server.games.player.Player&nbsp;serverPlayer,
<a href="view/View.html" title="interface in fr.lnl.game.client.view">View</a>&nbsp;view)</span></div>
<div class="block">Creates an instance of a <code>ClientPlayer</code> record class.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>serverPlayer</code> - the value for the <code>serverPlayer</code> record component</dd>
<dd><code>view</code> - the value for the <code>view</code> record component</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="getServerPlayer()">
<h3>getServerPlayer</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">fr.lnl.game.server.games.player.Player</span>&nbsp;<span class="element-name">getServerPlayer</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getView()">
<h3>getView</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="view/View.html" title="interface in fr.lnl.game.client.view">View</a></span>&nbsp;<span class="element-name">getView</span>()</div>
</section>
</li>
<li>
<section class="detail" id="toString()">
<h3>toString</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
<dt>Returns:</dt>
<dd>a string representation of this object</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="hashCode()">
<h3>hashCode</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
<dt>Returns:</dt>
<dd>a hash code value for this object</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="equals(java.lang.Object)">
<h3>equals</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
<dt>Parameters:</dt>
<dd><code>o</code> - the object with which to compare</dd>
<dt>Returns:</dt>
<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="serverPlayer()">
<h3>serverPlayer</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">fr.lnl.game.server.games.player.Player</span>&nbsp;<span class="element-name">serverPlayer</span>()</div>
<div class="block">Returns the value of the <code>serverPlayer</code> record component.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the value of the <code>serverPlayer</code> record component</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="view()">
<h3>view</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="view/View.html" title="interface in fr.lnl.game.client.view">View</a></span>&nbsp;<span class="element-name">view</span>()</div>
<div class="block">Returns the value of the <code>view</code> record component.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the value of the <code>view</code> record component</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,139 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>ViewLambda (client API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="declaration: module: client, package: fr.lnl.game.client, interface: ViewLambda">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="module-label-in-type">Module</span>&nbsp;<a href="../../../../module-summary.html">client</a></div>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">fr.lnl.game.client</a></div>
<h1 title="Interface ViewLambda" class="title">Interface ViewLambda</h1>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>Functional Interface:</dt>
<dd>This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.</dd>
</dl>
<hr>
<div class="type-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/FunctionalInterface.html" title="class or interface in java.lang" class="external-link">@FunctionalInterface</a>
</span><span class="modifiers">public interface </span><span class="element-name type-name-label">ViewLambda</span></div>
<div class="block">Used as Lambda expression to instantiate a <a href="view/View.html" title="interface in fr.lnl.game.client.view"><code>View</code></a> per <code>Player</code> stored in <a href="ClientPlayer.html" title="class in fr.lnl.game.client"><code>ClientPlayer</code></a></div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="view/View.html" title="interface in fr.lnl.game.client.view">View</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#createViewLambda(fr.lnl.game.server.games.player.Player)" class="member-name-link">createViewLambda</a><wbr>(fr.lnl.game.server.games.player.Player&nbsp;player)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">A lambda create an anonymous class which implements this interface</div>
</div>
</div>
</div>
</div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="createViewLambda(fr.lnl.game.server.games.player.Player)">
<h3>createViewLambda</h3>
<div class="member-signature"><span class="return-type"><a href="view/View.html" title="interface in fr.lnl.game.client.view">View</a></span>&nbsp;<span class="element-name">createViewLambda</span><wbr><span class="parameters">(fr.lnl.game.server.games.player.Player&nbsp;player)</span></div>
<div class="block">A lambda create an anonymous class which implements this interface</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>player</code> - an instance of <code>Player</code> to store in <a href="view/View.html" title="interface in fr.lnl.game.client.view"><code>View</code></a></dd>
<dt>Returns:</dt>
<dd>an instance of view (depending on the first argument when launching the program)</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,286 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>ClientEventHandler (client API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="declaration: module: client, package: fr.lnl.game.client.listener, record: ClientEventHandler">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="module-label-in-type">Module</span>&nbsp;<a href="../../../../../module-summary.html">client</a></div>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">fr.lnl.game.client.listener</a></div>
<h1 title="Record Class ClientEventHandler" class="title">Record Class ClientEventHandler</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
<div class="inheritance">fr.lnl.game.client.listener.ClientEventHandler</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/EventListener.html" title="class or interface in java.util" class="external-link">EventListener</a></code>, <code>javafx.event.EventHandler&lt;javafx.event.ActionEvent&gt;</code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public record </span><span class="element-name type-name-label">ClientEventHandler</span>(fr.lnl.game.server.listener.ModelListener&nbsp;listener)
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a>
implements javafx.event.EventHandler&lt;javafx.event.ActionEvent&gt;</span></div>
<div class="block">implementation of a listener from JavaFX <code>EventHandler</code></div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final fr.lnl.game.server.listener.ModelListener</code></div>
<div class="col-second even-row-color"><code><a href="#listener" class="member-name-link">listener</a></code></div>
<div class="col-last even-row-color">
<div class="block">The field for the <code>listener</code> record component.</div>
</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(fr.lnl.game.server.listener.ModelListener)" class="member-name-link">ClientEventHandler</a><wbr>(fr.lnl.game.server.listener.ModelListener&nbsp;listener)</code></div>
<div class="col-last even-row-color">
<div class="block">Creates an instance of a <code>ClientEventHandler</code> record class.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Indicates whether some other object is "equal to" this one.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handle(javafx.event.ActionEvent)" class="member-name-link">handle</a><wbr>(javafx.event.ActionEvent&nbsp;event)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">This method is call by JavaFX when we click to the button</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns a hash code value for this object.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>fr.lnl.game.server.listener.ModelListener</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#listener()" class="member-name-link">listener</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the value of the <code>listener</code> record component.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns a string representation of this record class.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="listener">
<h3>listener</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">fr.lnl.game.server.listener.ModelListener</span>&nbsp;<span class="element-name">listener</span></div>
<div class="block">The field for the <code>listener</code> record component.</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(fr.lnl.game.server.listener.ModelListener)">
<h3>ClientEventHandler</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ClientEventHandler</span><wbr><span class="parameters">(fr.lnl.game.server.listener.ModelListener&nbsp;listener)</span></div>
<div class="block">Creates an instance of a <code>ClientEventHandler</code> record class.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>listener</code> - the value for the <code>listener</code> record component</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="handle(javafx.event.ActionEvent)">
<h3>handle</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">handle</span><wbr><span class="parameters">(javafx.event.ActionEvent&nbsp;event)</span></div>
<div class="block">This method is call by JavaFX when we click to the button</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code>handle</code>&nbsp;in interface&nbsp;<code>javafx.event.EventHandler&lt;javafx.event.ActionEvent&gt;</code></dd>
<dt>Parameters:</dt>
<dd><code>event</code> - event class created when clicking on the element</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="toString()">
<h3>toString</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
<dt>Returns:</dt>
<dd>a string representation of this object</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="hashCode()">
<h3>hashCode</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
<dt>Returns:</dt>
<dd>a hash code value for this object</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="equals(java.lang.Object)">
<h3>equals</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
<dt>Parameters:</dt>
<dd><code>o</code> - the object with which to compare</dd>
<dt>Returns:</dt>
<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="listener()">
<h3>listener</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">fr.lnl.game.server.listener.ModelListener</span>&nbsp;<span class="element-name">listener</span>()</div>
<div class="block">Returns the value of the <code>listener</code> record component.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the value of the <code>listener</code> record component</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,184 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>DisplayWinnerEvent (client API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="declaration: module: client, package: fr.lnl.game.client.listener, class: DisplayWinnerEvent">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="module-label-in-type">Module</span>&nbsp;<a href="../../../../../module-summary.html">client</a></div>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">fr.lnl.game.client.listener</a></div>
<h1 title="Class DisplayWinnerEvent" class="title">Class DisplayWinnerEvent</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">fr.lnl.game.server.listener.AbstractModelListening
<div class="inheritance">fr.lnl.game.client.listener.DisplayWinnerEvent</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code>fr.lnl.game.server.listener.ModelListener</code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">DisplayWinnerEvent</span>
<span class="extends-implements">extends fr.lnl.game.server.listener.AbstractModelListening</span></div>
<div class="block">Used to display the winner of the game</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-fr.lnl.game.server.listener.AbstractModelListening">Fields inherited from class&nbsp;fr.lnl.game.server.listener.AbstractModelListening</h3>
<code>listeners</code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">DisplayWinnerEvent</a>()</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#updateModel(java.lang.Object)" class="member-name-link">updateModel</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">This method is call when the game is over</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-fr.lnl.game.server.listener.AbstractModelListening">Methods inherited from class&nbsp;fr.lnl.game.server.listener.AbstractModelListening</h3>
<code>addListener, fireChange, removalListener</code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;()">
<h3>DisplayWinnerEvent</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DisplayWinnerEvent</span>()</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="updateModel(java.lang.Object)">
<h3>updateModel</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">updateModel</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
<div class="block">This method is call when the game is over</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>obj</code> - contains the winner of the game, can be null</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,215 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>NextPlayerButtonListener (client API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="declaration: module: client, package: fr.lnl.game.client.listener, class: NextPlayerButtonListener">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="module-label-in-type">Module</span>&nbsp;<a href="../../../../../module-summary.html">client</a></div>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">fr.lnl.game.client.listener</a></div>
<h1 title="Class NextPlayerButtonListener" class="title">Class NextPlayerButtonListener</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">fr.lnl.game.server.listener.AbstractModelListening
<div class="inheritance">fr.lnl.game.client.listener.NextPlayerButtonListener</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code>fr.lnl.game.server.listener.ModelListener</code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NextPlayerButtonListener</span>
<span class="extends-implements">extends fr.lnl.game.server.listener.AbstractModelListening</span></div>
<div class="block">This method is call when the current player have selected an action to play (or if it's a computer player, will
select it), then we call <code>Game.play()</code> and we update the view</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final <a href="DisplayWinnerEvent.html" title="class in fr.lnl.game.client.listener">DisplayWinnerEvent</a></code></div>
<div class="col-second even-row-color"><code><a href="#displayWinnerEvent" class="member-name-link">displayWinnerEvent</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>private final fr.lnl.game.server.games.Game</code></div>
<div class="col-second odd-row-color"><code><a href="#game" class="member-name-link">game</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-fr.lnl.game.server.listener.AbstractModelListening">Fields inherited from class&nbsp;fr.lnl.game.server.listener.AbstractModelListening</h3>
<code>listeners</code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(fr.lnl.game.server.games.Game)" class="member-name-link">NextPlayerButtonListener</a><wbr>(fr.lnl.game.server.games.Game&nbsp;game)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#updateModel(java.lang.Object)" class="member-name-link">updateModel</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;event)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Call when clicking on "SUIVANT" button if current player is a computer player or after the human player selected
action it want to play</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-fr.lnl.game.server.listener.AbstractModelListening">Methods inherited from class&nbsp;fr.lnl.game.server.listener.AbstractModelListening</h3>
<code>addListener, fireChange, removalListener</code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="game">
<h3>game</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">fr.lnl.game.server.games.Game</span>&nbsp;<span class="element-name">game</span></div>
</section>
</li>
<li>
<section class="detail" id="displayWinnerEvent">
<h3>displayWinnerEvent</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="DisplayWinnerEvent.html" title="class in fr.lnl.game.client.listener">DisplayWinnerEvent</a></span>&nbsp;<span class="element-name">displayWinnerEvent</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(fr.lnl.game.server.games.Game)">
<h3>NextPlayerButtonListener</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NextPlayerButtonListener</span><wbr><span class="parameters">(fr.lnl.game.server.games.Game&nbsp;game)</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="updateModel(java.lang.Object)">
<h3>updateModel</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">updateModel</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;event)</span></div>
<div class="block">Call when clicking on "SUIVANT" button if current player is a computer player or after the human player selected
action it want to play</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,229 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>SelectActionButton (client API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="declaration: module: client, package: fr.lnl.game.client.listener, class: SelectActionButton">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="module-label-in-type">Module</span>&nbsp;<a href="../../../../../module-summary.html">client</a></div>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">fr.lnl.game.client.listener</a></div>
<h1 title="Class SelectActionButton" class="title">Class SelectActionButton</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">fr.lnl.game.server.listener.AbstractModelListening
<div class="inheritance">fr.lnl.game.client.listener.SelectActionButton</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code>fr.lnl.game.server.listener.ModelListener</code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SelectActionButton</span>
<span class="extends-implements">extends fr.lnl.game.server.listener.AbstractModelListening</span></div>
<div class="block">Used when the human player select type of action it want to play</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final fr.lnl.game.server.games.Game</code></div>
<div class="col-second even-row-color"><code><a href="#game" class="member-name-link">game</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>private final fr.lnl.game.server.games.action.ReunionSameAction</code></div>
<div class="col-second odd-row-color"><code><a href="#reunionSameAction" class="member-name-link">reunionSameAction</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>private final <a href="../view/Window.html" title="class in fr.lnl.game.client.view">Window</a></code></div>
<div class="col-second even-row-color"><code><a href="#window" class="member-name-link">window</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-fr.lnl.game.server.listener.AbstractModelListening">Fields inherited from class&nbsp;fr.lnl.game.server.listener.AbstractModelListening</h3>
<code>listeners</code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(fr.lnl.game.server.games.Game,fr.lnl.game.client.view.Window,fr.lnl.game.server.games.action.ReunionSameAction)" class="member-name-link">SelectActionButton</a><wbr>(fr.lnl.game.server.games.Game&nbsp;game,
<a href="../view/Window.html" title="class in fr.lnl.game.client.view">Window</a>&nbsp;window,
fr.lnl.game.server.games.action.ReunionSameAction&nbsp;reunionSameAction)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#updateModel(java.lang.Object)" class="member-name-link">updateModel</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">This method is call when the player select the type of action it want to play</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-fr.lnl.game.server.listener.AbstractModelListening">Methods inherited from class&nbsp;fr.lnl.game.server.listener.AbstractModelListening</h3>
<code>addListener, fireChange, removalListener</code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="window">
<h3>window</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="../view/Window.html" title="class in fr.lnl.game.client.view">Window</a></span>&nbsp;<span class="element-name">window</span></div>
</section>
</li>
<li>
<section class="detail" id="reunionSameAction">
<h3>reunionSameAction</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">fr.lnl.game.server.games.action.ReunionSameAction</span>&nbsp;<span class="element-name">reunionSameAction</span></div>
</section>
</li>
<li>
<section class="detail" id="game">
<h3>game</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">fr.lnl.game.server.games.Game</span>&nbsp;<span class="element-name">game</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(fr.lnl.game.server.games.Game,fr.lnl.game.client.view.Window,fr.lnl.game.server.games.action.ReunionSameAction)">
<h3>SelectActionButton</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SelectActionButton</span><wbr><span class="parameters">(fr.lnl.game.server.games.Game&nbsp;game,
<a href="../view/Window.html" title="class in fr.lnl.game.client.view">Window</a>&nbsp;window,
fr.lnl.game.server.games.action.ReunionSameAction&nbsp;reunionSameAction)</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="updateModel(java.lang.Object)">
<h3>updateModel</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">updateModel</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
<div class="block">This method is call when the player select the type of action it want to play</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>obj</code> - contain information about the event like the button where the player clicked</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,229 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>SelectDirectionListener (client API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="declaration: module: client, package: fr.lnl.game.client.listener, class: SelectDirectionListener">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="module-label-in-type">Module</span>&nbsp;<a href="../../../../../module-summary.html">client</a></div>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">fr.lnl.game.client.listener</a></div>
<h1 title="Class SelectDirectionListener" class="title">Class SelectDirectionListener</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">fr.lnl.game.server.listener.AbstractModelListening
<div class="inheritance">fr.lnl.game.client.listener.SelectDirectionListener</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code>fr.lnl.game.server.listener.ModelListener</code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SelectDirectionListener</span>
<span class="extends-implements">extends fr.lnl.game.server.listener.AbstractModelListening</span></div>
<div class="block">Call when the player selected the direction where it wants to play it</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final fr.lnl.game.server.games.action.Action</code></div>
<div class="col-second even-row-color"><code><a href="#action" class="member-name-link">action</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>private final fr.lnl.game.server.games.Game</code></div>
<div class="col-second odd-row-color"><code><a href="#game" class="member-name-link">game</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>private final <a href="../view/Window.html" title="class in fr.lnl.game.client.view">Window</a></code></div>
<div class="col-second even-row-color"><code><a href="#window" class="member-name-link">window</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-fr.lnl.game.server.listener.AbstractModelListening">Fields inherited from class&nbsp;fr.lnl.game.server.listener.AbstractModelListening</h3>
<code>listeners</code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(fr.lnl.game.server.games.Game,fr.lnl.game.client.view.Window,fr.lnl.game.server.games.action.Action)" class="member-name-link">SelectDirectionListener</a><wbr>(fr.lnl.game.server.games.Game&nbsp;game,
<a href="../view/Window.html" title="class in fr.lnl.game.client.view">Window</a>&nbsp;window,
fr.lnl.game.server.games.action.Action&nbsp;action)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#updateModel(java.lang.Object)" class="member-name-link">updateModel</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">This method is call when the player click on the button to select the direction of the previously selected action</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-fr.lnl.game.server.listener.AbstractModelListening">Methods inherited from class&nbsp;fr.lnl.game.server.listener.AbstractModelListening</h3>
<code>addListener, fireChange, removalListener</code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="game">
<h3>game</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">fr.lnl.game.server.games.Game</span>&nbsp;<span class="element-name">game</span></div>
</section>
</li>
<li>
<section class="detail" id="action">
<h3>action</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">fr.lnl.game.server.games.action.Action</span>&nbsp;<span class="element-name">action</span></div>
</section>
</li>
<li>
<section class="detail" id="window">
<h3>window</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="../view/Window.html" title="class in fr.lnl.game.client.view">Window</a></span>&nbsp;<span class="element-name">window</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(fr.lnl.game.server.games.Game,fr.lnl.game.client.view.Window,fr.lnl.game.server.games.action.Action)">
<h3>SelectDirectionListener</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SelectDirectionListener</span><wbr><span class="parameters">(fr.lnl.game.server.games.Game&nbsp;game,
<a href="../view/Window.html" title="class in fr.lnl.game.client.view">Window</a>&nbsp;window,
fr.lnl.game.server.games.action.Action&nbsp;action)</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="updateModel(java.lang.Object)">
<h3>updateModel</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">updateModel</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
<div class="block">This method is call when the player click on the button to select the direction of the previously selected action</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>obj</code> - contain information about the event like the button where the player clicked</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,127 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>fr.lnl.game.client.listener (client API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="declaration: module: client, package: fr.lnl.game.client.listener">
<meta name="generator" content="javadoc/PackageWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="package-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Package</li>
<li>Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#package">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Package:&nbsp;</li>
<li><a href="#package-description">Description</a>&nbsp;|&nbsp;</li>
<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
<li><a href="#class-summary">Classes and Interfaces</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<div class="sub-title"><span class="module-label-in-package">Module</span>&nbsp;<a href="../../../../../module-summary.html">client</a></div>
<h1 title="Package fr.lnl.game.client.listener" class="title">Package fr.lnl.game.client.listener</h1>
</div>
<hr>
<div class="package-signature">package <span class="element-name">fr.lnl.game.client.listener</span></div>
<section class="package-description" id="package-description">
<div class="block">Package that contains every view listeners</div>
</section>
<section class="summary">
<ul class="summary-list">
<li>
<div id="related-package-summary">
<div class="caption"><span>Related Packages</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><a href="../package-summary.html">fr.lnl.game.client</a></div>
<div class="col-last even-row-color">
<div class="block">Client package</div>
</div>
<div class="col-first odd-row-color"><a href="../view/package-summary.html">fr.lnl.game.client.view</a></div>
<div class="col-last odd-row-color">
<div class="block">View package, contains all classes about user view</div>
</div>
</div>
</div>
</li>
<li>
<div id="class-summary">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab4" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab4', 2)" class="table-tab">Record Classes</button></div>
<div id="class-summary.tabpanel" role="tabpanel">
<div class="summary-table two-column-summary" aria-labelledby="class-summary-tab0">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color class-summary class-summary-tab4"><a href="ClientEventHandler.html" title="class in fr.lnl.game.client.listener">ClientEventHandler</a></div>
<div class="col-last even-row-color class-summary class-summary-tab4">
<div class="block">implementation of a listener from JavaFX <code>EventHandler</code></div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="DisplayWinnerEvent.html" title="class in fr.lnl.game.client.listener">DisplayWinnerEvent</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Used to display the winner of the game</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="NextPlayerButtonListener.html" title="class in fr.lnl.game.client.listener">NextPlayerButtonListener</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">This method is call when the current player have selected an action to play (or if it's a computer player, will
select it), then we call <code>Game.play()</code> and we update the view</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="SelectActionButton.html" title="class in fr.lnl.game.client.listener">SelectActionButton</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Used when the human player select type of action it want to play</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SelectDirectionListener.html" title="class in fr.lnl.game.client.listener">SelectDirectionListener</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Call when the player selected the direction where it wants to play it</div>
</div>
</div>
</div>
</div>
</li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,82 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>fr.lnl.game.client.listener Class Hierarchy (client API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="tree: module: client, package: fr.lnl.game.client.listener">
<meta name="generator" content="javadoc/PackageTreeWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="package-tree-page">
<script type="text/javascript">var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li>Class</li>
<li class="nav-bar-cell1-rev">Tree</li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 class="title">Hierarchy For Package fr.lnl.game.client.listener</h1>
<span class="package-hierarchy-label">Package Hierarchies:</span>
<ul class="horizontal">
<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
</ul>
</div>
<section class="hierarchy">
<h2 title="Class Hierarchy">Class Hierarchy</h2>
<ul>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
<ul>
<li class="circle">fr.lnl.game.server.listener.AbstractModelListening (implements fr.lnl.game.server.listener.ModelListener)
<ul>
<li class="circle">fr.lnl.game.client.listener.<a href="DisplayWinnerEvent.html" class="type-name-link" title="class in fr.lnl.game.client.listener">DisplayWinnerEvent</a></li>
<li class="circle">fr.lnl.game.client.listener.<a href="NextPlayerButtonListener.html" class="type-name-link" title="class in fr.lnl.game.client.listener">NextPlayerButtonListener</a></li>
<li class="circle">fr.lnl.game.client.listener.<a href="SelectActionButton.html" class="type-name-link" title="class in fr.lnl.game.client.listener">SelectActionButton</a></li>
<li class="circle">fr.lnl.game.client.listener.<a href="SelectDirectionListener.html" class="type-name-link" title="class in fr.lnl.game.client.listener">SelectDirectionListener</a></li>
</ul>
</li>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" class="type-name-link external-link" title="class or interface in java.lang">Record</a>
<ul>
<li class="circle">fr.lnl.game.client.listener.<a href="ClientEventHandler.html" class="type-name-link" title="class in fr.lnl.game.client.listener">ClientEventHandler</a> (implements javafx.event.EventHandler&lt;T&gt;)</li>
</ul>
</li>
</ul>
</li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,118 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>fr.lnl.game.client (client API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="declaration: module: client, package: fr.lnl.game.client">
<meta name="generator" content="javadoc/PackageWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="package-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Package</li>
<li>Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html#package">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Package:&nbsp;</li>
<li><a href="#package-description">Description</a>&nbsp;|&nbsp;</li>
<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
<li><a href="#class-summary">Classes and Interfaces</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<div class="sub-title"><span class="module-label-in-package">Module</span>&nbsp;<a href="../../../../module-summary.html">client</a></div>
<h1 title="Package fr.lnl.game.client" class="title">Package fr.lnl.game.client</h1>
</div>
<hr>
<div class="package-signature">package <span class="element-name">fr.lnl.game.client</span></div>
<section class="package-description" id="package-description">
<div class="block">Client package</div>
</section>
<section class="summary">
<ul class="summary-list">
<li>
<div id="related-package-summary">
<div class="caption"><span>Related Packages</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><a href="listener/package-summary.html">fr.lnl.game.client.listener</a></div>
<div class="col-last even-row-color">
<div class="block">Package that contains every view listeners</div>
</div>
<div class="col-first odd-row-color"><a href="view/package-summary.html">fr.lnl.game.client.view</a></div>
<div class="col-last odd-row-color">
<div class="block">View package, contains all classes about user view</div>
</div>
</div>
</div>
</li>
<li>
<div id="class-summary">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab1" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab1', 2)" class="table-tab">Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab4" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab4', 2)" class="table-tab">Record Classes</button></div>
<div id="class-summary.tabpanel" role="tabpanel">
<div class="summary-table two-column-summary" aria-labelledby="class-summary-tab0">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="App.html" title="class in fr.lnl.game.client">App</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Application starting point</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab4"><a href="ClientPlayer.html" title="class in fr.lnl.game.client">ClientPlayer</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab4">
<div class="block">Store a view per player</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ViewLambda.html" title="interface in fr.lnl.game.client">ViewLambda</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Used as Lambda expression to instantiate a <a href="view/View.html" title="interface in fr.lnl.game.client.view"><code>View</code></a> per <code>Player</code> stored in <a href="ClientPlayer.html" title="class in fr.lnl.game.client"><code>ClientPlayer</code></a></div>
</div>
</div>
</div>
</div>
</li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,85 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>fr.lnl.game.client Class Hierarchy (client API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="tree: module: client, package: fr.lnl.game.client">
<meta name="generator" content="javadoc/PackageTreeWriter">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="package-tree-page">
<script type="text/javascript">var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li>Class</li>
<li class="nav-bar-cell1-rev">Tree</li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html#tree">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 class="title">Hierarchy For Package fr.lnl.game.client</h1>
<span class="package-hierarchy-label">Package Hierarchies:</span>
<ul class="horizontal">
<li><a href="../../../../../overview-tree.html">All Packages</a></li>
</ul>
</div>
<section class="hierarchy">
<h2 title="Class Hierarchy">Class Hierarchy</h2>
<ul>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
<ul>
<li class="circle">javafx.application.Application
<ul>
<li class="circle">fr.lnl.game.client.<a href="App.html" class="type-name-link" title="class in fr.lnl.game.client">App</a></li>
</ul>
</li>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" class="type-name-link external-link" title="class or interface in java.lang">Record</a>
<ul>
<li class="circle">fr.lnl.game.client.<a href="ClientPlayer.html" class="type-name-link" title="class in fr.lnl.game.client">ClientPlayer</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</section>
<section class="hierarchy">
<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
<ul>
<li class="circle">fr.lnl.game.client.<a href="ViewLambda.html" class="type-name-link" title="interface in fr.lnl.game.client">ViewLambda</a></li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,180 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>AbstractView (client API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="declaration: module: client, package: fr.lnl.game.client.view, class: AbstractView">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li>Method</li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="module-label-in-type">Module</span>&nbsp;<a href="../../../../../module-summary.html">client</a></div>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">fr.lnl.game.client.view</a></div>
<h1 title="Class AbstractView" class="title">Class AbstractView</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">fr.lnl.game.client.view.AbstractView</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="View.html" title="interface in fr.lnl.game.client.view">View</a></code></dd>
</dl>
<dl class="notes">
<dt>Direct Known Subclasses:</dt>
<dd><code><a href="Terminal.html" title="class in fr.lnl.game.client.view">Terminal</a></code>, <code><a href="Window.html" title="class in fr.lnl.game.client.view">Window</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public abstract class </span><span class="element-name type-name-label">AbstractView</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
implements <a href="View.html" title="interface in fr.lnl.game.client.view">View</a></span></div>
<div class="block">Abstract class implemented by every view classes</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>protected fr.lnl.game.server.games.Game</code></div>
<div class="col-second even-row-color"><code><a href="#game" class="member-name-link">game</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>protected final fr.lnl.game.server.games.player.Player</code></div>
<div class="col-second odd-row-color"><code><a href="#player" class="member-name-link">player</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(fr.lnl.game.server.games.Game,fr.lnl.game.server.games.player.Player)" class="member-name-link">AbstractView</a><wbr>(fr.lnl.game.server.games.Game&nbsp;game,
fr.lnl.game.server.games.player.Player&nbsp;player)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-fr.lnl.game.client.view.View">Methods inherited from interface&nbsp;fr.lnl.game.client.view.<a href="View.html" title="interface in fr.lnl.game.client.view">View</a></h3>
<code><a href="View.html#displayWinner(fr.lnl.game.server.games.player.Player)">displayWinner</a>, <a href="View.html#show()">show</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="player">
<h3>player</h3>
<div class="member-signature"><span class="modifiers">protected final</span>&nbsp;<span class="return-type">fr.lnl.game.server.games.player.Player</span>&nbsp;<span class="element-name">player</span></div>
</section>
</li>
<li>
<section class="detail" id="game">
<h3>game</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">fr.lnl.game.server.games.Game</span>&nbsp;<span class="element-name">game</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(fr.lnl.game.server.games.Game,fr.lnl.game.server.games.player.Player)">
<h3>AbstractView</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">AbstractView</span><wbr><span class="parameters">(fr.lnl.game.server.games.Game&nbsp;game,
fr.lnl.game.server.games.player.Player&nbsp;player)</span></div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,271 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>Terminal (client API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="declaration: module: client, package: fr.lnl.game.client.view, class: Terminal">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="module-label-in-type">Module</span>&nbsp;<a href="../../../../../module-summary.html">client</a></div>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">fr.lnl.game.client.view</a></div>
<h1 title="Class Terminal" class="title">Class Terminal</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="AbstractView.html" title="class in fr.lnl.game.client.view">fr.lnl.game.client.view.AbstractView</a>
<div class="inheritance">fr.lnl.game.client.view.Terminal</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="View.html" title="interface in fr.lnl.game.client.view">View</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">Terminal</span>
<span class="extends-implements">extends <a href="AbstractView.html" title="class in fr.lnl.game.client.view">AbstractView</a></span></div>
<div class="block">View terminal, use standard input and output</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html" title="class or interface in java.util" class="external-link">Scanner</a></code></div>
<div class="col-second even-row-color"><code><a href="#scanner" class="member-name-link">scanner</a></code></div>
<div class="col-last even-row-color">
<div class="block">Standard input</div>
</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-fr.lnl.game.client.view.AbstractView">Fields inherited from class&nbsp;fr.lnl.game.client.view.<a href="AbstractView.html" title="class in fr.lnl.game.client.view">AbstractView</a></h3>
<code><a href="AbstractView.html#game">game</a>, <a href="AbstractView.html#player">player</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(fr.lnl.game.server.games.Game,fr.lnl.game.server.games.player.Player)" class="member-name-link">Terminal</a><wbr>(fr.lnl.game.server.games.Game&nbsp;game,
fr.lnl.game.server.games.player.Player&nbsp;player)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>fr.lnl.game.server.games.action.Action</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#choseAction()" class="member-name-link">choseAction</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Used when current player is an instance of <code>HumanPlayer</code> and demand to it
an action to do</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private fr.lnl.game.server.games.action.ReunionSameAction</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#choseReunionSameAction(java.util.List)" class="member-name-link">choseReunionSameAction</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;fr.lnl.game.server.games.action.ReunionSameAction&gt;&nbsp;actions)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Used when current player is an instance of <code>HumanPlayer</code> and demand to it
a type of action to do</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#displayWinner(fr.lnl.game.server.games.player.Player)" class="member-name-link">displayWinner</a><wbr>(fr.lnl.game.server.games.player.Player&nbsp;winner)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Used to display the winner of the game</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#show()" class="member-name-link">show</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Used to update view</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="scanner">
<h3>scanner</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html" title="class or interface in java.util" class="external-link">Scanner</a></span>&nbsp;<span class="element-name">scanner</span></div>
<div class="block">Standard input</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(fr.lnl.game.server.games.Game,fr.lnl.game.server.games.player.Player)">
<h3>Terminal</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Terminal</span><wbr><span class="parameters">(fr.lnl.game.server.games.Game&nbsp;game,
fr.lnl.game.server.games.player.Player&nbsp;player)</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="show()">
<h3>show</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">show</span>()</div>
<div class="block">Used to update view</div>
</section>
</li>
<li>
<section class="detail" id="displayWinner(fr.lnl.game.server.games.player.Player)">
<h3>displayWinner</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">displayWinner</span><wbr><span class="parameters">(fr.lnl.game.server.games.player.Player&nbsp;winner)</span></div>
<div class="block">Used to display the winner of the game</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>winner</code> - the player who win the game, can be Null</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="choseAction()">
<h3>choseAction</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">fr.lnl.game.server.games.action.Action</span>&nbsp;<span class="element-name">choseAction</span>()</div>
<div class="block">Used when current player is an instance of <code>HumanPlayer</code> and demand to it
an action to do</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>chosen action</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="#choseReunionSameAction(java.util.List)"><code>choseReunionSameAction(List)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="choseReunionSameAction(java.util.List)">
<h3>choseReunionSameAction</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">fr.lnl.game.server.games.action.ReunionSameAction</span>&nbsp;<span class="element-name">choseReunionSameAction</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;fr.lnl.game.server.games.action.ReunionSameAction&gt;&nbsp;actions)</span></div>
<div class="block">Used when current player is an instance of <code>HumanPlayer</code> and demand to it
a type of action to do</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>actions</code> - the list of actions possible</dd>
<dt>Returns:</dt>
<dd>the type of action to execute</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="#choseAction()"><code>choseAction()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,148 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>View (client API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="declaration: module: client, package: fr.lnl.game.client.view, interface: View">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="module-label-in-type">Module</span>&nbsp;<a href="../../../../../module-summary.html">client</a></div>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">fr.lnl.game.client.view</a></div>
<h1 title="Interface View" class="title">Interface View</h1>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="AbstractView.html" title="class in fr.lnl.game.client.view">AbstractView</a></code>, <code><a href="Terminal.html" title="class in fr.lnl.game.client.view">Terminal</a></code>, <code><a href="Window.html" title="class in fr.lnl.game.client.view">Window</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">View</span></div>
<div class="block">View interface, implemented by Terminal and Window.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#displayWinner(fr.lnl.game.server.games.player.Player)" class="member-name-link">displayWinner</a><wbr>(fr.lnl.game.server.games.player.Player&nbsp;winner)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Used to display the name of the winner</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#show()" class="member-name-link">show</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">used to update screen</div>
</div>
</div>
</div>
</div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="show()">
<h3>show</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">show</span>()</div>
<div class="block">used to update screen</div>
</section>
</li>
<li>
<section class="detail" id="displayWinner(fr.lnl.game.server.games.player.Player)">
<h3>displayWinner</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">displayWinner</span><wbr><span class="parameters">(fr.lnl.game.server.games.player.Player&nbsp;winner)</span></div>
<div class="block">Used to display the name of the winner</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>winner</code> - the player who win the game, can be Null</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,253 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>ViewManager (client API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="declaration: module: client, package: fr.lnl.game.client.view, class: ViewManager">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="module-label-in-type">Module</span>&nbsp;<a href="../../../../../module-summary.html">client</a></div>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">fr.lnl.game.client.view</a></div>
<h1 title="Class ViewManager" class="title">Class ViewManager</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">fr.lnl.game.client.view.ViewManager</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">ViewManager</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">View manager, main access to every views</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final fr.lnl.game.server.games.Game</code></div>
<div class="col-second even-row-color"><code><a href="#game" class="member-name-link">game</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/HashMap.html" title="class or interface in java.util" class="external-link">HashMap</a>&lt;fr.lnl.game.server.games.player.Player,<wbr><a href="../ClientPlayer.html" title="class in fr.lnl.game.client">ClientPlayer</a>&gt;</code></div>
<div class="col-second odd-row-color"><code><a href="#players" class="member-name-link">players</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="View.html" title="interface in fr.lnl.game.client.view">View</a>&gt;</code></div>
<div class="col-second even-row-color"><code><a href="#viewType" class="member-name-link">viewType</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(fr.lnl.game.server.games.Game,java.lang.Class,fr.lnl.game.client.ViewLambda)" class="member-name-link">ViewManager</a><wbr>(fr.lnl.game.server.games.Game&nbsp;game,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="View.html" title="interface in fr.lnl.game.client.view">View</a>&gt;&nbsp;viewType,
<a href="../ViewLambda.html" title="interface in fr.lnl.game.client">ViewLambda</a>&nbsp;lambda)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#displayWinner(fr.lnl.game.server.games.player.Player)" class="member-name-link">displayWinner</a><wbr>(fr.lnl.game.server.games.player.Player&nbsp;winner)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">This method is call when the game is finish</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#run()" class="member-name-link">run</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">This method is call after initialized view manager to display a first screen</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#terminalView()" class="member-name-link">terminalView</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">This method is call when the view is a terminal</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#updateView()" class="member-name-link">updateView</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Call when we need to change or update view</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="game">
<h3>game</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">fr.lnl.game.server.games.Game</span>&nbsp;<span class="element-name">game</span></div>
</section>
</li>
<li>
<section class="detail" id="viewType">
<h3>viewType</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="View.html" title="interface in fr.lnl.game.client.view">View</a>&gt;</span>&nbsp;<span class="element-name">viewType</span></div>
</section>
</li>
<li>
<section class="detail" id="players">
<h3>players</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/HashMap.html" title="class or interface in java.util" class="external-link">HashMap</a>&lt;fr.lnl.game.server.games.player.Player,<wbr><a href="../ClientPlayer.html" title="class in fr.lnl.game.client">ClientPlayer</a>&gt;</span>&nbsp;<span class="element-name">players</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(fr.lnl.game.server.games.Game,java.lang.Class,fr.lnl.game.client.ViewLambda)">
<h3>ViewManager</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ViewManager</span><wbr><span class="parameters">(fr.lnl.game.server.games.Game&nbsp;game,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="View.html" title="interface in fr.lnl.game.client.view">View</a>&gt;&nbsp;viewType,
<a href="../ViewLambda.html" title="interface in fr.lnl.game.client">ViewLambda</a>&nbsp;lambda)</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="updateView()">
<h3>updateView</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">updateView</span>()</div>
<div class="block">Call when we need to change or update view</div>
</section>
</li>
<li>
<section class="detail" id="terminalView()">
<h3>terminalView</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">terminalView</span>()</div>
<div class="block">This method is call when the view is a terminal</div>
</section>
</li>
<li>
<section class="detail" id="displayWinner(fr.lnl.game.server.games.player.Player)">
<h3>displayWinner</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">displayWinner</span><wbr><span class="parameters">(fr.lnl.game.server.games.player.Player&nbsp;winner)</span></div>
<div class="block">This method is call when the game is finish</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>winner</code> - The winner of the game, can be null</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="run()">
<h3>run</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">run</span>()</div>
<div class="block">This method is call after initialized view manager to display a first screen</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,518 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>Window (client API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="declaration: module: client, package: fr.lnl.game.client.view, class: Window">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="module-label-in-type">Module</span>&nbsp;<a href="../../../../../module-summary.html">client</a></div>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">fr.lnl.game.client.view</a></div>
<h1 title="Class Window" class="title">Class Window</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="AbstractView.html" title="class in fr.lnl.game.client.view">fr.lnl.game.client.view.AbstractView</a>
<div class="inheritance">fr.lnl.game.client.view.Window</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="View.html" title="interface in fr.lnl.game.client.view">View</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">Window</span>
<span class="extends-implements">extends <a href="AbstractView.html" title="class in fr.lnl.game.client.view">AbstractView</a></span></div>
<div class="block">Window view, use mouse and keyboard to control interface</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private static final javafx.scene.layout.Background</code></div>
<div class="col-second even-row-color"><code><a href="#bg" class="member-name-link">bg</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>private javafx.scene.layout.Pane</code></div>
<div class="col-second odd-row-color"><code><a href="#buttonPane" class="member-name-link">buttonPane</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>static final int</code></div>
<div class="col-second even-row-color"><code><a href="#cellSize" class="member-name-link">cellSize</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>private static final javafx.scene.paint.Color</code></div>
<div class="col-second odd-row-color"><code><a href="#dark" class="member-name-link">dark</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>static final int</code></div>
<div class="col-second even-row-color"><code><a href="#height" class="member-name-link">height</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>private final <a href="../listener/NextPlayerButtonListener.html" title="class in fr.lnl.game.client.listener">NextPlayerButtonListener</a></code></div>
<div class="col-second odd-row-color"><code><a href="#nextPlayerButtonListener" class="member-name-link">nextPlayerButtonListener</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>private fr.lnl.game.server.games.action.ReunionSameAction</code></div>
<div class="col-second even-row-color"><code><a href="#selectedReunionAction" class="member-name-link">selectedReunionAction</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>private final javafx.stage.Stage</code></div>
<div class="col-second odd-row-color"><code><a href="#stage" class="member-name-link">stage</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>static final int</code></div>
<div class="col-second even-row-color"><code><a href="#width" class="member-name-link">width</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-fr.lnl.game.client.view.AbstractView">Fields inherited from class&nbsp;fr.lnl.game.client.view.<a href="AbstractView.html" title="class in fr.lnl.game.client.view">AbstractView</a></h3>
<code><a href="AbstractView.html#game">game</a>, <a href="AbstractView.html#player">player</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(javafx.stage.Stage,fr.lnl.game.server.games.Game,fr.lnl.game.server.games.player.Player)" class="member-name-link">Window</a><wbr>(javafx.stage.Stage&nbsp;stage,
fr.lnl.game.server.games.Game&nbsp;game,
fr.lnl.game.server.games.player.Player&nbsp;player)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addButtonToPane(java.lang.String,javafx.event.EventHandler,javafx.scene.layout.Pane,int,int)" class="member-name-link">addButtonToPane</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;content,
javafx.event.EventHandler&lt;javafx.event.ActionEvent&gt;&nbsp;listener,
javafx.scene.layout.Pane&nbsp;pane,
int&nbsp;offsetX,
int&nbsp;offsetY)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">called when we add a button in the interface</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addToPrincipalPanel(java.lang.Object,javafx.scene.layout.Pane,int,int)" class="member-name-link">addToPrincipalPanel</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;object,
javafx.scene.layout.Pane&nbsp;principalPane,
int&nbsp;i,
int&nbsp;j)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Add grid element to the principal pane</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#choseDirectionAction(fr.lnl.game.server.games.action.ReunionSameAction)" class="member-name-link">choseDirectionAction</a><wbr>(fr.lnl.game.server.games.action.ReunionSameAction&nbsp;selectedReunionAction)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Choose a direction between all possible from the previously selected action type</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#choseReunionSameAction(java.util.List)" class="member-name-link">choseReunionSameAction</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;fr.lnl.game.server.games.action.ReunionSameAction&gt;&nbsp;actions)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Used when <code>Game.getCurrentPlayer()</code> is an instance of <code>HumanPlayer</code>.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private javafx.scene.Parent</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createContent()" class="member-name-link">createContent</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Create content of the stage</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#displayWinner(fr.lnl.game.server.games.player.Player)" class="member-name-link">displayWinner</a><wbr>(fr.lnl.game.server.games.player.Player&nbsp;winner)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Used to display the name of the winner</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../listener/NextPlayerButtonListener.html" title="class in fr.lnl.game.client.listener">NextPlayerButtonListener</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getNextPlayerButtonListener()" class="member-name-link">getNextPlayerButtonListener</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#putMoveTextPane(javafx.scene.layout.Pane)" class="member-name-link">putMoveTextPane</a><wbr>(javafx.scene.layout.Pane&nbsp;principalPane)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">build left down pane and move it to its position</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#putStatePlayerPane(javafx.scene.layout.Pane)" class="member-name-link">putStatePlayerPane</a><wbr>(javafx.scene.layout.Pane&nbsp;principalPane)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Create the right pane</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setSelectedReunionAction(fr.lnl.game.server.games.action.ReunionSameAction)" class="member-name-link">setSelectedReunionAction</a><wbr>(fr.lnl.game.server.games.action.ReunionSameAction&nbsp;selectedReunionAction)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#show()" class="member-name-link">show</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">used to update screen</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>javafx.scene.layout.StackPane</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#showMoveText()" class="member-name-link">showMoveText</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Build the left down pane (contains current player information)</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>javafx.scene.layout.StackPane</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#showStatePlayer(java.lang.String,int)" class="member-name-link">showStatePlayer</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;type,
int&nbsp;playerNumber)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Build left down pane (list all players information)</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="cellSize">
<h3>cellSize</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">cellSize</span></div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="../../../../../../constant-values.html#fr.lnl.game.client.view.Window.cellSize">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="width">
<h3>width</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">width</span></div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="../../../../../../constant-values.html#fr.lnl.game.client.view.Window.width">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="height">
<h3>height</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">height</span></div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="../../../../../../constant-values.html#fr.lnl.game.client.view.Window.height">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="dark">
<h3>dark</h3>
<div class="member-signature"><span class="modifiers">private static final</span>&nbsp;<span class="return-type">javafx.scene.paint.Color</span>&nbsp;<span class="element-name">dark</span></div>
</section>
</li>
<li>
<section class="detail" id="bg">
<h3>bg</h3>
<div class="member-signature"><span class="modifiers">private static final</span>&nbsp;<span class="return-type">javafx.scene.layout.Background</span>&nbsp;<span class="element-name">bg</span></div>
</section>
</li>
<li>
<section class="detail" id="stage">
<h3>stage</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">javafx.stage.Stage</span>&nbsp;<span class="element-name">stage</span></div>
</section>
</li>
<li>
<section class="detail" id="buttonPane">
<h3>buttonPane</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">javafx.scene.layout.Pane</span>&nbsp;<span class="element-name">buttonPane</span></div>
</section>
</li>
<li>
<section class="detail" id="selectedReunionAction">
<h3>selectedReunionAction</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">fr.lnl.game.server.games.action.ReunionSameAction</span>&nbsp;<span class="element-name">selectedReunionAction</span></div>
</section>
</li>
<li>
<section class="detail" id="nextPlayerButtonListener">
<h3>nextPlayerButtonListener</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="../listener/NextPlayerButtonListener.html" title="class in fr.lnl.game.client.listener">NextPlayerButtonListener</a></span>&nbsp;<span class="element-name">nextPlayerButtonListener</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(javafx.stage.Stage,fr.lnl.game.server.games.Game,fr.lnl.game.server.games.player.Player)">
<h3>Window</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Window</span><wbr><span class="parameters">(javafx.stage.Stage&nbsp;stage,
fr.lnl.game.server.games.Game&nbsp;game,
fr.lnl.game.server.games.player.Player&nbsp;player)</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="show()">
<h3>show</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">show</span>()</div>
<div class="block">used to update screen</div>
</section>
</li>
<li>
<section class="detail" id="displayWinner(fr.lnl.game.server.games.player.Player)">
<h3>displayWinner</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">displayWinner</span><wbr><span class="parameters">(fr.lnl.game.server.games.player.Player&nbsp;winner)</span></div>
<div class="block">Used to display the name of the winner</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>winner</code> - the player who win the game, can be Null</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="choseDirectionAction(fr.lnl.game.server.games.action.ReunionSameAction)">
<h3>choseDirectionAction</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">choseDirectionAction</span><wbr><span class="parameters">(fr.lnl.game.server.games.action.ReunionSameAction&nbsp;selectedReunionAction)</span></div>
<div class="block">Choose a direction between all possible from the previously selected action type</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>selectedReunionAction</code> - previously selected type of action</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="#choseReunionSameAction(java.util.List)"><code>choseReunionSameAction(List)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="choseReunionSameAction(java.util.List)">
<h3>choseReunionSameAction</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">choseReunionSameAction</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;fr.lnl.game.server.games.action.ReunionSameAction&gt;&nbsp;actions)</span></div>
<div class="block">Used when <code>Game.getCurrentPlayer()</code> is an instance of <code>HumanPlayer</code>.
Display button to demand to player to choose the type of action to execute</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>actions</code> - the list of possible actions</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="#choseDirectionAction(fr.lnl.game.server.games.action.ReunionSameAction)"><code>choseDirectionAction(ReunionSameAction)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="addButtonToPane(java.lang.String,javafx.event.EventHandler,javafx.scene.layout.Pane,int,int)">
<h3>addButtonToPane</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addButtonToPane</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;content,
javafx.event.EventHandler&lt;javafx.event.ActionEvent&gt;&nbsp;listener,
javafx.scene.layout.Pane&nbsp;pane,
int&nbsp;offsetX,
int&nbsp;offsetY)</span></div>
<div class="block">called when we add a button in the interface</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>content</code> - content of the button</dd>
<dd><code>listener</code> - listener of the button</dd>
<dd><code>pane</code> - pane where we add the button</dd>
<dd><code>offsetX</code> - move the button from the base position of the pane to the left (when offsetX is negative) or on
the right (when offsetY is positive)</dd>
<dd><code>offsetY</code> - move the button from the base position of the pane to the up (when offsetX is negative) or on
the down (when offsetY is positive)</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createContent()">
<h3>createContent</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">javafx.scene.Parent</span>&nbsp;<span class="element-name">createContent</span>()</div>
<div class="block">Create content of the stage</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the parent element to set to the stage</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="addToPrincipalPanel(java.lang.Object,javafx.scene.layout.Pane,int,int)">
<h3>addToPrincipalPanel</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addToPrincipalPanel</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;object,
javafx.scene.layout.Pane&nbsp;principalPane,
int&nbsp;i,
int&nbsp;j)</span></div>
<div class="block">Add grid element to the principal pane</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>object</code> - object to add to the pane</dd>
<dd><code>principalPane</code> - pane where we'll add the object</dd>
<dd><code>i</code> - </dd>
<dd><code>j</code> - </dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="putStatePlayerPane(javafx.scene.layout.Pane)">
<h3>putStatePlayerPane</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">putStatePlayerPane</span><wbr><span class="parameters">(javafx.scene.layout.Pane&nbsp;principalPane)</span></div>
<div class="block">Create the right pane</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>principalPane</code> - principal pane where we'll add the left down pane</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="showStatePlayer(java.lang.String,int)">
<h3>showStatePlayer</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">javafx.scene.layout.StackPane</span>&nbsp;<span class="element-name">showStatePlayer</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;type,
int&nbsp;playerNumber)</span></div>
<div class="block">Build left down pane (list all players information)</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>type</code> - </dd>
<dd><code>playerNumber</code> - </dd>
<dt>Returns:</dt>
</dl>
</section>
</li>
<li>
<section class="detail" id="putMoveTextPane(javafx.scene.layout.Pane)">
<h3>putMoveTextPane</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">putMoveTextPane</span><wbr><span class="parameters">(javafx.scene.layout.Pane&nbsp;principalPane)</span></div>
<div class="block">build left down pane and move it to its position</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>principalPane</code> - the principal pane where we'll add the left down pane</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="showMoveText()">
<h3>showMoveText</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">javafx.scene.layout.StackPane</span>&nbsp;<span class="element-name">showMoveText</span>()</div>
<div class="block">Build the left down pane (contains current player information)</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the built pane</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setSelectedReunionAction(fr.lnl.game.server.games.action.ReunionSameAction)">
<h3>setSelectedReunionAction</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setSelectedReunionAction</span><wbr><span class="parameters">(fr.lnl.game.server.games.action.ReunionSameAction&nbsp;selectedReunionAction)</span></div>
</section>
</li>
<li>
<section class="detail" id="getNextPlayerButtonListener()">
<h3>getNextPlayerButtonListener</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../listener/NextPlayerButtonListener.html" title="class in fr.lnl.game.client.listener">NextPlayerButtonListener</a></span>&nbsp;<span class="element-name">getNextPlayerButtonListener</span>()</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,131 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>fr.lnl.game.client.view (client API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="declaration: module: client, package: fr.lnl.game.client.view">
<meta name="generator" content="javadoc/PackageWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="package-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Package</li>
<li>Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#package">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Package:&nbsp;</li>
<li><a href="#package-description">Description</a>&nbsp;|&nbsp;</li>
<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
<li><a href="#class-summary">Classes and Interfaces</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<div class="sub-title"><span class="module-label-in-package">Module</span>&nbsp;<a href="../../../../../module-summary.html">client</a></div>
<h1 title="Package fr.lnl.game.client.view" class="title">Package fr.lnl.game.client.view</h1>
</div>
<hr>
<div class="package-signature">package <span class="element-name">fr.lnl.game.client.view</span></div>
<section class="package-description" id="package-description">
<div class="block">View package, contains all classes about user view</div>
</section>
<section class="summary">
<ul class="summary-list">
<li>
<div id="related-package-summary">
<div class="caption"><span>Related Packages</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><a href="../package-summary.html">fr.lnl.game.client</a></div>
<div class="col-last even-row-color">
<div class="block">Client package</div>
</div>
<div class="col-first odd-row-color"><a href="../listener/package-summary.html">fr.lnl.game.client.listener</a></div>
<div class="col-last odd-row-color">
<div class="block">Package that contains every view listeners</div>
</div>
</div>
</div>
</li>
<li>
<div id="class-summary">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab1" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab1', 2)" class="table-tab">Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button></div>
<div id="class-summary.tabpanel" role="tabpanel">
<div class="summary-table two-column-summary" aria-labelledby="class-summary-tab0">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AbstractView.html" title="class in fr.lnl.game.client.view">AbstractView</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Abstract class implemented by every view classes</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="Cell.html" title="class in fr.lnl.game.client.view">Cell</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">classe qui a pour but de générer chaque case de la grid et de vérifier les entités présentes dessus
(Mur, Joueur, Energie, Bombe, etc.)</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="Terminal.html" title="class in fr.lnl.game.client.view">Terminal</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">View terminal, use standard input and output</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="View.html" title="interface in fr.lnl.game.client.view">View</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">View interface, implemented by Terminal and Window.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ViewManager.html" title="class in fr.lnl.game.client.view">ViewManager</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">View manager, main access to every views</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="Window.html" title="class in fr.lnl.game.client.view">Window</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Window view, use mouse and keyboard to control interface</div>
</div>
</div>
</div>
</div>
</li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,95 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>fr.lnl.game.client.view Class Hierarchy (client API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="tree: module: client, package: fr.lnl.game.client.view">
<meta name="generator" content="javadoc/PackageTreeWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="package-tree-page">
<script type="text/javascript">var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li>Class</li>
<li class="nav-bar-cell1-rev">Tree</li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 class="title">Hierarchy For Package fr.lnl.game.client.view</h1>
<span class="package-hierarchy-label">Package Hierarchies:</span>
<ul class="horizontal">
<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
</ul>
</div>
<section class="hierarchy">
<h2 title="Class Hierarchy">Class Hierarchy</h2>
<ul>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
<ul>
<li class="circle">fr.lnl.game.client.view.<a href="AbstractView.html" class="type-name-link" title="class in fr.lnl.game.client.view">AbstractView</a> (implements fr.lnl.game.client.view.<a href="View.html" title="interface in fr.lnl.game.client.view">View</a>)
<ul>
<li class="circle">fr.lnl.game.client.view.<a href="Terminal.html" class="type-name-link" title="class in fr.lnl.game.client.view">Terminal</a></li>
<li class="circle">fr.lnl.game.client.view.<a href="Window.html" class="type-name-link" title="class in fr.lnl.game.client.view">Window</a></li>
</ul>
</li>
<li class="circle">javafx.scene.Node (implements javafx.event.EventTarget, javafx.css.Styleable)
<ul>
<li class="circle">javafx.scene.shape.Shape
<ul>
<li class="circle">javafx.scene.shape.Rectangle
<ul>
<li class="circle">fr.lnl.game.client.view.<a href="Cell.html" class="type-name-link" title="class in fr.lnl.game.client.view">Cell</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="circle">fr.lnl.game.client.view.<a href="ViewManager.html" class="type-name-link" title="class in fr.lnl.game.client.view">ViewManager</a></li>
</ul>
</li>
</ul>
</section>
<section class="hierarchy">
<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
<ul>
<li class="circle">fr.lnl.game.client.view.<a href="View.html" class="type-name-link" title="interface in fr.lnl.game.client.view">View</a></li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More