diff --git a/Projekte/.run/MdgaApp.run.xml b/Projekte/.run/MdgaApp.run.xml
index 8b467373..123a07af 100644
--- a/Projekte/.run/MdgaApp.run.xml
+++ b/Projekte/.run/MdgaApp.run.xml
@@ -1,5 +1,7 @@
+
+
@@ -14,4 +16,4 @@
-
+
\ No newline at end of file
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/server/MdgaServer.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/server/MdgaServer.java
index 111604ed..b8e8bfb4 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/server/MdgaServer.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/server/MdgaServer.java
@@ -144,6 +144,8 @@ private void initializeSerializables() {
Serializer.registerClass(StartNode.class);
Serializer.registerClass(PlayerData.class);
Serializer.registerClass(HomeNode.class);
+ Serializer.registerClass(PlayerDataMessage.class);
+ Serializer.registerClass(StartBriefingMessage.class);
}
private void registerListeners() {
diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientGameLogic.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientGameLogic.java
index 133d5689..f3a0602b 100644
--- a/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientGameLogic.java
+++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientGameLogic.java
@@ -193,6 +193,16 @@ public void received(ServerStartGameMessage msg) {
@Override
public void received(ShutdownMessage msg) {state.received(msg);}
+ @Override
+ public void received(StartBriefingMessage msg) {
+ state.received(msg);
+ }
+
+ @Override
+ public void received(PlayerDataMessage msg) {
+ state.received(msg);
+ }
+
@Override
public void received(StartPieceMessage msg) {
state.received(msg);
diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientState.java
index bf64e267..ae500c42 100644
--- a/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientState.java
+++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientState.java
@@ -183,6 +183,15 @@ public void received(WaitPieceMessage msg) {
LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
}
+ @Override
+ public void received(StartBriefingMessage msg) {
+ LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
+ }
+
+ public void received(PlayerDataMessage msg) {
+ LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
+ }
+
public void selectPiece(Piece piece) {
LOGGER.log(Level.DEBUG, "Selecting piece not allowed.");
}
diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/DialogsState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/DialogsState.java
index 5f7cf182..c3f33c97 100644
--- a/Projekte/mdga/model/src/main/java/pp/mdga/client/DialogsState.java
+++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/DialogsState.java
@@ -144,6 +144,16 @@ public void received(ServerStartGameMessage msg){
currentState.received(msg);
}
+ @Override
+ public void received(PlayerDataMessage msg){
+ currentState.received(msg);
+ }
+
+ @Override
+ public void received(StartBriefingMessage msg){
+ currentState.received(msg);
+ }
+
public DialogStates getState() {
return currentState;
}
diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/LobbyState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/LobbyState.java
index fdb8e5d2..f468d8d3 100644
--- a/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/LobbyState.java
+++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/LobbyState.java
@@ -10,7 +10,9 @@
import pp.mdga.message.client.*;
import pp.mdga.message.server.LobbyPlayerJoinedMessage;
import pp.mdga.message.server.LobbyPlayerLeaveMessage;
+import pp.mdga.message.server.PlayerDataMessage;
import pp.mdga.message.server.ServerStartGameMessage;
+import pp.mdga.message.server.StartBriefingMessage;
import pp.mdga.message.server.UpdateReadyMessage;
import pp.mdga.message.server.UpdateTSKMessage;
import pp.mdga.notification.*;
@@ -74,15 +76,24 @@ public void selectStart(){
}
@Override
- public void received(ServerStartGameMessage msg){
+ public void received(StartBriefingMessage msg){
logic.getGame().setBoard(msg.getBoard());
- logic.addNotification(new GameNotification(logic.getGame().getPlayers().get(parent.getOwnPlayerId()).getColor()));
- for(Map.Entry entry : msg.getBoard().getPlayerData().entrySet()){
- List pieceIds = new ArrayList<>();
+ }
+
+ public void received(PlayerDataMessage msg){
+ logic.getGame().getBoard().addPlayerData(msg.getColor(), msg.getPlayerData());
+ }
+
+ @Override
+ public void received(ServerStartGameMessage msg){
+ logic.addNotification(new GameNotification(logic.getGame().getPlayerById(parent.getOwnPlayerId()).getColor()));
+ for (Map.Entry entry : logic.getGame().getBoard().getPlayerData().entrySet()) {
+ List pieceList = new ArrayList<>();
for(Piece piece : entry.getValue().getPieces()){
- pieceIds.add(piece.getUuid());
+ System.out.println(piece.getUuid());
+ pieceList.add(piece.getUuid());
}
- logic.addNotification(new PlayerInGameNotification(entry.getKey(), pieceIds, logic.getGame().getPlayerByColor(entry.getKey()).getName()));
+ logic.addNotification(new PlayerInGameNotification(entry.getKey(), pieceList , logic.getGame().getPlayerByColor(entry.getKey()).getName()));
}
parent.startGame();
}
diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/NetworkDialogState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/NetworkDialogState.java
index 09212dee..98234319 100644
--- a/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/NetworkDialogState.java
+++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/NetworkDialogState.java
@@ -14,34 +14,6 @@ public NetworkDialogState(ClientState parent, ClientGameLogic logic) {
this.parent = (DialogsState) parent;
}
- private boolean checkIP(String IP){
- String[] parts = IP.split("\\.");
-
- // Step 2: Check if there are exactly 4 parts
- if (parts.length != 4) {
- return false;
- }
-
- // Step 3: Check each part for valid number
- for (String part : parts) {
- try {
- // Step 4: Convert each part into a number
- int num = Integer.parseInt(part);
-
- // Step 5: Check whether the number lies in between 0 and 255
- if (num < 0 || num > 255) {
- return false;
- }
- } catch (NumberFormatException e) {
- // If parsing fails, it's not a valid number
- return false;
- }
- }
-
- // If all checks passed, return true
- return true;
- }
-
@Override
public void enter() {
}
diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PlayerDataMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PlayerDataMessage.java
new file mode 100644
index 00000000..03171e73
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PlayerDataMessage.java
@@ -0,0 +1,40 @@
+package pp.mdga.message.server;
+
+import com.jme3.network.serializing.Serializable;
+import pp.mdga.game.Color;
+import pp.mdga.game.PlayerData;
+
+@Serializable
+public class PlayerDataMessage extends ServerMessage{
+
+ private final PlayerData playerData;
+ private final Color color;
+
+ public PlayerDataMessage(PlayerData playerData, Color color){
+ super();
+ this.playerData = playerData;
+ this.color = color;
+ }
+
+ private PlayerDataMessage(){
+ this(null, null);
+ }
+
+ @Override
+ public void accept(ServerInterpreter interpreter) {
+ interpreter.received(this);
+ }
+
+ @Override
+ public String getInfoTextKey() {
+ return "";
+ }
+
+ public PlayerData getPlayerData(){
+ return playerData;
+ }
+
+ public Color getColor(){
+ return color;
+ }
+}
diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerInterpreter.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerInterpreter.java
index 1ed24edf..4491f9c1 100644
--- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerInterpreter.java
+++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerInterpreter.java
@@ -214,4 +214,8 @@ public interface ServerInterpreter {
* @param shutdownMessage the SelectTSK message received.
*/
void received(ShutdownMessage shutdownMessage);
+
+ void received(StartBriefingMessage msg);
+
+ void received(PlayerDataMessage msg);
}
diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerStartGameMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerStartGameMessage.java
index 37c22e1e..69e3fb96 100644
--- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerStartGameMessage.java
+++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerStartGameMessage.java
@@ -8,28 +8,13 @@
*/
@Serializable
public class ServerStartGameMessage extends ServerMessage {
- /**
- * Create ServerStartGameMessage attributes.
- */
- private final Board board;
/**
* Constructs a new ServerStartGame instance.
*/
public ServerStartGameMessage() {
super();
- this.board = null;
}
-
- /**
- * Constructor.
- *
- * @param board as the complete board of this game as a Board object.
- */
- public ServerStartGameMessage(Board board) {
- this.board = board;
- }
-
/**
* Accepts a visitor to process this message.
*
@@ -40,15 +25,6 @@ public void accept(ServerInterpreter interpreter) {
interpreter.received(this);
}
- /**
- * This method will be used to return board attribute of ServerStartGameMessage class.
- *
- * @return board as a Board object.
- */
- public Board getBoard() {
- return this.board;
- }
-
/**
* Returns a string representation of this message.
*
diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/StartBriefingMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/StartBriefingMessage.java
new file mode 100644
index 00000000..ba465990
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/StartBriefingMessage.java
@@ -0,0 +1,33 @@
+package pp.mdga.message.server;
+
+import com.jme3.network.serializing.Serializable;
+import pp.mdga.game.Board;
+
+@Serializable
+public class StartBriefingMessage extends ServerMessage {
+
+ private final Board board;
+
+ public StartBriefingMessage(Board board) {
+ super();
+ this.board = board;
+ }
+
+ private StartBriefingMessage() {
+ this(null);
+ }
+
+ public Board getBoard() {
+ return this.board;
+ }
+
+ @Override
+ public void accept(ServerInterpreter interpreter) {
+ interpreter.received(this);
+ }
+
+ @Override
+ public String getInfoTextKey() {
+ return "";
+ }
+}
diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java
index 708a26d5..c268cc4f 100644
--- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java
+++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java
@@ -7,7 +7,6 @@
import pp.mdga.message.server.*;
import pp.mdga.server.ServerGameLogic;
-import java.lang.foreign.StructLayout;
import java.util.Map;
/**
@@ -126,8 +125,12 @@ public void received(LobbyReadyMessage msg, int from) {
this.logic.getGame().setAllReady(true);
if (this.logic.getGame().allReady()) {
+ this.logic.getServerSender().broadcast(new StartBriefingMessage(this.logic.getGame().getBoard()));
this.initializeGame();
- this.logic.getServerSender().broadcast(new ServerStartGameMessage(this.logic.getGame().getBoard()));
+ for (Map.Entry entry : logic.getGame().getBoard().getPlayerData().entrySet()) {
+ this.logic.getServerSender().broadcast(new PlayerDataMessage(entry.getValue(), entry.getKey()));
+ }
+ this.logic.getServerSender().broadcast(new ServerStartGameMessage());
}
}
@@ -173,7 +176,7 @@ public void received(LeaveGameMessage msg, int from) {
public void received(StartGameMessage msg, int from) {
if (msg.isForceStartGame() || this.logic.getGame().allReady()) {
this.initializeGame();
- this.logic.getServerSender().broadcast(new ServerStartGameMessage(this.logic.getGame().getBoard()));
+ this.logic.getServerSender().broadcast(new ServerStartGameMessage());
this.logic.setCurrentState(this.logic.getGameState());
}
}