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 150eb3b5..859a9db2 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 @@ -91,7 +91,7 @@ private void initializeSerializables() { Serializer.registerClass(DeselectTSKMessage.class); Serializer.registerClass(ForceContinueGameMessage.class); Serializer.registerClass(StartGameMessage.class); - Serializer.registerClass(JoinServerMessage.class); + Serializer.registerClass(JoinedLobbyMessage.class); Serializer.registerClass(LeaveGameMessage.class); Serializer.registerClass(LobbyNotReadyMessage.class); Serializer.registerClass(LobbyReadyMessage.class); @@ -139,7 +139,7 @@ private void registerListeners() { myServer.addMessageListener(this, DeselectTSKMessage.class); myServer.addMessageListener(this, ForceContinueGameMessage.class); myServer.addMessageListener(this, StartGameMessage.class); - myServer.addMessageListener(this, JoinServerMessage.class); + myServer.addMessageListener(this, JoinedLobbyMessage.class); myServer.addMessageListener(this, LeaveGameMessage.class); myServer.addMessageListener(this, LobbyNotReadyMessage.class); myServer.addMessageListener(this, LobbyReadyMessage.class); 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 5ced9a3d..44f099d3 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 @@ -25,6 +25,7 @@ public LobbyState(ClientState parent, ClientGameLogic logic) { @Override public void enter() { + logic.send(new JoinedLobbyMessage(parent.getOwnPlayerName())); } @Override diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/GameStates.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/GameStates.java index 5be2d171..4e2b82bb 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/GameStates.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/GameStates.java @@ -4,6 +4,7 @@ import pp.mdga.client.ClientState; import pp.mdga.game.BonusCard; import pp.mdga.game.Piece; +import pp.mdga.game.PieceState; import pp.mdga.game.ShieldState; import pp.mdga.message.server.PlayCardMessage; import pp.mdga.notification.ShieldActiveNotification; @@ -45,5 +46,6 @@ protected void throwPiece(Piece piece){ logic.addNotification(new ThrowPieceNotification(piece.getUuid())); logic.getGame().getPlayerByColor(piece.getColor()).getPlayerStatistic().increasePiecesBeingThrown(); logic.getGame().getGameStatistics().increasePiecesBeingThrown(); + piece.setState(PieceState.WAITING); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/WaitingState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/WaitingState.java index 6f3708ac..3a944d85 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/WaitingState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/WaitingState.java @@ -3,10 +3,7 @@ import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; import pp.mdga.client.GameState; -import pp.mdga.game.BonusCard; -import pp.mdga.game.Piece; -import pp.mdga.game.Player; -import pp.mdga.game.ShieldState; +import pp.mdga.game.*; import pp.mdga.message.server.*; import pp.mdga.notification.*; @@ -74,6 +71,13 @@ public void received(MoveMessage msg){ logic.addNotification(new HomeMoveNotification(pieceToMove.getUuid(), msg.getTargetIndex())); logic.getGame().getBoard().getInfield()[logic.getGame().getBoard().getInfieldIndexOfPiece(pieceToMove)].clearOccupant(); logic.getGame().getBoard().getPlayerData().get(pieceToMove.getColor()).setPieceInHome(msg.getTargetIndex(), pieceToMove); + for(int i = msg.getTargetIndex() + 1; i < 4; i++){ + if(!logic.getGame().getBoard().getPlayerData().get(pieceToMove.getColor()).getHomeNodes()[i].isOccupied()){ + pieceToMove.setState(PieceState.HOME); + break; + } + pieceToMove.setState(PieceState.HOMEFINISHED); + } } else { if (logic.getGame().getBoard().getInfield()[msg.getTargetIndex()].isOccupied()) { throwPiece(logic.getGame().getBoard().getInfield()[msg.getTargetIndex()].getOccupant()); diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/choosePieceState/WaitingPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/choosePieceState/WaitingPieceState.java index 9ac3dff2..0308743e 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/choosePieceState/WaitingPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/choosePieceState/WaitingPieceState.java @@ -4,6 +4,7 @@ import pp.mdga.client.ClientState; import pp.mdga.client.gameState.turnState.ChoosePieceState; import pp.mdga.game.Piece; +import pp.mdga.game.PieceState; import pp.mdga.message.client.SelectedPiecesMessage; import pp.mdga.message.server.MoveMessage; @@ -35,6 +36,8 @@ public void selectPiece(Piece piece){ @Override public void received(MoveMessage msg){ + Piece pieceToMove = logic.getGame().getPieceThroughUUID(msg.getIdentifier()); + pieceToMove.setState(PieceState.ACTIVE); parent.getParent().setState(parent.getParent().getMovePiece()); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientInterpreter.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientInterpreter.java index 073e307e..747c6262 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientInterpreter.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientInterpreter.java @@ -34,7 +34,7 @@ public interface ClientInterpreter { * @param msg the JoinServer message to be processed * @param from the connection ID from which the message was received */ - void received(JoinServerMessage msg, int from); + void received(JoinedLobbyMessage msg, int from); /** * Processes a received LeaveGame message. diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/JoinServerMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/JoinedLobbyMessage.java similarity index 73% rename from Projekte/mdga/model/src/main/java/pp/mdga/message/client/JoinServerMessage.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/client/JoinedLobbyMessage.java index 84f33051..ab1a0524 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/JoinServerMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/JoinedLobbyMessage.java @@ -6,14 +6,14 @@ * A message sent by a client when joining the server. */ @Serializable -public class JoinServerMessage extends ClientMessage { +public class JoinedLobbyMessage extends ClientMessage { private final String name; /** * Constructs a new JoinServer instance. */ - public JoinServerMessage(String name) { + public JoinedLobbyMessage(String name) { super(); this.name = name; } @@ -21,11 +21,20 @@ public JoinServerMessage(String name) { /** * Constructs a new JoinServer instance. */ - public JoinServerMessage() { + public JoinedLobbyMessage() { super(); name = null; } + /** + * Returns the name of the player that is joining the server. + * + * @return the name of the player that is joining the server + */ + public String getName(){ + return name; + } + /** * Returns a string representation of this message. * diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/MoveMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/MoveMessage.java index 5c14f8a0..4d4f6604 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/MoveMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/MoveMessage.java @@ -2,6 +2,8 @@ import com.jme3.network.serializing.Serializable; +import java.util.UUID; + /** * A message sent by the server to the client to move a piece on the board. */ @@ -10,7 +12,7 @@ public class MoveMessage extends ServerMessage { /** * The identifier of the piece that should be moved. */ - private final String pieceIdentifier; + private final UUID pieceUUID; /** * The index of the target node; @@ -27,9 +29,9 @@ public class MoveMessage extends ServerMessage { * * @param identifier the identifier of the piece that should be moved */ - public MoveMessage(String identifier, boolean isHomeMove, int targetIndex) { + public MoveMessage(UUID identifier, boolean isHomeMove, int targetIndex) { super(); - this.pieceIdentifier = identifier; + this.pieceUUID = identifier; this.isHomeMove = isHomeMove; this.targetIndex = targetIndex; } @@ -38,7 +40,7 @@ public MoveMessage(String identifier, boolean isHomeMove, int targetIndex) { * Default constructor for serialization purposes. */ private MoveMessage() { - pieceIdentifier = null; + pieceUUID = null; targetIndex = 0; isHomeMove = false; } @@ -48,8 +50,8 @@ private MoveMessage() { * * @return the identifier of the piece that should be moved */ - public String getIdentifier() { - return pieceIdentifier; + public UUID getIdentifier() { + return pieceUUID; } /** diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/ServerGameLogic.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/ServerGameLogic.java index ac2b048c..c3d15ae9 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/ServerGameLogic.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/ServerGameLogic.java @@ -63,7 +63,7 @@ public void received(StartGameMessage msg, int from) { } @Override - public void received(JoinServerMessage msg, int from) { + public void received(JoinedLobbyMessage msg, int from) { this.currentState.received(msg, from); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/ServerState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/ServerState.java index 7eac2f52..adc4c3fd 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/ServerState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/ServerState.java @@ -66,7 +66,7 @@ public void received(StartGameMessage msg, int from) {} * @param msg as the message which was sent by the player as a JoinServer object. * @param from as the client id of the player as an Integer. */ - public void received(JoinServerMessage msg, int from) {} + public void received(JoinedLobbyMessage msg, int from) {} /** * This method will be called whenever the server received an LeaveGame message.