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 5caa6192..14b5436e 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 @@ -153,6 +153,7 @@ private void initializeSerializables() { Serializer.registerClass(ShieldCard.class); Serializer.registerClass(HiddenCard.class); Serializer.registerClass(ChoosePieceStateMessage.class); + Serializer.registerClass(DrawCardMessage.class); Serializer.registerClass(Color.class, new EnumSerializer()); Serializer.registerClass(PieceState.class, new EnumSerializer()); 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 6a6735fa..f32d8603 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 @@ -424,6 +424,14 @@ public void received(ChoosePieceStateMessage choosePieceStateMessage) { state.received(choosePieceStateMessage); } + /** + * @param drawCardMessage + */ + @Override + public void received(DrawCardMessage drawCardMessage) { + state.received(drawCardMessage); + } + /** * This method calls the method received of the state * 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 e9b5c5e6..d210b7d7 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 @@ -100,6 +100,11 @@ public void received(ChoosePieceStateMessage msg) { LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg.toString()); } + @Override + public void received(DrawCardMessage msg){ + LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg.toString()); + } + @Override public void received(MoveMessage msg) { LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg.toString()); diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java index 100a8072..a41d66c7 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java @@ -286,6 +286,11 @@ public void received(ChoosePieceStateMessage msg){ state.received(msg); } + @Override + public void received(DrawCardMessage msg){ + state.received(msg); + } + /** * This method returns the current state * diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/SpectatorState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/SpectatorState.java index c840e997..39602bed 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/SpectatorState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/SpectatorState.java @@ -31,6 +31,13 @@ public void received(CeremonyMessage msg) { logic.setState(logic.getCeremony()); } + @Override + public void received(DrawCardMessage msg){ + logic.addNotification(new DrawCardNotification(logic.getGame().getActiveColor(), msg.getCard().getCard())); + logic.getGame().getPlayerByColor(logic.getGame().getActiveColor()).getPlayerStatistic().increaseActivatedBonusNodes(); + logic.getGame().getGameStatistics().increaseActivatedBonusNodes(); + } + @Override public void received(DieMessage msg) { //logic.getGame().setDiceEyes(msg.getDiceEye()); diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java index 80f57ae5..0521dda2 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java @@ -143,6 +143,11 @@ public void received(ChoosePieceStateMessage msg){ state.received(msg); } + @Override + public void received(DrawCardMessage msg){ + state.received(msg); + } + public ChoosePieceState getChoosePiece() { return choosePieceState; } 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 002ce1cd..30287096 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 @@ -67,6 +67,13 @@ public void received(ActivePlayerMessage msg) { } } + @Override + public void received(DrawCardMessage msg){ + logic.addNotification(new DrawCardNotification(logic.getGame().getActiveColor(), msg.getCard().getCard())); + logic.getGame().getPlayerByColor(logic.getGame().getActiveColor()).getPlayerStatistic().increaseActivatedBonusNodes(); + logic.getGame().getGameStatistics().increaseActivatedBonusNodes(); + } + @Override public void received(MoveMessage msg) { Piece piece = logic.getGame().getPieceThroughUUID(msg.getPiece().getUuid()); diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/BonusNode.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/BonusNode.java index cfb1f89d..27642566 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/BonusNode.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/BonusNode.java @@ -13,4 +13,9 @@ public class BonusNode extends Node { BonusNode() { super(null); } + + @Override + public boolean isBonus() { + return true; + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/Node.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Node.java index c9482b30..0dc1d98a 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/Node.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/Node.java @@ -49,6 +49,10 @@ public void setOccupant(Piece occupant) { this.occupant = occupant; } + public boolean isBonus(){ + return false; + } + /** * This method handles the event when a new occupant is moved to the node, * it then returns the old occupant. diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/DrawCardMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/DrawCardMessage.java new file mode 100644 index 00000000..6ccc1411 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/DrawCardMessage.java @@ -0,0 +1,34 @@ +package pp.mdga.message.server; + +import com.jme3.network.serializing.Serializable; +import pp.mdga.game.card.PowerCard; + +@Serializable +public class DrawCardMessage extends ServerMessage{ + + private final PowerCard card; + + public DrawCardMessage(PowerCard card){ + super(); + this.card = card; + } + + private DrawCardMessage(){ + super(); + card = null; + } + + /** + * Accepts a visitor to process this message. + * + * @param interpreter the visitor to process this message + */ + @Override + public void accept(ServerInterpreter interpreter) { + interpreter.received(this); + } + + public PowerCard getCard(){ + return card; + } +} 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 5ac5be99..be0c2184 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 @@ -223,4 +223,6 @@ public interface ServerInterpreter { void received(IncorrectRequestMessage msg); void received(ChoosePieceStateMessage choosePieceStateMessage); + + void received(DrawCardMessage drawCardMessage); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/FirstRollState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/FirstRollState.java index e7eee0f9..7dc061e1 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/FirstRollState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/FirstRollState.java @@ -38,7 +38,7 @@ public void enter() { LOGGER.log(System.Logger.Level.INFO, "Entered FirstRollState state."); roll = 0; moveablePieces = new ArrayList<>(); - for (Piece piece : this.rollDiceAutomaton.getTurnAutomaton().getPlayer().getPieces()) { + for (Piece piece : this.logic.getGame().getPlayerByColor(this.logic.getGame().getActiveColor()).getPieces()) { if (piece.getState() == PieceState.HOME || piece.getState() == PieceState.ACTIVE) { moveablePieces.add(piece); }