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 6f219591..5caa6192 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 @@ -152,6 +152,7 @@ private void initializeSerializables() { Serializer.registerClass(SwapCard.class); Serializer.registerClass(ShieldCard.class); Serializer.registerClass(HiddenCard.class); + Serializer.registerClass(ChoosePieceStateMessage.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/gamestate/turnstate/RollDiceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/RollDiceState.java index da78fb0d..90d473d3 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/RollDiceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/RollDiceState.java @@ -5,6 +5,7 @@ import pp.mdga.client.gamestate.TurnState; import pp.mdga.message.client.AnimationEndMessage; import pp.mdga.message.client.RequestDieMessage; +import pp.mdga.message.server.ChoosePieceStateMessage; import pp.mdga.message.server.DieMessage; import pp.mdga.message.server.NoTurnMessage; import pp.mdga.notification.DiceNowNotification; @@ -47,13 +48,12 @@ public void received(DieMessage msg){ @Override public void selectAnimationEnd(){ logic.send(new AnimationEndMessage()); - parent.setState(parent.getChoosePiece()); } -// @Override -// public void received(ChoosePieceStateMessage msg){ -// parent.setState(parent.getChoosePiece()); -// } + @Override + public void received(ChoosePieceStateMessage msg){ + parent.setState(parent.getChoosePiece()); + } @Override public void received(NoTurnMessage msg){ diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ChoosePieceStateMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ChoosePieceStateMessage.java new file mode 100644 index 00000000..65b71ea9 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ChoosePieceStateMessage.java @@ -0,0 +1,17 @@ +package pp.mdga.message.server; + +public class ChoosePieceStateMessage extends ServerMessage { + + public ChoosePieceStateMessage() { + super(); + } + /** + * Accepts a visitor to process this message. + * + * @param interpreter the visitor to process this message + */ + @Override + public void accept(ServerInterpreter interpreter) { + interpreter.received(this); + } +} 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 6a9b0ddd..5ac5be99 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 @@ -221,4 +221,6 @@ public interface ServerInterpreter { * @param msg the IncorrectRequest message received. */ void received(IncorrectRequestMessage msg); + + void received(ChoosePieceStateMessage choosePieceStateMessage); } 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 3d3174df..e7eee0f9 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 @@ -5,6 +5,7 @@ import pp.mdga.game.PieceState; import pp.mdga.message.client.AnimationEndMessage; import pp.mdga.message.client.RequestDieMessage; +import pp.mdga.message.server.ChoosePieceStateMessage; import pp.mdga.message.server.DiceAgainMessage; import pp.mdga.message.server.DiceNowMessage; import pp.mdga.message.server.DieMessage; @@ -66,9 +67,11 @@ public void received(RequestDieMessage msg, int from) { @Override public void received(AnimationEndMessage msg, int from) { if (!moveablePieces.isEmpty()) { + this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new ChoosePieceStateMessage()); this.rollDiceAutomaton.getTurnAutomaton().setCurrentState(this.rollDiceAutomaton.getTurnAutomaton().getChoosePieceState()); } else { if (roll == Resources.MAX_EYES) { + this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new ChoosePieceStateMessage()); this.rollDiceAutomaton.getTurnAutomaton().setCurrentState(this.rollDiceAutomaton.getTurnAutomaton().getChoosePieceState()); } else { this.rollDiceAutomaton.setCurrentState(this.rollDiceAutomaton.getSecondRollState()); diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/SecondRollState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/SecondRollState.java index 5453259e..6b3f8819 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/SecondRollState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/SecondRollState.java @@ -1,6 +1,8 @@ package pp.mdga.server.automaton.game.turn.rolldice; +import pp.mdga.message.client.AnimationEndMessage; import pp.mdga.message.client.RequestDieMessage; +import pp.mdga.message.server.ChoosePieceStateMessage; import pp.mdga.message.server.DiceAgainMessage; import pp.mdga.message.server.DiceNowMessage; import pp.mdga.message.server.DieMessage; @@ -44,8 +46,14 @@ public void exit() { @Override public void received(RequestDieMessage msg, int from) { int roll = this.logic.getGame().getDie().shuffle(); + this.logic.getGame().setDiceEyes(roll); this.logic.getServerSender().broadcast(new DieMessage(roll)); - if (roll == 6) { + } + + @Override + public void received(AnimationEndMessage msg, int from) { + if (this.logic.getGame().getDiceEyes() == 6) { + this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new ChoosePieceStateMessage()); this.rollDiceAutomaton.getTurnAutomaton().setCurrentState(this.rollDiceAutomaton.getTurnAutomaton().getChoosePieceState()); } else { this.rollDiceAutomaton.setCurrentState(this.rollDiceAutomaton.getThirdRollState()); diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/ThirdRollState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/ThirdRollState.java index 06bd6a6c..34f0fb52 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/ThirdRollState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/ThirdRollState.java @@ -1,5 +1,6 @@ package pp.mdga.server.automaton.game.turn.rolldice; +import pp.mdga.message.client.AnimationEndMessage; import pp.mdga.message.client.RequestDieMessage; import pp.mdga.message.server.*; import pp.mdga.server.ServerGameLogic; @@ -42,23 +43,20 @@ public void exit() { @Override public void received(RequestDieMessage msg, int from) { int roll = this.logic.getGame().getDie().shuffle(); + this.logic.getGame().setDiceEyes(roll); this.logic.getServerSender().broadcast(new DieMessage(roll)); - if (roll == 6) { + } + + @Override + public void received(AnimationEndMessage msg, int from) { + if (this.logic.getGame().getDiceEyes() == 6) { + this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new ChoosePieceStateMessage()); this.rollDiceAutomaton.getTurnAutomaton().setCurrentState(this.rollDiceAutomaton.getTurnAutomaton().getChoosePieceState()); } else { this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new NoTurnMessage()); - - if (this.rollDiceAutomaton.getTurnAutomaton().getPlayer().isFinished()) { - this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new SpectatorMessage()); - - if (this.logic.getGame().getNumberOfActivePlayers() == 1) { - this.logic.getServerSender().broadcast(new CeremonyMessage()); - } else { - this.logic.getGame().setActiveColor(this.logic.getGame().getActiveColor().next(logic.getGame())); - this.logic.getServerSender().broadcast(new ActivePlayerMessage(this.logic.getGame().getActiveColor())); - this.rollDiceAutomaton.getTurnAutomaton().getGameAutomaton().setCurrentState(this.rollDiceAutomaton.getTurnAutomaton().getGameAutomaton().getAnimationState()); - } - } + logic.getGame().setActiveColor(logic.getGame().getActiveColor().next(logic.getGame())); + logic.getServerSender().broadcast(new ActivePlayerMessage(logic.getGame().getActiveColor())); + this.rollDiceAutomaton.getTurnAutomaton().getGameAutomaton().setCurrentState(this.rollDiceAutomaton.getTurnAutomaton().getGameAutomaton().getTurnState()); } } }