Fix terminal view + fix dialog incorrect computer id

This commit is contained in:
Quentin Legot 2021-12-02 18:44:57 +01:00
parent 623e6b5fb3
commit b6cc8f24f9
4 changed files with 28 additions and 8 deletions

View File

@ -52,7 +52,7 @@ public class App extends Application {
| IllegalAccessException e) { | IllegalAccessException e) {
throw new CrashException(e.getMessage(), e); throw new CrashException(e.getMessage(), e);
} }
viewManager = new ViewManager(playerList, game); viewManager = new ViewManager(playerList, game, Window.class);
} }
public static void launchTerminal() { public static void launchTerminal() {
@ -62,7 +62,7 @@ public class App extends Application {
| IllegalAccessException e) { | IllegalAccessException e) {
throw new CrashException(e.getMessage(), e); throw new CrashException(e.getMessage(), e);
} }
viewManager = new ViewManager(playerList, game); viewManager = new ViewManager(playerList, game, Terminal.class);
} }
public static List<Player> parsePlayers() throws IllegalArgumentException, NoSuchMethodException, public static List<Player> parsePlayers() throws IllegalArgumentException, NoSuchMethodException,

View File

@ -2,6 +2,7 @@ package fr.lnl.game.client.listener;
import fr.lnl.game.client.App; import fr.lnl.game.client.App;
import fr.lnl.game.server.games.Game; 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.AbstractModelListening;
import fr.lnl.game.server.listener.ModelListener; import fr.lnl.game.server.listener.ModelListener;
import javafx.scene.control.Alert; import javafx.scene.control.Alert;
@ -29,11 +30,12 @@ public class ButtonListener extends AbstractModelListening {
@Override @Override
public void updateModel(Object event) { public void updateModel(Object event) {
Player player = game.getCurrentPlayer();
game.play(); game.play();
App.viewManager.updateView(); App.viewManager.updateView();
Alert alert = new Alert(Alert.AlertType.INFORMATION); Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("Un joueur ordinateur a joué"); alert.setTitle("Un joueur ordinateur a joué");
alert.setHeaderText("Le joueur ordinateur numéro" + game.getCurrentPlayer().getId() + " a joué"); alert.setHeaderText("Le joueur ordinateur numéro" + player.getId() + " a joué");
alert.setContentText("Il a joué l'action: " + game.getSelectedAction()); alert.setContentText("Il a joué l'action: " + game.getSelectedAction());
alert.showAndWait(); alert.showAndWait();
} }

View File

@ -3,7 +3,6 @@ package fr.lnl.game.client.view;
import fr.lnl.game.client.ClientPlayer; import fr.lnl.game.client.ClientPlayer;
import fr.lnl.game.server.games.Game; import fr.lnl.game.server.games.Game;
import fr.lnl.game.server.games.player.Player; import fr.lnl.game.server.games.player.Player;
import javafx.util.Duration;
import java.util.HashMap; import java.util.HashMap;
@ -13,13 +12,27 @@ public class ViewManager {
private final HashMap<Player, ClientPlayer> players; private final HashMap<Player, ClientPlayer> players;
private final Game game; private final Game game;
public ViewManager(HashMap<Player, ClientPlayer> players, Game game) { public ViewManager(HashMap<Player, ClientPlayer> players, Game game, Class<? extends View> viewType) {
this.players = players; this.players = players;
this.game = game; this.game = game;
if(viewType == Terminal.class) {
terminalView();
} else {
updateView(); updateView();
} }
}
public void updateView() { public void updateView() {
players.get(game.getCurrentPlayer()).getView().show(); 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());
}
}
} }

View File

@ -1,16 +1,21 @@
package fr.lnl.game.server.listener; package fr.lnl.game.server.listener;
import fr.lnl.game.server.utils.CrashException;
import java.util.concurrent.TimeUnit;
public class GameFinishEvent extends AbstractModelListening { public class GameFinishEvent extends AbstractModelListening {
private final Object lock = new Object(); private final Object lock = new Object();
// TODO: 02/12/2021 méthode a revoir, notamment surement mettre un dialog sur la view Window et fermer dès que l'utilisateur a cliqué sur ok
@Override @Override
public void updateModel(Object obj) { public void updateModel(Object obj) {
synchronized (lock) { synchronized (lock) {
try { try {
Thread.sleep(1000); Thread.sleep(TimeUnit.SECONDS.toMillis(1));
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); throw new CrashException(e.getMessage(), e);
} }
} }
System.exit(0); System.exit(0);