fixed bug with seriliazation of Board, now sending playerdata seperate from teh board
This commit is contained in:
		@@ -1,5 +1,7 @@
 | 
			
		||||
<component name="ProjectRunConfigurationManager">
 | 
			
		||||
  <configuration default="false" name="MdgaApp" type="Application" factoryName="Application" singleton="false" nameIsGenerated="true">
 | 
			
		||||
    <option name="ALTERNATIVE_JRE_PATH" value="temurin-20" />
 | 
			
		||||
    <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
 | 
			
		||||
    <option name="MAIN_CLASS_NAME" value="pp.mdga.client.MdgaApp" />
 | 
			
		||||
    <module name="Projekte.mdga.client.main" />
 | 
			
		||||
    <option name="VM_PARAMETERS" value="-Djava.util.logging.config.file=logging.properties -ea" />
 | 
			
		||||
@@ -14,4 +16,4 @@
 | 
			
		||||
      <option name="Make" enabled="true" />
 | 
			
		||||
    </method>
 | 
			
		||||
  </configuration>
 | 
			
		||||
</component>
 | 
			
		||||
</component>
 | 
			
		||||
@@ -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() {
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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.");
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -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<Color, PlayerData> entry : msg.getBoard().getPlayerData().entrySet()){
 | 
			
		||||
            List<UUID> 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<Color, PlayerData> entry : logic.getGame().getBoard().getPlayerData().entrySet()) {
 | 
			
		||||
            List<UUID> 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();
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -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() {
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -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);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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.
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
@@ -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 "";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -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<Color, PlayerData> 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());
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user