diff --git a/OgGhostWinners.txt b/OgGhostWinners.txt index 223b783..914ddb5 100644 --- a/OgGhostWinners.txt +++ b/OgGhostWinners.txt @@ -1 +1,2 @@ B +serai diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/BudaLogConfig.java b/src/main/java/ch/unibas/dmi/dbis/cs108/BudaLogConfig.java index 0ee0b70..dc9f6c1 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/BudaLogConfig.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/BudaLogConfig.java @@ -19,7 +19,7 @@ public class BudaLogConfig { LoggerContext ctx = (LoggerContext) LogManager.getContext(false); Configuration config = ctx.getConfiguration(); LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); - loggerConfig.setLevel(Level.INFO); // change level here + loggerConfig.setLevel(Level.DEBUG); // change level here ctx.updateLoggers(); // This causes all Loggers to refetch information from their LoggerConfig. } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/GameState.java b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/GameState.java index 06f041e..1d0c725 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/GameState.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/GameState.java @@ -167,7 +167,7 @@ public class GameState { } else if (array[i].getIsGhost()) { print[i] = array[i].getName() + ":g:" + array[i].getKickedOff(); } else { - print[i] = "| " + array[i].getName() + ":h:" + array[i].getKickedOff(); + print[i] = array[i].getName() + ":h:" + array[i].getKickedOff(); } } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java index d693491..27673fa 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java @@ -5,7 +5,7 @@ import ch.unibas.dmi.dbis.cs108.gamelogic.ClientGameInfoHandler; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ClientModel; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.GUI; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.GameStateModel; -import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat.ChatApp; +import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ChatApp; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat.ChatController; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.game.GameController; import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.ClientPinger; @@ -41,7 +41,6 @@ public class Client { private GUI chatGui; private ClientModel clientModel; private GameStateModel gameStateModel; - private GameController gameController; /** * Saves the position of the client, gets refreshed everytime the client gets a vote request. @@ -70,11 +69,11 @@ public class Client { systemName = username; } sendMsgToServer(Protocol.clientLogin + "$" + systemName); - this.chatApp = new ChatApp(new ClientModel(systemName, this)); - this.chatGui = new GUI(this.chatApp); clientPinger = new ClientPinger(this, this.socket); this.gameStateModel = new GameStateModel(); - this.gameController = new GameController(ChatApp.getClientModel(), gameStateModel); + this.chatApp = new ChatApp(new ClientModel(systemName, this)); + ChatApp.setGameController(new GameController(ChatApp.getClientModel(), gameStateModel)); + this.chatGui = new GUI(this.chatApp); } catch (IOException e) { e.printStackTrace(); } @@ -146,6 +145,9 @@ public class Client { } + public void setPosition(int position) { + this.position = position; + } /** * Starts a thread which listens for incoming chat messages / other messages that the user has to @@ -327,6 +329,7 @@ public class Client { */ public void sendToGUI(String parameter, String data) { try { + LOGGER.debug("GUI: PARAMETER:" + parameter + ", DATA: " + data); switch (parameter) { case ClientGameInfoHandler.itsNightTime: //ClientGameInfoHandler gameStateModel.setDayClone(false); @@ -336,14 +339,14 @@ public class Client { break; case GuiParameters.updateGameState: gameStateModel.setGSFromString(data); - gameController.updateRoomLabels(); + chatApp.getGameController().updateRoomLabels(); break; case GuiParameters.noiseHeardAtPosition: try { int position = Integer.parseInt(data); determineNoiseDisplay(position); } catch (Exception e) { - LOGGER.warn("Not a position given for noise"); + LOGGER.warn("Not a position given for noise " +e.getMessage()); } break; case GuiParameters.listOfLobbies: @@ -380,7 +383,7 @@ public class Client { int n = arr.length; for (int i = 0; i < n; i = i + 2) { list.add(new SimpleStringProperty(arr[i])); - ChatController.getClient().addLobbyToList(new SimpleStringProperty(arr[i])); + //ChatController.getClient().addLobbyToList(new SimpleStringProperty(arr[i])); } } @@ -403,9 +406,9 @@ public class Client { public void notificationTextDisplay(String data) { new Thread(() -> { try { - gameController.addMessageToNotificationText(data); + chatApp.getGameController().addMessageToNotificationText(data); Thread.sleep(3000); - gameController.clearNotificationText(); + chatApp.getGameController().clearNotificationText(); } catch (InterruptedException e) { LOGGER.warn(e.getMessage()); } @@ -416,17 +419,17 @@ public class Client { public void determineNoiseDisplay(int position) { switch (position) { case 0: - gameController.noiseDisplay0(); + chatApp.getGameController().noiseDisplay0(); case 1: - gameController.noiseDisplay1(); + chatApp.getGameController().noiseDisplay1(); case 2: - gameController.noiseDisplay2(); + chatApp.getGameController().noiseDisplay2(); case 3: - gameController.noiseDisplay3(); + chatApp.getGameController().noiseDisplay3(); case 4: - gameController.noiseDisplay4(); + chatApp.getGameController().noiseDisplay4(); case 5: - gameController.noiseDisplay5(); + chatApp.getGameController().noiseDisplay5(); } } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/JClientProtocolParser.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/JClientProtocolParser.java index 2ad6979..58d8b98 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/JClientProtocolParser.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/JClientProtocolParser.java @@ -2,6 +2,7 @@ package ch.unibas.dmi.dbis.cs108.multiplayer.client; import ch.unibas.dmi.dbis.cs108.BudaLogConfig; import ch.unibas.dmi.dbis.cs108.gamelogic.ClientGameInfoHandler; +import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.game.GameController; import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.Protocol; import java.io.OutputStreamWriter; import org.apache.logging.log4j.LogManager; @@ -61,17 +62,20 @@ public class JClientProtocolParser { break; case Protocol.printToGUI: String substring = msg.substring(6); - int index = msg.indexOf("$"); + int index = substring.indexOf("$"); String parameter = ""; String data = substring; try { - parameter = msg.substring(0,index); - data = msg.substring(index+1); + parameter = substring.substring(0,index); + data = substring.substring(index+1); } catch (Exception e) { LOGGER.warn("No parameter in PTGUI"); } c.sendToGUI(parameter,data); break; + case Protocol.positionOfClient: + int position = Integer.parseInt(msg.substring(6)); + GameController.getClient().getClient().setPosition(position); default: System.out.println("Received unknown command"); } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatApp.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ChatApp.java similarity index 71% rename from src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatApp.java rename to src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ChatApp.java index 84e7947..2aa522c 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatApp.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ChatApp.java @@ -1,11 +1,14 @@ -package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat; +package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui; import ch.unibas.dmi.dbis.cs108.BudaLogConfig; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ClientModel; +import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat.ChatController; +import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.game.GameController; import java.net.URL; import java.util.Objects; import javafx.application.Application; import javafx.fxml.FXMLLoader; +import javafx.scene.Node; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; @@ -19,7 +22,9 @@ public class ChatApp extends Application { private static ClientModel clientModel; private static ChatController chatController; + private static GameController gameController; private ClientModel cModel; + private GameController gameC; public ChatApp() { super(); @@ -50,10 +55,27 @@ public class ChatApp extends Application { this.cModel = cModel; } + public void setGameC(GameController gameC) { + this.gameC = gameC; + } + public ClientModel getcModel() { return cModel; } + public static void setGameController( + GameController gameController) { + ChatApp.gameController = gameController; + } + + public GameController getGameController() { + return gameController; + } + + public GameController getGameC() { + return gameC; + } + public static void setClientModel(ClientModel clientM) { clientModel = clientM; } @@ -83,16 +105,16 @@ public class ChatApp extends Application { @Override public void start(Stage primaryStage) throws Exception { this.setcModel(clientModel); - URL resource = ChatApp.class.getResource( - "ChatView.fxml"); - if (resource == null) { - System.out.println("File wasnt found"); - } - //ChatApp chatApp = new ChatApp(new ClientModel()); + this.setGameC(gameController); + gameC.setClient(cModel); + gameC.setGameStateModel(GameController.getGameStateModel()); + URL chatResource = ChatApp.class.getResource( + "chat/ChatView.fxml"); + URL gameResource = ChatApp.class.getResource( + "game/GameDayAll.fxml"); try { Parent root = FXMLLoader.load( - Objects.requireNonNull(ChatApp.class.getResource( - "ChatView.fxml"))); + Objects.requireNonNull(gameResource)); // TODO bin chatController.getChatPaneRoot() border to root border for rezising Scene scene = new Scene(root); scene.setRoot(root); @@ -100,11 +122,15 @@ public class ChatApp extends Application { } catch (Exception e) { e.printStackTrace(); } + primaryStage.setResizable(false); + Node chat = FXMLLoader.load( + Objects.requireNonNull(chatResource)); + primaryStage.setTitle("Night Train To Budapest"); primaryStage.setResizable(true); - primaryStage.setTitle("Chat"); primaryStage.show(); + } public static void main(String[] args) { diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/GUI.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/GUI.java index 06a9d30..e06bd0b 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/GUI.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/GUI.java @@ -1,7 +1,6 @@ package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui; import ch.unibas.dmi.dbis.cs108.BudaLogConfig; -import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat.ChatApp; import javafx.application.Application; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatController.java index 16f186f..3248849 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatController.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatController.java @@ -2,6 +2,7 @@ package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat; import ch.unibas.dmi.dbis.cs108.BudaLogConfig; +import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ChatApp; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ClientModel; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.utils.ChatLabelConfigurator; import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.Protocol; diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameController.java index c5112b3..2a72312 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameController.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameController.java @@ -1,44 +1,33 @@ package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.game; -import ch.unibas.dmi.dbis.cs108.multiplayer.client.Client; +import static javafx.scene.AccessibleRole.PARENT; + +import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ChatApp; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.GameStateModel; import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.GuiParameters; -import javafx.event.EventHandler; import ch.unibas.dmi.dbis.cs108.BudaLogConfig; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ClientModel; import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.Protocol; import java.net.URL; import java.util.ResourceBundle; import javafx.application.Platform; -import javafx.beans.property.SimpleBooleanProperty; -import javafx.beans.value.ChangeListener; -import javafx.beans.value.ObservableValue; -import javafx.collections.ListChangeListener; -import javafx.event.ActionEvent; -import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.Group; import javafx.scene.Node; import javafx.scene.control.Button; import javafx.scene.control.Label; -import javafx.scene.control.SplitPane; -import javafx.scene.control.TextArea; -import javafx.scene.control.TextField; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.AnchorPane; -import javafx.scene.layout.Background; import javafx.scene.layout.HBox; -import javafx.scene.layout.Pane; -import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.scene.text.Text; import javafx.scene.text.TextFlow; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class GameController { +public class GameController implements Initializable{ public static final Logger LOGGER = LogManager.getLogger(GameController.class); public static final BudaLogConfig l = new BudaLogConfig(LOGGER); @@ -47,13 +36,27 @@ public class GameController { private static GameStateModel gameStateModel; - + public GameController() { + super(); + } //TODO(Seraina, Sebi): Same issue as ChatController? do with setters? public GameController(ClientModel c, GameStateModel g) { client = c; gameStateModel = g; } + public void setClient(ClientModel c) { + client = c; + } + + public static ClientModel getClient() { + return client; + } + + public static GameStateModel getGameStateModel() { + return gameStateModel; + } + @FXML private AnchorPane gameBG; @FXML @@ -102,14 +105,25 @@ public class GameController { @FXML private Button noiseButton; @FXML - private TextFlow notificationText; + public TextFlow notificationText; + @FXML + private AnchorPane chatAreaGame; + + + public void addToChatArea(Node n) { + chatAreaGame.getChildren().add(n); + } + + public AnchorPane getChatAreaGame() { + return chatAreaGame; + } /** * If button 0 is clicked, send the vote message 0 to the server */ public void sendVote0() { client.getClient() - .sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + 0); + .sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + "$" + 0); } /** @@ -117,7 +131,7 @@ public class GameController { */ public void sendVote1() { client.getClient() - .sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + 1); + .sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + "$" + 1); } /** @@ -125,7 +139,7 @@ public class GameController { */ public void sendVote2() { client.getClient() - .sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + 2); + .sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + "$" + 2); } /** @@ -133,7 +147,7 @@ public class GameController { */ public void sendVote3() { client.getClient() - .sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + 3); + .sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + "$" + 3); } /** @@ -141,7 +155,7 @@ public class GameController { */ public void sendVote4() { client.getClient() - .sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + 4); + .sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + "$" + 4); } /** @@ -149,15 +163,21 @@ public class GameController { */ public void sendVote5() { client.getClient() - .sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + 5); + .sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + "$" + 5); } /** * Sends a noise message, to the server, should be a gui message? */ public void noise() { + LOGGER.info("Do you even get here"); + LOGGER.info(client.getClient()); + LOGGER.info(client.getClient().getPosition()); + if(client.getClient() == null) { + LOGGER.info("But why???"); + } client.getClient().sendMsgToServer( - Protocol.sendMessageToAllClients + "$" + Protocol.printToGUI + GuiParameters.noiseHeardAtPosition + "$" + Protocol.sendMessageToAllClients + "$" + Protocol.printToGUI + "$" +GuiParameters.noiseHeardAtPosition + "$" + client.getClient().getPosition()); //TODO: Test!! } @@ -166,13 +186,22 @@ public class GameController { * @param msg the message to be displayed */ public void addMessageToNotificationText(String msg){ + LOGGER.trace("addMessage " + msg); Text notification = new Text(msg); - try { - notificationText.getChildren().clear(); - notificationText.getChildren().add(notification); - } catch (Exception e) { - LOGGER.trace("Not yet initialized"); - } + notification.setFill(Color.BLACK); + notification.setStyle("-fx-font: 50 arial;"); + Platform.runLater(new Runnable(){ + @Override + public void run() { + try { + notificationText.getChildren().add(notification); + } catch (Exception e) { + LOGGER.debug(e.getMessage()); + e.printStackTrace(); + } + } + }); + //TODO: Wait for a certain time, then clear all again } @@ -180,17 +209,25 @@ public class GameController { * Clears all children from notificationText TextFlow */ public void clearNotificationText() { - try { - notificationText.getChildren().clear(); - } catch (Exception e) { - LOGGER.trace("Not yet initialized"); - } + LOGGER.trace("clear notify"); + Platform.runLater(new Runnable(){ + @Override + public void run() { + try { + notificationText.getChildren().clear(); + } catch (Exception e) { + LOGGER.debug("Not yet initialized"); + } + } + }); + } /** * Updates the labels of the rooms accordingly to the datastructures in GameStateModel */ public void updateRoomLabels() { + LOGGER.debug("roomlables update"); String[] names = gameStateModel.getPassengerTrainClone()[0]; String[] roles = gameStateModel.getPassengerTrainClone()[1]; Text name0 = new Text(names[0]); @@ -206,106 +243,152 @@ public class GameController { Text role4 = new Text(roles[4]); Text role5 = new Text(roles[5]); - try { - lableRoom0.getChildren().clear(); - lableRoom0.getChildren().add(name0); - lableRoom0.getChildren().add(role0); - lableRoom1.getChildren().clear(); - lableRoom1.getChildren().add(name1); - lableRoom1.getChildren().add(role1); - lableRoom2.getChildren().clear(); - lableRoom2.getChildren().add(name2); - lableRoom2.getChildren().add(role2); - lableRoom3.getChildren().clear(); - lableRoom3.getChildren().add(name3); - lableRoom3.getChildren().add(role3); - lableRoom4.getChildren().clear(); - lableRoom4.getChildren().add(name4); - lableRoom4.getChildren().add(role4); - lableRoom5.getChildren().clear(); - lableRoom5.getChildren().add(name5); - lableRoom5.getChildren().add(role5); - } catch (Exception e) { - LOGGER.trace("Not yet initialized"); - } + Platform.runLater(new Runnable(){ + @Override + public void run() { + try { + lableRoom0.getChildren().clear(); + lableRoom0.getChildren().add(name0); + lableRoom0.getChildren().add(role0); + lableRoom1.getChildren().clear(); + lableRoom1.getChildren().add(name1); + lableRoom1.getChildren().add(role1); + lableRoom2.getChildren().clear(); + lableRoom2.getChildren().add(name2); + lableRoom2.getChildren().add(role2); + lableRoom3.getChildren().clear(); + lableRoom3.getChildren().add(name3); + lableRoom3.getChildren().add(role3); + lableRoom4.getChildren().clear(); + lableRoom4.getChildren().add(name4); + lableRoom4.getChildren().add(role4); + lableRoom5.getChildren().clear(); + lableRoom5.getChildren().add(name5); + lableRoom5.getChildren().add(role5); + } catch (Exception e) { + LOGGER.trace("Not yet initialized"); + } + } + }); + } + + public Image loadBellImage(){ + Image bell = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/DayOpen/bell.png"); + return bell; } /** * Adds an image of a bell on top of button0 */ public void noiseDisplay0(){ - Image bell = new Image("ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.game.DayOpen.bell.png"); - try { - noiseImage0.setImage(bell); - } catch (Exception e) { - LOGGER.trace("Not yet initialized"); - } + LOGGER.debug("noise0 called"); + Platform.runLater(new Runnable(){ + @Override + public void run() { + try { + noiseImage0.setImage(loadBellImage()); + } catch (Exception e) { + LOGGER.debug(e.getMessage()); + } + } + }); + } /** * Adds an image of a bell on top of button1 */ public void noiseDisplay1(){ - Image bell = new Image("ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.game.DayOpen.bell.png"); - try { - noiseImage0.setImage(bell); - } catch (Exception e) { - LOGGER.trace("Not yet initialized"); - } + LOGGER.debug("noise1 called"); + Platform.runLater(new Runnable(){ + @Override + public void run() { + try { + noiseImage1.setImage(loadBellImage()); + } catch (Exception e) { + LOGGER.debug(e.getMessage()); + } + } + }); } /** * Adds an image of a bell on top of button2 */ public void noiseDisplay2(){ - Image bell = new Image("ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.game.DayOpen.bell.png"); - try { - noiseImage0.setImage(bell); - } catch (Exception e) { - LOGGER.trace("Not yet initialized"); - } + LOGGER.debug("noise2 called"); + Platform.runLater(new Runnable(){ + @Override + public void run() { + try { + noiseImage2.setImage(loadBellImage()); + } catch (Exception e) { + LOGGER.debug(e.getMessage());; + } + } + }); } /** * Adds an image of a bell on top of button3 */ - public void noiseDisplay3(){ - Image bell = new Image("ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.game.DayOpen.bell.png"); - try { - noiseImage0.setImage(bell); - } catch (Exception e) { - LOGGER.trace("Not yet initialized"); - } + public void noiseDisplay3() { + LOGGER.debug("noise3 called"); + Platform.runLater(new Runnable() { + @Override + public void run() { + try { + LOGGER.debug("hello"); + noiseImage3.setImage(loadBellImage()); + } catch (Exception e) { + LOGGER.debug(e.getMessage()); + } + } + }); } /** * Adds an image of a bell on top of button4 */ - public void noiseDisplay4(){ - Image bell = new Image("ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.game.DayOpen.bell.png"); - try { - noiseImage0.setImage(bell); - } catch (Exception e) { - LOGGER.trace("Not yet initialized"); - } + public void noiseDisplay4() { + LOGGER.debug("noise4 called"); + Platform.runLater(new Runnable() { + @Override + public void run() { + try { + LOGGER.debug("hello"); + noiseImage4.setImage(loadBellImage()); + } catch (Exception e) { + LOGGER.debug(e.getMessage()); + } + } + }); } /** * Adds an image of a bell on top of button5 */ public void noiseDisplay5(){ - Image bell = new Image("ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.game.DayOpen.bell.png"); - try { - noiseImage0.setImage(bell); - } catch (Exception e) { - LOGGER.trace("Not yet initialized"); - } + LOGGER.debug("noise5 called"); + Platform.runLater(new Runnable(){ + @Override + public void run() { + try { + noiseImage5.setImage(loadBellImage()); + } catch (Exception e) { + LOGGER.debug(e.getMessage()); + } + } + }); } - - public void setGameStateModel( GameStateModel gameStateModel) { GameController.gameStateModel = gameStateModel; } + + @Override + public void initialize(URL location, ResourceBundle resources) { + ChatApp.setGameController(this); + } } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/helpers/Protocol.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/helpers/Protocol.java index b9e3ae1..6d08971 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/helpers/Protocol.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/helpers/Protocol.java @@ -207,5 +207,11 @@ public class Protocol { */ public static final String printToGUI = "PTGUI"; + /** + * Sends an information to client at which position in the train from the game (0 to 5) they sit, as soon as the game starts + * {@code POSOF$position} + */ + public static final String positionOfClient = "POSOF"; + } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/ClientHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/ClientHandler.java index 27a47ed..0024bed 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/ClientHandler.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/ClientHandler.java @@ -376,9 +376,13 @@ public class ClientHandler implements Runnable { } LOGGER.debug("Vote is:" + vote); if (vote != Integer.MAX_VALUE) { //gets MAX_VALUE when the vote wasn't valid - getLobby().getGame().getGameState().getClientVoteData().setVote(position, vote); - LOGGER.debug("Player vote: " + vote); - getLobby().getGame().getGameState().getClientVoteData().setHasVoted(position, true); + try { + getLobby().getGame().getGameState().getClientVoteData().setVote(position, vote); + LOGGER.debug("Player vote: " + vote); + getLobby().getGame().getGameState().getClientVoteData().setHasVoted(position, true); + } catch (NullPointerException e) { + LOGGER.info("Client not in Lobby"); + } } } diff --git a/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameDayAll.fxml b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameDayAll.fxml index 18eaabb..0862993 100644 --- a/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameDayAll.fxml +++ b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameDayAll.fxml @@ -9,7 +9,7 @@ - + @@ -107,10 +107,11 @@ - - + +