404 IQ-Move added move logic
This commit is contained in:
@@ -47,8 +47,12 @@ protected void throwPiece(Piece piece) {
|
||||
}
|
||||
|
||||
private void handleShield(UUID uuid) {
|
||||
if (logic.getGame().getBoard().getInfieldIndexOfPiece(logic.getGame().getPieceThroughUUID(uuid)) % 10 != 0) {
|
||||
Board board = logic.getGame().getBoard();
|
||||
Piece piece = logic.getGame().getPieceThroughUUID(uuid);
|
||||
Node node = board.getInfield()[board.getInfieldIndexOfPiece(piece)];
|
||||
if (node.isStart()) {
|
||||
logic.getGame().getPieceThroughUUID(uuid).setShield(ShieldState.SUPPRESSED);
|
||||
logic.addNotification(new ShieldActiveNotification(uuid));
|
||||
logic.addNotification(new ShieldSuppressedNotification(uuid));
|
||||
} else {
|
||||
logic.getGame().getPieceThroughUUID(uuid).setShield(ShieldState.ACTIVE);
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
import pp.mdga.client.ClientGameLogic;
|
||||
import pp.mdga.client.ClientState;
|
||||
import pp.mdga.client.gamestate.TurnState;
|
||||
import pp.mdga.game.BonusCard;
|
||||
import pp.mdga.message.client.AnimationEndMessage;
|
||||
import pp.mdga.message.server.PlayCardMessage;
|
||||
import pp.mdga.notification.PlayCardNotification;
|
||||
@@ -12,6 +13,7 @@ public class PlayPowerCardState extends TurnStates {
|
||||
private final TurnState parent;
|
||||
|
||||
private PlayCardMessage playCardMessage;
|
||||
private int animationCounter = 0;
|
||||
|
||||
public PlayPowerCardState(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
@@ -20,7 +22,11 @@ public PlayPowerCardState(ClientState parent, ClientGameLogic logic) {
|
||||
|
||||
@Override
|
||||
public void enter() {
|
||||
animationCounter++;
|
||||
logic.addNotification(new PlayCardNotification(logic.getGame().getActiveColor() , playCardMessage.getCard().getCard()));
|
||||
if(!playCardMessage.getCard().getCard().equals(BonusCard.TURBO)){
|
||||
animationCounter++;
|
||||
}
|
||||
handlePowerCard(playCardMessage);
|
||||
}
|
||||
|
||||
@@ -35,7 +41,10 @@ public void setPlayCard(PlayCardMessage playCardMessage) {
|
||||
|
||||
@Override
|
||||
public void selectAnimationEnd(){
|
||||
logic.send(new AnimationEndMessage());
|
||||
parent.setState(parent.getRollDice());
|
||||
animationCounter--;
|
||||
if(animationCounter == 0){
|
||||
logic.send(new AnimationEndMessage());
|
||||
parent.setState(parent.getRollDice());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,16 +57,32 @@ public void received(MoveMessage msg) {
|
||||
logic.addNotification(new HomeMoveNotification(piece.getUuid(), msg.getTargetIndex()));
|
||||
int infieldIndex=logic.getGame().getBoard().getInfieldIndexOfPiece(piece);
|
||||
System.out.println("Client: SelectState: activePiece in Home: infieldIndex"+infieldIndex);
|
||||
if(msg.getTargetIndex()==logic.getGame().getActivePlayer().getHighestHomeIdx()){
|
||||
piece.setState(PieceState.HOMEFINISHED);
|
||||
}
|
||||
else{
|
||||
piece.setState(PieceState.HOME);
|
||||
}
|
||||
logic.getGame().getBoard().getInfield()[infieldIndex].clearOccupant();
|
||||
logic.getGame().getPlayerByColor(piece.getColor()).setPieceInHome(msg.getTargetIndex(), piece);
|
||||
|
||||
|
||||
}
|
||||
else{
|
||||
System.out.println("Client: SelectPieceState: receivedMoveMessage:reached else");
|
||||
logic.addNotification(new HomeMoveNotification(piece.getUuid(), msg.getTargetIndex()));
|
||||
System.out.println("Client: electPieceState: homeindex"+logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece));
|
||||
int pieceHomeIndex = logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece);
|
||||
if(msg.getTargetIndex()==logic.getGame().getActivePlayer().getHighestHomeIdx()){
|
||||
piece.setState(PieceState.HOMEFINISHED);
|
||||
}
|
||||
else{
|
||||
piece.setState(PieceState.HOME);
|
||||
}
|
||||
logic.getGame().getActivePlayer().getHomeNodes()[pieceHomeIndex].clearOccupant();
|
||||
logic.getGame().getPlayerByColor(piece.getColor()).setPieceInHome(msg.getTargetIndex(), piece);
|
||||
|
||||
|
||||
}
|
||||
/*
|
||||
logic.addNotification(new HomeMoveNotification(piece.getUuid(), msg.getTargetIndex()));
|
||||
|
||||
@@ -87,7 +87,7 @@ public Game() {
|
||||
gameStatistics = new Statistic();
|
||||
initializeDrawPile();
|
||||
board = new Board();
|
||||
die = new Die(5,5,5,5,5,5,5,5,1,2,1,2,2,6,3,6);
|
||||
die = new Die(5, 5,5,5,5,5,5,5,5,3, 6 ,5,5,5,5,5,5,5,5,3 );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -95,8 +95,8 @@ public Game() {
|
||||
*/
|
||||
private void initializeDrawPile() {
|
||||
// this.addBonusCards(new TurboCard(), AMOUNT_OF_TURBO_CARDS);
|
||||
this.addBonusCards(new SwapCard(), AMOUNT_OF_SWAP_CARDS);
|
||||
// this.addBonusCards(new ShieldCard(), AMOUNT_OF_SHIELD_CARDS);
|
||||
// this.addBonusCards(new SwapCard(), AMOUNT_OF_SWAP_CARDS);
|
||||
this.addBonusCards(new ShieldCard(), AMOUNT_OF_SHIELD_CARDS);
|
||||
Collections.shuffle(this.drawPile);
|
||||
}
|
||||
|
||||
|
||||
@@ -99,4 +99,8 @@ public boolean isOccupied() {
|
||||
public boolean isOccupied(Color color) {
|
||||
return isOccupied() && this.occupant.getColor() == color;
|
||||
}
|
||||
|
||||
public boolean isStart() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -205,6 +205,22 @@ public boolean isHomeFinished(Piece piece) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* this method will be used to determine the highest index in the home
|
||||
*
|
||||
* @return the index
|
||||
*/
|
||||
public int getHighestHomeIdx(){
|
||||
for (int i =3; i>=0;i--){
|
||||
if(!homeNodes[i].isOccupied()) {
|
||||
System.out.println("Player: highestHomeIndex:"+i);
|
||||
return i;
|
||||
}
|
||||
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns the give name of the Player
|
||||
*
|
||||
|
||||
@@ -47,4 +47,9 @@ public Color getColor() {
|
||||
public void setColor(Color color) {
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isStart() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,6 @@ public GameState(ServerGameLogic logic) {
|
||||
this.determineStartPlayerState = new DetermineStartPlayerState(this, logic);
|
||||
this.animationState = new AnimationState(this, logic);
|
||||
this.turnState = new TurnState(this, logic);
|
||||
this.setCurrentState(this.determineStartPlayerState);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -46,6 +45,7 @@ public GameState(ServerGameLogic logic) {
|
||||
@Override
|
||||
public void enter() {
|
||||
LOGGER.log(System.Logger.Level.DEBUG, "Entered GameState state.");
|
||||
this.setCurrentState(this.determineStartPlayerState);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -30,8 +30,10 @@ public class DetermineStartPlayerState extends GameAutomatonState {
|
||||
* Create DetermineStartPlayerState attributes.
|
||||
*/
|
||||
private final Map<Integer, Integer> diceResults = new HashMap<>();
|
||||
private final Map<Integer, Integer> finalDiceResults = new HashMap<>();
|
||||
private final List<Integer> playersHaveToRoll = new ArrayList<>();
|
||||
private final Set<Integer> messageReceived = new HashSet<>();;
|
||||
private int playerToStart;
|
||||
|
||||
/**
|
||||
* Constructs a server state of the specified game logic.
|
||||
@@ -45,12 +47,13 @@ public DetermineStartPlayerState(GameState gameAutomaton, ServerGameLogic logic)
|
||||
|
||||
@Override
|
||||
public void enter() {
|
||||
LOGGER.log(System.Logger.Level.DEBUG, "Entered DetermineStartPlayerState state.");
|
||||
LOGGER.log(System.Logger.Level.INFO, "Entered DetermineStartPlayerState state.");
|
||||
playerToStart = this.logic.getGame().getPlayers().size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exit() {
|
||||
LOGGER.log(System.Logger.Level.DEBUG, "Exited DetermineStartPlayerState state.");
|
||||
LOGGER.log(Level.INFO, "Exited DetermineStartPlayerState state.");
|
||||
this.diceResults.clear();
|
||||
this.messageReceived.clear();
|
||||
}
|
||||
@@ -67,23 +70,21 @@ public void received(RequestDieMessage msg, int from) {
|
||||
int roll = this.logic.getGame().getDie().shuffle();
|
||||
this.logic.getServerSender().send(from, new DieMessage(roll));
|
||||
this.diceResults.put(from, roll);
|
||||
if (this.diceResults.size() == this.logic.getGame().getPlayers().size()) {
|
||||
if (this.diceResults.size() == playerToStart) {
|
||||
int maximumRoll = 0;
|
||||
|
||||
for (Map.Entry<Integer, Integer> entry : this.diceResults.entrySet()) {
|
||||
if (maximumRoll == entry.getValue()) {
|
||||
this.playersHaveToRoll.add(entry.getKey());
|
||||
LOGGER.log(Level.INFO, "Players have to roll(RD same as maximum): {0}", this.playersHaveToRoll.size());
|
||||
}
|
||||
else if (maximumRoll < entry.getValue()) {
|
||||
maximumRoll = entry.getValue();
|
||||
this.playersHaveToRoll.clear();
|
||||
this.playersHaveToRoll.add(entry.getKey());
|
||||
LOGGER.log(Level.INFO, "Players have to roll(RD higher as maximum): {0}", this.playersHaveToRoll.size());
|
||||
}
|
||||
}
|
||||
|
||||
for (int id: this.playersHaveToRoll) {
|
||||
this.diceResults.remove(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,18 +98,24 @@ else if (maximumRoll < entry.getValue()) {
|
||||
@Override
|
||||
public void received(AnimationEndMessage msg, int from) {
|
||||
this.messageReceived.add(from);
|
||||
if (this.messageReceived.size() == this.logic.getGame().getPlayers().size()) {
|
||||
if (this.messageReceived.size() == playerToStart) {
|
||||
this.messageReceived.clear();
|
||||
LOGGER.log(Level.INFO, "Players have to roll(Animation End): {0}", this.playersHaveToRoll.size());
|
||||
if (this.playersHaveToRoll.size() > 1) {
|
||||
playerToStart = this.playersHaveToRoll.size();
|
||||
for (Integer id : this.playersHaveToRoll) {
|
||||
diceResults.remove(id);
|
||||
this.logic.getServerSender().send(id, new DiceNowMessage());
|
||||
}
|
||||
finalDiceResults.putAll(this.diceResults);
|
||||
diceResults.clear();
|
||||
}
|
||||
else {
|
||||
finalDiceResults.putAll(this.diceResults);
|
||||
LOGGER.log(Level.INFO, "Players have to roll: %s".formatted(this.logic.getGame().getPlayerById(this.playersHaveToRoll.get(0))));
|
||||
Color color = this.logic.getGame().getPlayerById(this.playersHaveToRoll.get(0)).getColor();
|
||||
this.logic.getGame().setActiveColor(color);
|
||||
this.logic.getServerSender().broadcast(new RankingResponseMessage(this.diceResults));
|
||||
this.logic.getServerSender().broadcast(new RankingResponseMessage(this.finalDiceResults));
|
||||
this.logic.getServerSender().broadcast(new ActivePlayerMessage(color));
|
||||
this.gameAutomaton.setCurrentState(this.gameAutomaton.getAnimationState());
|
||||
}
|
||||
|
||||
@@ -121,21 +121,22 @@ protected int calculateTargetIndex(Piece piece) {
|
||||
* @return true, if the piece can move
|
||||
*/
|
||||
protected boolean canMove(Piece piece) {
|
||||
System.out.println("Server: ChoosePieceStateMachine: canMove: piece.getState()" + piece.getState());
|
||||
int steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes();
|
||||
int pieceIdx = logic.getGame().getBoard().getInfieldIndexOfPiece(piece);
|
||||
System.out.println("ChoosePieceAutomaton: pieceIndex:" + pieceIdx);
|
||||
int startIdx = logic.getGame().getActivePlayer().getStartNodeIndex();
|
||||
int normPieceIdx = (-startIdx + pieceIdx + 40) % 40;
|
||||
int targetIdx = normPieceIdx + steps;
|
||||
|
||||
System.out.println("Server: ChoosePieceStateMachine: canMove: piece.getState()" + piece.getState());
|
||||
System.out.println("Server: ChoosePieceStateAutomaton: canMove:" + canPieceMoveInHome(piece, steps));
|
||||
//checks if the piece can move in the home
|
||||
if (canPieceMoveInHome(piece, steps)) {
|
||||
System.out.println("Server: ChoosePieceStateMachine:canMove: entered canMove/canPieceMoveInHome");
|
||||
return true;
|
||||
}
|
||||
int pieceIdx = logic.getGame().getBoard().getInfieldIndexOfPiece(piece);
|
||||
System.out.println("ChoosePieceAutomaton: pieceIndex:" + pieceIdx);
|
||||
int startIdx = logic.getGame().getActivePlayer().getStartNodeIndex();
|
||||
int normPieceIdx = (-startIdx + pieceIdx + 40) % 40;
|
||||
int targetIdx = normPieceIdx + steps;
|
||||
//checks if the piece will not go over its home-field
|
||||
if (40 > targetIdx) {
|
||||
else if(40 > targetIdx && (!piece.getState().equals(PieceState.HOME)||!piece.getState().equals(PieceState.HOMEFINISHED))) {
|
||||
Color activeColor = logic.getGame().getActiveColor();
|
||||
System.out.println("ChoosePieceAutomaton: targetindex:" + (pieceIdx + steps) % 40);
|
||||
Node tartgetNode = logic.getGame().getBoard().getInfield()[(pieceIdx + steps) % 40];
|
||||
@@ -162,18 +163,18 @@ protected boolean canPieceMoveInHome(Piece piece, int steps) {
|
||||
//tests if the piece can move inside the home
|
||||
System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: pieceState:" + piece.getState());
|
||||
steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes();
|
||||
if (piece.getState() == PieceState.HOME) {
|
||||
if (piece.getState().equals(PieceState.HOME)) {
|
||||
System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: pieceState:reached if(piece.getState()==PieceState.HOME)");
|
||||
int homeIdx = logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece);
|
||||
//tests if the steps are less than the possible movement
|
||||
System.out.println("Server: ChoosePieceAutomaton: canPieceMoveInHome: reached second if: (4 - homeIdx) > steps:"+ ((4 - homeIdx) > steps)+ "steps:"+steps+"homeIdx:"+homeIdx);
|
||||
System.out.println("Server: ChoosePieceAutomaton: canPieceMoveInHome: reached second if: (4 - homeIdx) > steps:" + ((4 - homeIdx) > steps) + "steps:" + steps + "homeIdx:" + homeIdx);
|
||||
if ((4 - homeIdx) > steps) {
|
||||
System.out.println("Server: canPieceMoveInHome: !jumpOver" + !jumpOver(steps, homeIdx, false));
|
||||
return !jumpOver(steps, homeIdx, false);
|
||||
}
|
||||
}
|
||||
//tests if the piece can move in the home
|
||||
if (piece.getState() == PieceState.ACTIVE) {
|
||||
else if (piece.getState() == PieceState.ACTIVE) {
|
||||
int pieceIdx = logic.getGame().getBoard().getInfieldIndexOfPiece(piece);
|
||||
int startIdx = logic.getGame().getActivePlayer().getStartNodeIndex();
|
||||
int normPieceIdx = (-startIdx + pieceIdx + 40) % 40;
|
||||
@@ -185,12 +186,16 @@ protected boolean canPieceMoveInHome(Piece piece, int steps) {
|
||||
System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: stepsToHome:" + stepsToHome + "restMovement:" + restMovement + "jumpOver:" + jumpOver(restMovement, 0, true) + "canPieceMoveInHome: return:" + true);
|
||||
return !jumpOver(restMovement, 0, true);
|
||||
}
|
||||
} else {
|
||||
System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: return:" + false);
|
||||
return false;
|
||||
}
|
||||
System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: return:" + false);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* tests if the piece, when moved in or inside a home, must jump over another piece
|
||||
*
|
||||
@@ -200,8 +205,10 @@ protected boolean canPieceMoveInHome(Piece piece, int steps) {
|
||||
* @return false, if there is no piece to jump over
|
||||
*/
|
||||
private boolean jumpOver(int stepsInHome, int homeIdx, boolean outside) {
|
||||
|
||||
//tests if the piece comes from the outside in the home
|
||||
if (outside) {
|
||||
if (logic.getGame().getActivePlayer().getHomeNodes()[stepsInHome].isOccupied()) return true;
|
||||
System.out.println("Server: ChoosePieceState: jumpOver: from outside");
|
||||
for (int i = 0; i < stepsInHome; i++) {
|
||||
if (logic.getGame().getActivePlayer().getHomeNodes()[i].isOccupied()) return true;
|
||||
@@ -209,6 +216,7 @@ private boolean jumpOver(int stepsInHome, int homeIdx, boolean outside) {
|
||||
}
|
||||
//tests if the piece jumps over a piece from inside the home
|
||||
else {
|
||||
if (logic.getGame().getActivePlayer().getHomeNodes()[stepsInHome + homeIdx].isOccupied()) return true;
|
||||
for (int i = 1 + homeIdx; i < homeIdx + stepsInHome; i++) {
|
||||
if (logic.getGame().getActivePlayer().getHomeNodes()[i].isOccupied()) return true;
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ public void received(RequestMoveMessage msg, int from){
|
||||
Piece piece = moveablePieces.get(indexOfPiece);
|
||||
if(canPieceMoveInHome(piece,steps)){
|
||||
System.out.println("Server: SelectPieceState: canPieceMoveInHome(piece,steps)");
|
||||
if(piece.getState()==PieceState.HOME) {
|
||||
if(piece.getState().equals(PieceState.HOME)) {
|
||||
System.out.println("Server: SelectPieceState: piece.getState()==PieceState.HOME");
|
||||
//gets the oldNode
|
||||
int homeIndex = logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece);
|
||||
@@ -99,15 +99,17 @@ public void received(RequestMoveMessage msg, int from){
|
||||
//gets the targetNode
|
||||
int targetHomeIdx = getHomeTargetIdx(piece,steps);
|
||||
Node targetNode = logic.getGame().getActivePlayer().getHomeNodes()[targetHomeIdx];
|
||||
|
||||
oldNode.clearOccupant();
|
||||
targetNode.setOccupant(piece);
|
||||
if (targetHomeIdx == 3) {
|
||||
if (targetHomeIdx ==logic.getGame().getActivePlayer().getHighestHomeIdx()) {
|
||||
piece.setState(PieceState.HOMEFINISHED);
|
||||
}
|
||||
else{
|
||||
piece.setState(PieceState.HOME);
|
||||
}
|
||||
|
||||
oldNode.clearOccupant();
|
||||
targetNode.setOccupant(piece);
|
||||
System.out.println("sets homefinsihed here:"+ (targetHomeIdx ==logic.getGame().getActivePlayer().getHighestHomeIdx())+"targetIdx:"+targetHomeIdx+"HighestHomeIdx:"+logic.getGame().getActivePlayer().getHighestHomeIdx());
|
||||
|
||||
}
|
||||
else{
|
||||
System.out.println("Server: SelectPieceState: entered else");
|
||||
@@ -118,13 +120,17 @@ public void received(RequestMoveMessage msg, int from){
|
||||
int targetHomeIdx = getHomeTargetIdx(piece,steps);
|
||||
Node targetNode = logic.getGame().getActivePlayer().getHomeNodes()[targetHomeIdx];
|
||||
|
||||
oldNode.clearOccupant();
|
||||
targetNode.setOccupant(piece);
|
||||
|
||||
if (targetHomeIdx == 3) {
|
||||
if (targetHomeIdx ==logic.getGame().getActivePlayer().getHighestHomeIdx()) {
|
||||
piece.setState(PieceState.HOMEFINISHED);
|
||||
}
|
||||
piece.setState(PieceState.HOME);
|
||||
else{
|
||||
piece.setState(PieceState.HOME);
|
||||
}
|
||||
|
||||
oldNode.clearOccupant();
|
||||
targetNode.setOccupant(piece);
|
||||
System.out.println("sets homefinsihed:"+ (targetHomeIdx ==logic.getGame().getActivePlayer().getHighestHomeIdx())+"targetIdx:"+targetHomeIdx+"HighestHomeIdx:"+logic.getGame().getActivePlayer().getHighestHomeIdx());
|
||||
|
||||
System.out.println("Server: SelectPieceMessage: received(RequestMoveMessage): setPiece(Home)"+piece.getState());
|
||||
}
|
||||
LOGGER.log(System.Logger.Level.INFO,"Server : SelectPieceState: PieceState:"+piece.getState());
|
||||
|
||||
@@ -22,6 +22,7 @@ public class FirstRollState extends RollDiceAutomatonState {
|
||||
private static final System.Logger LOGGER = System.getLogger(FirstRollState.class.getName());
|
||||
private List<Piece> moveablePieces;
|
||||
private int roll;
|
||||
private boolean isDied = false;
|
||||
|
||||
/**
|
||||
* Constructs a server state of the specified game logic.
|
||||
@@ -37,6 +38,7 @@ public FirstRollState(RollDiceState rollDiceAutomaton, ServerGameLogic logic) {
|
||||
public void enter() {
|
||||
LOGGER.log(System.Logger.Level.INFO, "Entered FirstRollState state.");
|
||||
roll = 0;
|
||||
isDied = false;
|
||||
moveablePieces = new ArrayList<>();
|
||||
for (Piece piece : this.logic.getGame().getPlayerByColor(this.logic.getGame().getActiveColor()).getPieces()) {
|
||||
if (piece.getState() == PieceState.HOME || piece.getState() == PieceState.ACTIVE) {
|
||||
@@ -62,14 +64,16 @@ public void received(RequestDieMessage msg, int from) {
|
||||
roll = this.logic.getGame().getDie().shuffle();
|
||||
this.logic.getGame().setDiceEyes(roll);
|
||||
this.logic.getServerSender().broadcast(new DieMessage(roll));
|
||||
isDied = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void received(AnimationEndMessage msg, int from) {
|
||||
if (from != this.logic.getGame().getActivePlayerId()) {
|
||||
return;
|
||||
}
|
||||
if (!moveablePieces.isEmpty()) {
|
||||
LOGGER.log(System.Logger.Level.INFO, "Received AnimationEndMessage from wrong player.");
|
||||
} else if (!isDied){
|
||||
LOGGER.log(System.Logger.Level.INFO, "Received AnimationEndMessage without the active player rolling a die.");
|
||||
} else if (!moveablePieces.isEmpty()) {
|
||||
this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new ChoosePieceStateMessage());
|
||||
this.rollDiceAutomaton.getTurnAutomaton().setCurrentState(this.rollDiceAutomaton.getTurnAutomaton().getChoosePieceState());
|
||||
} else {
|
||||
|
||||
@@ -41,7 +41,13 @@ public ServerCardVisitor(ServerGameLogic logic) {
|
||||
*/
|
||||
@Override
|
||||
public void visit(TurboCard card) {
|
||||
this.cards.add(card);
|
||||
for (Piece piece : this.logic.getGame().getPlayerByColor(this.logic.getGame().getActiveColor()).getPieces()) {
|
||||
if (piece.getState() == PieceState.ACTIVE) {
|
||||
if (!this.cards.contains(card)) {
|
||||
this.cards.add(card);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user