Merge remote-tracking branch 'origin/Application' into Application

# Conflicts:
#	src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java
#	src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ChatApp.java
#	src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/GUI.java
#	src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/helpers/GuiParameters.java
This commit is contained in:
Sebastian Lenzlinger
2022-05-01 08:56:55 +02:00
19 changed files with 435 additions and 171 deletions

View File

@@ -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.client.gui.lounge.LoungeApp;
@@ -16,6 +16,7 @@ import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.ClientPinger;
import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.GuiParameters;
import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.Protocol;
import com.google.inject.Guice;
import java.net.InetAddress;
import java.net.Socket;
import java.io.*;
@@ -82,6 +83,9 @@ public class Client {
//this.chatGui = new GUI(this.chatApp);
clientPinger = new ClientPinger(this, this.socket);
this.gameStateModel = new GameStateModel();
this.chatApp = new ChatApp(new ClientModel(systemName, this));
ChatApp.setGameController(new GameController(ChatApp.getClientModel(), gameStateModel));
this.chatGui = new GUI(this.chatApp);
this.gameController = new GameController(ChatApp.getClientModel(), gameStateModel);
this.loungeApp = new LoungeApp(ChatApp.getClientModel());
//this.loungeGui = new GUI(this.loungeApp);
@@ -159,6 +163,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
@@ -340,29 +347,36 @@ public class Client {
*/
public void sendToGUI(String parameter, String data) {
try {
if(!parameter.equals(GuiParameters.updateGameState)) {
LOGGER.debug("GUI: PARAMETER:" + parameter + ", DATA: " + data);
}
switch (parameter) {
case ClientGameInfoHandler.itsNightTime: //ClientGameInfoHandler
case GuiParameters.night: //ClientGameInfoHandler
gameStateModel.setDayClone(false);
chatApp.getGameController().setNoiseButtonInvisible();
break;
case ClientGameInfoHandler.itsDayTime: //ClientGameInfoHandler
case GuiParameters.day: //ClientGameInfoHandler
gameStateModel.setDayClone(true);
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:
//updateListOfLobbies(data); (commented out due to compiling error)
//TODO
break;
case GuiParameters.VoteIsOver:
chatApp.getGameController().clearAllNoiseDisplay();
break;
case GuiParameters.listOfPLayers:
updateListOfClients(data);
//TODO
@@ -418,6 +432,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]));
}
//TODO
}
@@ -441,9 +456,9 @@ public class Client {
public void notificationTextDisplay(String data) {
new Thread(() -> {
try {
gameController.addMessageToNotificationText(data);
Thread.sleep(3000);
gameController.clearNotificationText();
chatApp.getGameController().addMessageToNotificationText(data);
Thread.sleep(5000);
chatApp.getGameController().clearNotificationText();
} catch (InterruptedException e) {
LOGGER.warn(e.getMessage());
}
@@ -452,19 +467,26 @@ public class Client {
}
public void determineNoiseDisplay(int position) {
LOGGER.debug(position);
switch (position) {
case 0:
gameController.noiseDisplay0();
chatApp.getGameController().noiseDisplay0();
break;
case 1:
gameController.noiseDisplay1();
chatApp.getGameController().noiseDisplay1();
break;
case 2:
gameController.noiseDisplay2();
chatApp.getGameController().noiseDisplay2();
break;
case 3:
gameController.noiseDisplay3();
chatApp.getGameController().noiseDisplay3();
break;
case 4:
gameController.noiseDisplay4();
chatApp.getGameController().noiseDisplay4();
break;
case 5:
gameController.noiseDisplay5();
chatApp.getGameController().noiseDisplay5();
break;
}
}

View File

@@ -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;
@@ -39,6 +40,9 @@ public class JClientProtocolParser {
break;
case Protocol.printToClientConsole:
System.out.println(msg.substring(6));
if (!msg.substring(6).equals("Your vote was invalid")) {
c.notificationTextDisplay(msg.substring(6));
}
break;
case Protocol.printToClientChat:
//todo: handle chat separately from console.
@@ -72,7 +76,14 @@ public class JClientProtocolParser {
}
c.sendToGUI(parameter,data);
break;
default:
case Protocol.positionOfClient:
try {
int position = Integer.parseInt(msg.substring(6));
GameController.getClient().getClient().setPosition(position);
} catch (Exception e) {
LOGGER.warn(msg.substring(6));
}
default:
System.out.println("Received unknown command");
}
}

View File

@@ -2,11 +2,11 @@ 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.ClientModel;
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.lounge.LoungeSceneViewController;
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;
@@ -20,7 +20,9 @@ public class ChatApp extends Application {
private static ClientModel clientModel;
private static ChatController chatController;
private static GameController gameController;
private ClientModel cModel;
private GameController gameC;
private static LoungeSceneViewController loungeSceneViewController;
@@ -53,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;
}
@@ -90,29 +109,33 @@ 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);
primaryStage.setScene(scene);
} 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("Lounge");
primaryStage.setTitle("Chat");
primaryStage.show();
}
public static void main(String[] args) {

View File

@@ -2,7 +2,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 ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.lounge.LoungeApp;
import javafx.application.Application;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

View File

@@ -117,6 +117,7 @@ public class GameStateModel {
j = right.indexOf(':');
roles[i] = right.substring(0, j);
kickedOff[i] = Boolean.parseBoolean(right.substring(j + 1));
LOGGER.info(kickedOff[i]);
i++;
}
setPassengerTrainClone(names, roles);

View File

@@ -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;

View File

@@ -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,30 +163,52 @@ 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!!
}
public void setNoiseButtonInvisible() {
noiseButton.setVisible(false);
}
public void setNoiseButtonVisible() {
noiseButton.setVisible(true);
}
/**
* Takes a given message and displays it in the notificationText Flow in the game Scene
* @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());
}
}
});
//TODO: Wait for a certain time, then clear all again
}
@@ -180,132 +216,262 @@ 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().remove(0);
} 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];
boolean[] kickedOff = gameStateModel.getKickedOff();
Text name0 = new Text(names[0]);
name0.setStyle("-fx-font: 25 arial;");
name0.setFill(Color.WHITE);
Text name1 = new Text(names[1]);
name1.setStyle("-fx-font: 25 arial;");
name1.setFill(Color.WHITE);
Text name2 = new Text(names[2]);
name2.setStyle("-fx-font: 25 arial;");
name2.setFill(Color.WHITE);
Text name3 = new Text(names[3]);
name3.setStyle("-fx-font: 25 arial;");
name3.setFill(Color.WHITE);
Text name4 = new Text(names[4]);
name4.setStyle("-fx-font: 25 arial;");
name4.setFill(Color.WHITE);
Text name5 = new Text(names[5]);
Text role0 = new Text(roles[0]);
Text role1 = new Text(roles[1]);
Text role2 = new Text(roles[2]);
Text role3 = new Text(roles[3]);
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");
name5.setStyle("-fx-font: 25 arial;");
name5.setFill(Color.WHITE);
Text role0;
if(kickedOff[0]) {
role0 = new Text("\nkicked off");
} else {
role0 = new Text("\n" + roles[0]);
}
role0.setStyle("-fx-font: 25 arial;");
role0.setFill(Color.WHITE);
Text role1;
if(kickedOff[1]) {
role1 = new Text("\nkicked off");
} else {
role1 = new Text("\n" + roles[0]);
}
role1.setStyle("-fx-font: 25 arial;");
role1.setFill(Color.WHITE);
Text role2;
if(kickedOff[2]) {
role2 = new Text("\nkicked off");
} else {
role2 = new Text("\n" + roles[0]);
}
role2.setStyle("-fx-font: 25 arial;");
role2.setFill(Color.WHITE);
Text role3;
if(kickedOff[3]) {
role3 = new Text("\nkicked off");
} else {
role3 = new Text("\n" + roles[0]);
}
role3.setStyle("-fx-font: 25 arial;");
role3.setFill(Color.WHITE);
Text role4;
if(kickedOff[4]) {
role4 = new Text("\nkicked off");
} else {
role4 = new Text("\n" + roles[0]);
}
role4.setStyle("-fx-font: 25 arial;");
role4.setFill(Color.WHITE);
Text role5;
if(kickedOff[5]) {
role5 = new Text("\nkicked off");
} else {
role5 = new Text("\n" + roles[0]);
}
role5.setStyle("-fx-font: 25 arial;");
role5.setFill(Color.WHITE);
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");
}
public void noiseDisplay5() {
LOGGER.debug("noise5 called");
Platform.runLater(new Runnable(){
@Override
public void run() {
try {
noiseImage5.setImage(loadBellImage());
} catch (Exception e) {
LOGGER.debug(e.getMessage());
}
}
});
}
/**
* Clears all bells from the view
*/
public void clearAllNoiseDisplay() {
Platform.runLater(new Runnable(){
@Override
public void run() {
try {
noiseImage0.setImage(null);
noiseImage1.setImage(null);
noiseImage2.setImage(null);
noiseImage3.setImage(null);
noiseImage4.setImage(null);
noiseImage5.setImage(null);
} 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);
}
}

View File

@@ -51,6 +51,22 @@ public class GuiParameters {
/**
* Tells Gui, that a new Lobby has been created. Form: {@code NLOBBY$<lobbyID>:<Admin Name>}
*/
public static final String changeToLobby = "LMEMBS";
/**
* Informs the GUI, that a vote is over
*/
public static final String VoteIsOver = "VOTEOVER";
/**
* Informes Gui, that its the night
*/
public static final String night = "NIGHT";
/**
* Informes Gui, that its the day
*/
public static final String day = "DAY";
public static final String newLobbyCreated = "NLOBBY";
/**

View File

@@ -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";
}

View File

@@ -391,9 +391,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");
}
}
}