added the functionality of multiple roll dice when all pieces in waiting

This commit is contained in:
Fleischer Hanno
2024-12-08 20:17:53 +01:00
parent f4a224621e
commit a5d949b7e5
7 changed files with 48 additions and 19 deletions

View File

@@ -152,6 +152,7 @@ private void initializeSerializables() {
Serializer.registerClass(SwapCard.class); Serializer.registerClass(SwapCard.class);
Serializer.registerClass(ShieldCard.class); Serializer.registerClass(ShieldCard.class);
Serializer.registerClass(HiddenCard.class); Serializer.registerClass(HiddenCard.class);
Serializer.registerClass(ChoosePieceStateMessage.class);
Serializer.registerClass(Color.class, new EnumSerializer()); Serializer.registerClass(Color.class, new EnumSerializer());
Serializer.registerClass(PieceState.class, new EnumSerializer()); Serializer.registerClass(PieceState.class, new EnumSerializer());

View File

@@ -5,6 +5,7 @@
import pp.mdga.client.gamestate.TurnState; import pp.mdga.client.gamestate.TurnState;
import pp.mdga.message.client.AnimationEndMessage; import pp.mdga.message.client.AnimationEndMessage;
import pp.mdga.message.client.RequestDieMessage; import pp.mdga.message.client.RequestDieMessage;
import pp.mdga.message.server.ChoosePieceStateMessage;
import pp.mdga.message.server.DieMessage; import pp.mdga.message.server.DieMessage;
import pp.mdga.message.server.NoTurnMessage; import pp.mdga.message.server.NoTurnMessage;
import pp.mdga.notification.DiceNowNotification; import pp.mdga.notification.DiceNowNotification;
@@ -47,13 +48,12 @@ public void received(DieMessage msg){
@Override @Override
public void selectAnimationEnd(){ public void selectAnimationEnd(){
logic.send(new AnimationEndMessage()); logic.send(new AnimationEndMessage());
parent.setState(parent.getChoosePiece());
} }
// @Override @Override
// public void received(ChoosePieceStateMessage msg){ public void received(ChoosePieceStateMessage msg){
// parent.setState(parent.getChoosePiece()); parent.setState(parent.getChoosePiece());
// } }
@Override @Override
public void received(NoTurnMessage msg){ public void received(NoTurnMessage msg){

View File

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

View File

@@ -221,4 +221,6 @@ public interface ServerInterpreter {
* @param msg the IncorrectRequest message received. * @param msg the IncorrectRequest message received.
*/ */
void received(IncorrectRequestMessage msg); void received(IncorrectRequestMessage msg);
void received(ChoosePieceStateMessage choosePieceStateMessage);
} }

View File

@@ -5,6 +5,7 @@
import pp.mdga.game.PieceState; import pp.mdga.game.PieceState;
import pp.mdga.message.client.AnimationEndMessage; import pp.mdga.message.client.AnimationEndMessage;
import pp.mdga.message.client.RequestDieMessage; import pp.mdga.message.client.RequestDieMessage;
import pp.mdga.message.server.ChoosePieceStateMessage;
import pp.mdga.message.server.DiceAgainMessage; import pp.mdga.message.server.DiceAgainMessage;
import pp.mdga.message.server.DiceNowMessage; import pp.mdga.message.server.DiceNowMessage;
import pp.mdga.message.server.DieMessage; import pp.mdga.message.server.DieMessage;
@@ -66,9 +67,11 @@ public void received(RequestDieMessage msg, int from) {
@Override @Override
public void received(AnimationEndMessage msg, int from) { public void received(AnimationEndMessage msg, int from) {
if (!moveablePieces.isEmpty()) { if (!moveablePieces.isEmpty()) {
this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new ChoosePieceStateMessage());
this.rollDiceAutomaton.getTurnAutomaton().setCurrentState(this.rollDiceAutomaton.getTurnAutomaton().getChoosePieceState()); this.rollDiceAutomaton.getTurnAutomaton().setCurrentState(this.rollDiceAutomaton.getTurnAutomaton().getChoosePieceState());
} else { } else {
if (roll == Resources.MAX_EYES) { if (roll == Resources.MAX_EYES) {
this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new ChoosePieceStateMessage());
this.rollDiceAutomaton.getTurnAutomaton().setCurrentState(this.rollDiceAutomaton.getTurnAutomaton().getChoosePieceState()); this.rollDiceAutomaton.getTurnAutomaton().setCurrentState(this.rollDiceAutomaton.getTurnAutomaton().getChoosePieceState());
} else { } else {
this.rollDiceAutomaton.setCurrentState(this.rollDiceAutomaton.getSecondRollState()); this.rollDiceAutomaton.setCurrentState(this.rollDiceAutomaton.getSecondRollState());

View File

@@ -1,6 +1,8 @@
package pp.mdga.server.automaton.game.turn.rolldice; package pp.mdga.server.automaton.game.turn.rolldice;
import pp.mdga.message.client.AnimationEndMessage;
import pp.mdga.message.client.RequestDieMessage; import pp.mdga.message.client.RequestDieMessage;
import pp.mdga.message.server.ChoosePieceStateMessage;
import pp.mdga.message.server.DiceAgainMessage; import pp.mdga.message.server.DiceAgainMessage;
import pp.mdga.message.server.DiceNowMessage; import pp.mdga.message.server.DiceNowMessage;
import pp.mdga.message.server.DieMessage; import pp.mdga.message.server.DieMessage;
@@ -44,8 +46,14 @@ public void exit() {
@Override @Override
public void received(RequestDieMessage msg, int from) { public void received(RequestDieMessage msg, int from) {
int roll = this.logic.getGame().getDie().shuffle(); int roll = this.logic.getGame().getDie().shuffle();
this.logic.getGame().setDiceEyes(roll);
this.logic.getServerSender().broadcast(new DieMessage(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()); this.rollDiceAutomaton.getTurnAutomaton().setCurrentState(this.rollDiceAutomaton.getTurnAutomaton().getChoosePieceState());
} else { } else {
this.rollDiceAutomaton.setCurrentState(this.rollDiceAutomaton.getThirdRollState()); this.rollDiceAutomaton.setCurrentState(this.rollDiceAutomaton.getThirdRollState());

View File

@@ -1,5 +1,6 @@
package pp.mdga.server.automaton.game.turn.rolldice; package pp.mdga.server.automaton.game.turn.rolldice;
import pp.mdga.message.client.AnimationEndMessage;
import pp.mdga.message.client.RequestDieMessage; import pp.mdga.message.client.RequestDieMessage;
import pp.mdga.message.server.*; import pp.mdga.message.server.*;
import pp.mdga.server.ServerGameLogic; import pp.mdga.server.ServerGameLogic;
@@ -42,23 +43,20 @@ public void exit() {
@Override @Override
public void received(RequestDieMessage msg, int from) { public void received(RequestDieMessage msg, int from) {
int roll = this.logic.getGame().getDie().shuffle(); int roll = this.logic.getGame().getDie().shuffle();
this.logic.getGame().setDiceEyes(roll);
this.logic.getServerSender().broadcast(new DieMessage(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()); this.rollDiceAutomaton.getTurnAutomaton().setCurrentState(this.rollDiceAutomaton.getTurnAutomaton().getChoosePieceState());
} else { } else {
this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new NoTurnMessage()); this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new NoTurnMessage());
logic.getGame().setActiveColor(logic.getGame().getActiveColor().next(logic.getGame()));
if (this.rollDiceAutomaton.getTurnAutomaton().getPlayer().isFinished()) { logic.getServerSender().broadcast(new ActivePlayerMessage(logic.getGame().getActiveColor()));
this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new SpectatorMessage()); this.rollDiceAutomaton.getTurnAutomaton().getGameAutomaton().setCurrentState(this.rollDiceAutomaton.getTurnAutomaton().getGameAutomaton().getTurnState());
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());
}
}
} }
} }
} }