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 @@ + - + \ 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()); } }