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 14afc67..300fea7 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 @@ -140,6 +140,7 @@ public class Client { String pos = msg.substring(0, msgIndex); try { position = Integer.parseInt(pos); + gameStateModel.setRoleFromPosition(position); } catch (NumberFormatException e) { LOGGER.warn("Position got scrabbled on the way here"); } @@ -155,6 +156,7 @@ public class Client { public void setPosition(int position) { this.position = position; + gameStateModel.setRoleFromPosition(position); } /** @@ -343,11 +345,15 @@ public class Client { switch (parameter) { case GuiParameters.night: //ClientGameInfoHandler; gameStateModel.setDayClone(false); + LOGGER.debug("----------------Night, Your role is:" + gameStateModel.getYourRole() + gameStateModel); chatApp.getGameController().setNoiseButtonInvisible(); + chatApp.getGameController().setVoteButtonVisibilityNight(); break; case GuiParameters.day: //ClientGameInfoHandler gameStateModel.setDayClone(true); + LOGGER.debug("----------------Day, Your role is:" + gameStateModel.getYourRole()+ gameStateModel); chatApp.getGameController().setNoiseButtonVisible(); + chatApp.getGameController().setVoteButtonVisibilityDay(); break; case GuiParameters.updateGameState: gameStateModel.setGSFromString(data); diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientModel.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientModel.java index 4d9021c..b8e3677 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientModel.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientModel.java @@ -74,6 +74,10 @@ public class ClientModel { } + public int getClientPosition() { + return client.getPosition(); + } + public void removeClientFromList(String id){ Iterator it = allClients.iterator(); while(it.hasNext()){ diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/GameStateModel.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/GameStateModel.java index 5a4a594..e4066e0 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/GameStateModel.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/GameStateModel.java @@ -28,7 +28,7 @@ public class GameStateModel { /** * A primitive clone of the passengerTrain in the GameState of the server. * in passengerTrainClone[0] the names of the passengers are stored, in passengerTrainClone[1] the roles - * (human/ghost/spectator). The indices of the array correspond with the positions + * (h/g/s). The indices of the array correspond with the positions */ private String[][] passengerTrainClone; @@ -41,8 +41,9 @@ public class GameStateModel { this.nrOfPlayers = 6; passengerTrainClone = new String[2][nrOfPlayers]; for(String role : passengerTrainClone[1]) { - role = ""; + role = "h"; } + yourRole = "h"; kickedOff = new boolean[nrOfPlayers]; isDayClone = false; } @@ -69,9 +70,12 @@ public class GameStateModel { public void setYourRole(String yourRole) { if(yourRole.equals("h") || yourRole.equals("g") || yourRole.equals("s")) { this.yourRole = yourRole; + } else { + this.yourRole = "h"; } } + public String getYourRole() { return yourRole; } @@ -125,4 +129,18 @@ public class GameStateModel { LOGGER.warn("data has wrong format"); } } + + /** + * Gets an integer and extracts the string from the passengerTrain[1] string at the index of the integer + * @param position the index of the array + */ + public void setRoleFromPosition(int position) { + String role = "h"; + try { + role = passengerTrainClone[1][position]; + } catch (Exception e) { + LOGGER.warn("Not an integer between 0-5"); + } + setYourRole(role); + } } 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 90ad993..d1a1ed1 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 @@ -131,6 +131,73 @@ public class GameController implements Initializable { return chatAreaGame; } + public void setVoteButtonVisibilityDay(){ + Platform.runLater(new Runnable() { + @Override + public void run() { + LOGGER.debug(buttonRoom0); + if (gameStateModel.getYourRole().equals("h")) { + try { + buttonRoom0.setVisible(true); + buttonRoom1.setVisible(true); + buttonRoom2.setVisible(true); + buttonRoom3.setVisible(true); + buttonRoom4.setVisible(true); + buttonRoom5.setVisible(true); + } catch (Exception e) { + e.printStackTrace(); + } + + } else { + try { + buttonRoom0.setVisible(false); + buttonRoom1.setVisible(false); + buttonRoom2.setVisible(false); + buttonRoom3.setVisible(false); + buttonRoom4.setVisible(false); + buttonRoom5.setVisible(false); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + }); + } + + public void setVoteButtonVisibilityNight(){ + Platform.runLater(new Runnable() { + @Override + public void run() { + LOGGER.debug(buttonRoom0); + if (gameStateModel.getYourRole().equals("g")) { + try { + buttonRoom0.setVisible(true); + buttonRoom1.setVisible(true); + buttonRoom2.setVisible(true); + buttonRoom3.setVisible(true); + buttonRoom4.setVisible(true); + buttonRoom5.setVisible(true); + } catch (Exception e) { + e.printStackTrace(); + } + + } else { + try { + buttonRoom0.setVisible(false); + buttonRoom1.setVisible(false); + buttonRoom2.setVisible(false); + buttonRoom3.setVisible(false); + buttonRoom4.setVisible(false); + buttonRoom5.setVisible(false); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + }); + } + + /** * If button 0 is clicked, send the vote message 0 to the server */ diff --git a/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneView.fxml b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneView.fxml index 052ee44..94bd0c2 100644 --- a/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneView.fxml +++ b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneView.fxml @@ -14,13 +14,13 @@ - + -