Merge Test to Development #8
@@ -22,8 +22,12 @@ public class Game {
|
|||||||
private Map<Color, Integer> playerConnectionID;
|
private Map<Color, Integer> playerConnectionID;
|
||||||
|
|
||||||
private ArrayList<Observer> observers = new ArrayList<>();
|
private ArrayList<Observer> observers = new ArrayList<>();
|
||||||
|
private Player startPlayer;
|
||||||
private Boolean gameHasStarted = false;
|
private Boolean gameHasStarted = false;
|
||||||
private Boolean playerHasDisconnected = false;
|
private Boolean playerHasDisconnected = false;
|
||||||
|
private Boolean gameIsInterrupted = false;
|
||||||
|
private Boolean allRanked = false;
|
||||||
|
private Boolean movablePieces = false;
|
||||||
|
|
||||||
private static final int AMOUNT_OF_TURBO_CARDS = 16;
|
private static final int AMOUNT_OF_TURBO_CARDS = 16;
|
||||||
private static final int AMOUNT_OF_SHIELD_AND_SWAP_CARDS = 12;
|
private static final int AMOUNT_OF_SHIELD_AND_SWAP_CARDS = 12;
|
||||||
@@ -309,6 +313,44 @@ public Boolean playerHasDisconnected() {
|
|||||||
return playerHasDisconnected;
|
return playerHasDisconnected;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method sets the game interruption state.
|
||||||
|
*
|
||||||
|
* @param gameIsInterrupted the new game interruption state
|
||||||
|
*/
|
||||||
|
public void setGameIsInterrupted(Boolean gameIsInterrupted) {
|
||||||
|
this.gameIsInterrupted = gameIsInterrupted;
|
||||||
|
if (!gameIsInterrupted) notifyObservers();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method returns whether the game is interrupted.
|
||||||
|
*
|
||||||
|
* @return true if the game is interrupted, false otherwise
|
||||||
|
*/
|
||||||
|
public Boolean gameIsInterrupted() {
|
||||||
|
return gameIsInterrupted;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method returns whether the game is interrupted.
|
||||||
|
*
|
||||||
|
* @return true if the game is interrupted, false otherwise
|
||||||
|
*/
|
||||||
|
public Boolean getMovablePieces() {
|
||||||
|
return movablePieces;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method sets the game interruption state.
|
||||||
|
*
|
||||||
|
* @param movablePieces the new game interruption state
|
||||||
|
*/
|
||||||
|
public void setMovablePieces(Boolean movablePieces) {
|
||||||
|
this.movablePieces = movablePieces;
|
||||||
|
if (!movablePieces) notifyObservers();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method sets the player has disconnected.
|
* This method sets the player has disconnected.
|
||||||
*
|
*
|
||||||
@@ -316,9 +358,44 @@ public Boolean playerHasDisconnected() {
|
|||||||
*/
|
*/
|
||||||
public void setPlayerHasDisconnected(Boolean playerHasDisconnected) {
|
public void setPlayerHasDisconnected(Boolean playerHasDisconnected) {
|
||||||
this.playerHasDisconnected = playerHasDisconnected;
|
this.playerHasDisconnected = playerHasDisconnected;
|
||||||
if (playerHasDisconnected) {
|
if (playerHasDisconnected) notifyObservers();
|
||||||
notifyObservers();
|
}
|
||||||
}
|
|
||||||
|
/**
|
||||||
|
* This method returns whether all players have ranked.
|
||||||
|
*
|
||||||
|
* @return true if all players have ranked, false otherwise
|
||||||
|
*/
|
||||||
|
public Boolean allRanked() {
|
||||||
|
return allRanked;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method sets whether all players have ranked.
|
||||||
|
*
|
||||||
|
* @param allRanked the new all ranked state
|
||||||
|
*/
|
||||||
|
public void setAllRanked(Boolean allRanked) {
|
||||||
|
this.allRanked = allRanked;
|
||||||
|
if (allRanked) notifyObservers();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method returns the start player.
|
||||||
|
*
|
||||||
|
* @return the start player
|
||||||
|
*/
|
||||||
|
public Player getStartPlayer() {
|
||||||
|
return startPlayer;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method sets the start player.
|
||||||
|
*
|
||||||
|
* @param startPlayer the new start player
|
||||||
|
*/
|
||||||
|
public void setStartPlayer(Player startPlayer) {
|
||||||
|
this.startPlayer = startPlayer;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package pp.mdga.server;
|
||||||
|
|
||||||
|
import pp.mdga.message.client.AnimationEnd;
|
||||||
|
|
||||||
|
public class Animation extends ServerState {
|
||||||
|
public Animation(ServerState parent, ServerGameLogic logic) {
|
||||||
|
super(parent, logic);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receivedAnimationEnd(AnimationEnd msg) {
|
||||||
|
parent.gotoState(new Turn(parent, logic));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,7 +6,7 @@ public ChoosePieceStateMachine(ServerState parent, ServerGameLogic logic) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ServerState initialState() {
|
public NoPiece initialState() {
|
||||||
return null;
|
return new NoPiece(this, logic);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,42 @@
|
|||||||
package pp.mdga.server;
|
package pp.mdga.server;
|
||||||
|
|
||||||
|
import pp.mdga.game.Player;
|
||||||
|
import pp.mdga.message.client.RequestDice;
|
||||||
|
import pp.mdga.message.server.DiceNow;
|
||||||
|
import pp.mdga.message.server.RankingRollAgain;
|
||||||
|
|
||||||
public class DetermineStartPlayer extends ServerState {
|
public class DetermineStartPlayer extends ServerState {
|
||||||
public DetermineStartPlayer(ServerState parent, ServerGameLogic logic) {
|
public DetermineStartPlayer(ServerState parent, ServerGameLogic logic) {
|
||||||
super(parent, logic);
|
super(parent, logic);
|
||||||
|
logic.getGame().addObserver(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receivedRequestDice(RequestDice msg) {
|
||||||
|
// todo: implement
|
||||||
|
}
|
||||||
|
|
||||||
|
// todo: msg?, sent to everyone?
|
||||||
|
@Override
|
||||||
|
public void sentRankingResponse() {
|
||||||
|
// todo: implemtent
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update() {
|
||||||
|
if (logic.getGame().allRanked()) {
|
||||||
|
if (logic.getGame().getStartPlayer() == null) {
|
||||||
|
// todo: send it to everyone? or player with the same dice value? save the players with the same value?
|
||||||
|
logic.send(new Player(1), new RankingRollAgain());
|
||||||
|
} else {
|
||||||
|
// todo: set start player
|
||||||
|
Player startPlayer = new Player(1);
|
||||||
|
logic.getGame().setStartPlayer(startPlayer);
|
||||||
|
logic.send(startPlayer, new DiceNow());
|
||||||
|
parent.gotoState(new Animation(parent, logic));
|
||||||
|
logic.getGame().removeObserver(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,31 @@
|
|||||||
package pp.mdga.server;
|
package pp.mdga.server;
|
||||||
|
|
||||||
|
import pp.mdga.game.Player;
|
||||||
|
import pp.mdga.message.client.RequestDice;
|
||||||
|
import pp.mdga.message.server.Dice;
|
||||||
|
import pp.mdga.message.server.DiceAgain;
|
||||||
|
|
||||||
public class FirstRoll extends ServerState {
|
public class FirstRoll extends ServerState {
|
||||||
public FirstRoll(ServerState parent, ServerGameLogic logic) {
|
public FirstRoll(ServerState parent, ServerGameLogic logic) {
|
||||||
super(parent, logic);
|
super(parent, logic);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receivedRequestDice(RequestDice msg) {
|
||||||
|
// todo: implement player.hasMovablePieces()
|
||||||
|
if (player.hasMovablePieces()) {
|
||||||
|
// todo: goto ChoosePiece
|
||||||
|
} else {
|
||||||
|
// todo: implement roll
|
||||||
|
if (roll == 6) {
|
||||||
|
// todo: send to everyone? or one player?
|
||||||
|
logic.send(new Player(1), new Dice());
|
||||||
|
// todo: goto ChoosePiece
|
||||||
|
} else {
|
||||||
|
// todo: send to everyone? or one player?
|
||||||
|
logic.send(new Player(1), new DiceAgain());
|
||||||
|
parent.gotoState(new SecondRoll(parent, logic));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,8 +34,8 @@ public void receivedNoPowerCard(NoPowerCard msg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void receivedPowerCardChoice(SelectCard msg) {
|
public void receivedSelectCard(SelectCard msg) {
|
||||||
gameStateMachine.receivedPowerCardChoice(msg);
|
gameStateMachine.receivedSelectCard(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -68,7 +68,8 @@ public void sentRankingResponse() {
|
|||||||
@Override
|
@Override
|
||||||
public void update() {
|
public void update() {
|
||||||
if (logic.getGame().playerHasDisconnected()) {
|
if (logic.getGame().playerHasDisconnected()) {
|
||||||
parent.gotoState(new Ceremony(parent, logic));
|
parent.gotoState(new Interrupt(parent, logic));
|
||||||
|
// todo: change to interrupt, save the last state of gamestatemachine, change from interrupt to gamestate has to restore the last state
|
||||||
logic.getGame().removeObserver(this);
|
logic.getGame().removeObserver(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,5 +3,14 @@
|
|||||||
public class Interrupt extends ServerState {
|
public class Interrupt extends ServerState {
|
||||||
public Interrupt(ServerState parent, ServerGameLogic logic) {
|
public Interrupt(ServerState parent, ServerGameLogic logic) {
|
||||||
super(parent, logic);
|
super(parent, logic);
|
||||||
|
logic.getGame().addObserver(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update() {
|
||||||
|
if (!logic.getGame().gameIsInterrupted()) {
|
||||||
|
parent.gotoState(new GameState(parent, logic));
|
||||||
|
logic.getGame().removeObserver(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,55 @@
|
|||||||
package pp.mdga.server;
|
package pp.mdga.server;
|
||||||
|
|
||||||
|
import pp.mdga.game.Player;
|
||||||
|
import pp.mdga.message.server.WaitPiece;
|
||||||
|
|
||||||
public class NoPiece extends ServerState {
|
public class NoPiece extends ServerState {
|
||||||
public NoPiece(ServerState parent, ServerGameLogic logic) {
|
public NoPiece(ServerState parent, ServerGameLogic logic) {
|
||||||
super(parent, logic);
|
super(parent, logic);
|
||||||
|
entry();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void entry() {
|
||||||
|
if (hasTurbo() || turbo == 0) {
|
||||||
|
if (roll == 6 &&
|
||||||
|
logic.getGame().getBoard().getPlayerData().getWaitingArea().hasPieces() &&
|
||||||
|
logic.getGame().getBoard().getNodes().getStartNode(Color).isOccupied()) {
|
||||||
|
parent.gotoState(new WaitingPiece(parent, logic));
|
||||||
|
} else {
|
||||||
|
parent.gotoState(new NoTurn(parent, logic));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
validateHasPieces();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validateHasPieces() {
|
||||||
|
if (logic.getGame().getBoard().getPlayerData().getWaitingArea().hasPieces()) {
|
||||||
|
if (logic.getGame().getBoard().getNodes().getStartNode(Color).isOccupied()) {
|
||||||
|
if (roll == 6) {
|
||||||
|
logic.send(new Player(1), new WaitPiece());
|
||||||
|
} else {
|
||||||
|
validateMove();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (logic.getGame().getBoard().getNodes().getStartNode(Color).getPiece().canMove()) {
|
||||||
|
logic.send(new Player(1), new WaitPiece());
|
||||||
|
parent.gotoState(new StartPiece(parent, logic));
|
||||||
|
} else {
|
||||||
|
validateMove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
validateMove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validateMove() {
|
||||||
|
if (player.canMove()) {
|
||||||
|
parent.gotoState(new NoTurn(parent, logic));
|
||||||
|
} else {
|
||||||
|
logic.send(new Player(1), new SelectPiece());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,14 @@
|
|||||||
package pp.mdga.server;
|
package pp.mdga.server;
|
||||||
|
|
||||||
|
import pp.mdga.message.server.EndOfTurn;
|
||||||
|
|
||||||
public class NoTurn extends ServerState {
|
public class NoTurn extends ServerState {
|
||||||
public NoTurn(ServerState parent, ServerGameLogic logic) {
|
public NoTurn(ServerState parent, ServerGameLogic logic) {
|
||||||
super(parent, logic);
|
super(parent, logic);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sentEndOfTurn(EndOfTurn msg) {
|
||||||
|
// todo: goto end of turn
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package pp.mdga.server;
|
||||||
|
|
||||||
|
public class PlayPowerCard extends ServerState {
|
||||||
|
public PlayPowerCard(ServerState parent, ServerGameLogic logic) {
|
||||||
|
super(parent, logic);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,54 @@
|
|||||||
package pp.mdga.server;
|
package pp.mdga.server;
|
||||||
|
|
||||||
|
import pp.mdga.game.Player;
|
||||||
|
import pp.mdga.message.client.NoPowerCard;
|
||||||
|
import pp.mdga.message.client.SelectCard;
|
||||||
|
import pp.mdga.message.client.SelectedPieces;
|
||||||
|
import pp.mdga.message.server.DiceNow;
|
||||||
|
import pp.mdga.message.server.PossibleCard;
|
||||||
|
|
||||||
public class PowerCard extends ServerState {
|
public class PowerCard extends ServerState {
|
||||||
public PowerCard(ServerState parent, ServerGameLogic logic) {
|
public PowerCard(ServerState parent, ServerGameLogic logic) {
|
||||||
super(parent, logic);
|
super(parent, logic);
|
||||||
|
logic.getGame().addObserver(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receivedNoPowerCard(NoPowerCard msg) {
|
||||||
|
// todo: send to everyone? or one player?
|
||||||
|
// todo: right msg?
|
||||||
|
logic.send(new Player(1), new DiceNow());
|
||||||
|
parent.gotoState(new RollDice(parent, logic));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receivedSelectCard(SelectCard msg) {
|
||||||
|
// todo: send to everyone? or one player?
|
||||||
|
logic.send(new Player(1), new PossibleCard());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receivedSelectedPieces(SelectedPieces msg) {
|
||||||
|
if (verifySelectedPieces()) {
|
||||||
|
// todo: send to everyone? or one player?
|
||||||
|
// todo: msg PowerCardAnimation?
|
||||||
|
logic.send(new Player(1), new PowerCardAnimation());
|
||||||
|
parent.gotoState(new PlayPowerCard(parent, logic));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sentPossibleCard(PossibleCard msg) {
|
||||||
|
// todo: implement
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update() {
|
||||||
|
if (!logic.getGame().getMovablePieces()) {
|
||||||
|
// todo: send to everyone? or one player?
|
||||||
|
// todo: right msg?
|
||||||
|
logic.send(new Player(1), new DiceNow());
|
||||||
|
parent.gotoState(new RollDice(parent, logic));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ public RollDiceMachine(ServerState parent, ServerGameLogic logic) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ServerState initialState() {
|
public FirstRoll initialState() {
|
||||||
return null;
|
return new FirstRoll(this, logic);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,25 @@
|
|||||||
package pp.mdga.server;
|
package pp.mdga.server;
|
||||||
|
|
||||||
|
import pp.mdga.game.Player;
|
||||||
|
import pp.mdga.message.client.RequestDice;
|
||||||
|
import pp.mdga.message.server.Dice;
|
||||||
|
import pp.mdga.message.server.DiceAgain;
|
||||||
|
|
||||||
public class SecondRoll extends ServerState {
|
public class SecondRoll extends ServerState {
|
||||||
public SecondRoll(ServerState parent, ServerGameLogic logic) {
|
public SecondRoll(ServerState parent, ServerGameLogic logic) {
|
||||||
super(parent, logic);
|
super(parent, logic);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receivedRequestDice(RequestDice msg) {
|
||||||
|
if (roll == 6) {
|
||||||
|
// todo: send to everyone? or one player?
|
||||||
|
logic.send(new Player(1), new Dice());
|
||||||
|
// todo: goto ChoosePiece
|
||||||
|
} else {
|
||||||
|
// todo: send to everyone? or one player?
|
||||||
|
logic.send(new Player(1), new DiceAgain());
|
||||||
|
parent.gotoState(new ThirdRoll(parent, logic));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,21 @@
|
|||||||
package pp.mdga.server;
|
package pp.mdga.server;
|
||||||
|
|
||||||
|
import pp.mdga.game.Piece;
|
||||||
|
import pp.mdga.game.Player;
|
||||||
|
import pp.mdga.message.server.StartPiece;
|
||||||
|
|
||||||
public class SelectPiece extends ServerState {
|
public class SelectPiece extends ServerState {
|
||||||
public SelectPiece(ServerState parent, ServerGameLogic logic) {
|
public SelectPiece(ServerState parent, ServerGameLogic logic) {
|
||||||
super(parent, logic);
|
super(parent, logic);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receivedConfirmPiece(Piece p) {
|
||||||
|
if (verifyPiece(p)) {
|
||||||
|
logic.send(new Player(1), new Animation());
|
||||||
|
// todo: goto state
|
||||||
|
} else {
|
||||||
|
logic.send(new Player(1), new StartPiece());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
import pp.mdga.game.Piece;
|
import pp.mdga.game.Piece;
|
||||||
import pp.mdga.message.client.*;
|
import pp.mdga.message.client.*;
|
||||||
|
import pp.mdga.message.server.EndOfTurn;
|
||||||
import pp.mdga.message.server.PossibleCard;
|
import pp.mdga.message.server.PossibleCard;
|
||||||
import java.lang.System.Logger;
|
import java.lang.System.Logger;
|
||||||
|
|
||||||
@@ -28,8 +29,6 @@ public void receivedNoPowerCard(NoPowerCard msg) { /* do nothing */ }
|
|||||||
|
|
||||||
public void receivedNotReady(LobbyNotReady msg) { /* do nothing */ }
|
public void receivedNotReady(LobbyNotReady msg) { /* do nothing */ }
|
||||||
|
|
||||||
public void receivedPowerCardChoice(SelectCard msg) { /* do nothing */ }
|
|
||||||
|
|
||||||
public void receivedReady(LobbyReady msg) { /* do nothing */ }
|
public void receivedReady(LobbyReady msg) { /* do nothing */ }
|
||||||
|
|
||||||
public void receivedRequestDice(RequestDice msg) { /* do nothing */ }
|
public void receivedRequestDice(RequestDice msg) { /* do nothing */ }
|
||||||
@@ -37,12 +36,16 @@ public void receivedRequestDice(RequestDice msg) { /* do nothing */ }
|
|||||||
// todo msg?
|
// todo msg?
|
||||||
public void receivedRollRankingDice() { /* do nothing */ }
|
public void receivedRollRankingDice() { /* do nothing */ }
|
||||||
|
|
||||||
|
public void receivedSelectCard(SelectCard msg) { /* do nothing */ }
|
||||||
|
|
||||||
public void receivedSelectTSK(SelectTSK msg) { /* do nothing */ }
|
public void receivedSelectTSK(SelectTSK msg) { /* do nothing */ }
|
||||||
|
|
||||||
public void receivedSelectedPieces(SelectedPieces msg) { /* do nothing */ }
|
public void receivedSelectedPieces(SelectedPieces msg) { /* do nothing */ }
|
||||||
|
|
||||||
public void receivedStartGame(ClientStartGame msg) { /* do nothing */ }
|
public void receivedStartGame(ClientStartGame msg) { /* do nothing */ }
|
||||||
|
|
||||||
|
public void sentEndOfTurn(EndOfTurn msg) { /* do nothing */ }
|
||||||
|
|
||||||
public void sentPossibleCard(PossibleCard msg) { /* do nothing */ }
|
public void sentPossibleCard(PossibleCard msg) { /* do nothing */ }
|
||||||
|
|
||||||
// todo msg?, sent to everyone?
|
// todo msg?, sent to everyone?
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
import pp.mdga.game.Piece;
|
import pp.mdga.game.Piece;
|
||||||
import pp.mdga.message.client.*;
|
import pp.mdga.message.client.*;
|
||||||
|
import pp.mdga.message.server.EndOfTurn;
|
||||||
import pp.mdga.message.server.PossibleCard;
|
import pp.mdga.message.server.PossibleCard;
|
||||||
|
|
||||||
public abstract class ServerStateMachine extends ServerState {
|
public abstract class ServerStateMachine extends ServerState {
|
||||||
@@ -61,8 +62,8 @@ public void receivedNotReady(LobbyNotReady msg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void receivedPowerCardChoice(SelectCard msg) {
|
public void receivedSelectCard(SelectCard msg) {
|
||||||
state.receivedPowerCardChoice(msg);
|
state.receivedSelectCard(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -96,6 +97,11 @@ public void receivedStartGame(ClientStartGame msg) {
|
|||||||
state.receivedStartGame(msg);
|
state.receivedStartGame(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sentEndOfTurn(EndOfTurn msg) {
|
||||||
|
state.sentEndOfTurn(msg);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sentPossibleCard(PossibleCard msg) {
|
public void sentPossibleCard(PossibleCard msg) {
|
||||||
state.sentPossibleCard(msg);
|
state.sentPossibleCard(msg);
|
||||||
|
|||||||
@@ -1,7 +1,20 @@
|
|||||||
package pp.mdga.server;
|
package pp.mdga.server;
|
||||||
|
|
||||||
|
import pp.mdga.game.Piece;
|
||||||
|
import pp.mdga.game.Player;
|
||||||
|
|
||||||
public class StartPiece extends ServerState {
|
public class StartPiece extends ServerState {
|
||||||
public StartPiece(ServerState parent, ServerGameLogic logic) {
|
public StartPiece(ServerState parent, ServerGameLogic logic) {
|
||||||
super(parent, logic);
|
super(parent, logic);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receivedConfirmPiece(Piece p) {
|
||||||
|
if (verifyPiece(p)) {
|
||||||
|
logic.send(new Player(1), new Animation());
|
||||||
|
// todo: goto state
|
||||||
|
} else {
|
||||||
|
logic.send(new Player(1), new pp.mdga.message.server.StartPiece());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,25 @@
|
|||||||
package pp.mdga.server;
|
package pp.mdga.server;
|
||||||
|
|
||||||
|
import pp.mdga.game.Player;
|
||||||
|
import pp.mdga.message.client.RequestDice;
|
||||||
|
import pp.mdga.message.server.Dice;
|
||||||
|
import pp.mdga.message.server.DiceAgain;
|
||||||
|
|
||||||
public class ThirdRoll extends ServerState {
|
public class ThirdRoll extends ServerState {
|
||||||
public ThirdRoll(ServerState parent, ServerGameLogic logic) {
|
public ThirdRoll(ServerState parent, ServerGameLogic logic) {
|
||||||
super(parent, logic);
|
super(parent, logic);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receivedRequestDice(RequestDice msg) {
|
||||||
|
if (roll == 6) {
|
||||||
|
// todo: send to everyone? or one player?
|
||||||
|
logic.send(new Player(1), new Dice());
|
||||||
|
// todo: goto ChoosePiece
|
||||||
|
} else {
|
||||||
|
// todo: send to everyone? or one player?
|
||||||
|
logic.send(new Player(1), new DiceAgain());
|
||||||
|
// todo: goto End from Turn
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,4 +6,6 @@ public class Turn extends ServerState {
|
|||||||
public Turn(ServerState parent, ServerGameLogic logic) {
|
public Turn(ServerState parent, ServerGameLogic logic) {
|
||||||
super(parent, logic);
|
super(parent, logic);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// todo: when TurnStateMachine is in the end state, and then?
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ public TurnStateMachine(ServerState parent, ServerGameLogic logic) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ServerState initialState() {
|
public PowerCard initialState() {
|
||||||
return null;
|
return new PowerCard(this, logic);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,22 @@
|
|||||||
package pp.mdga.server;
|
package pp.mdga.server;
|
||||||
|
|
||||||
|
import pp.mdga.game.Piece;
|
||||||
|
import pp.mdga.game.Player;
|
||||||
|
import pp.mdga.message.client.AnimationEnd;
|
||||||
|
import pp.mdga.message.server.StartPiece;
|
||||||
|
|
||||||
public class WaitingPiece extends ServerState {
|
public class WaitingPiece extends ServerState {
|
||||||
public WaitingPiece(ServerState parent, ServerGameLogic logic) {
|
public WaitingPiece(ServerState parent, ServerGameLogic logic) {
|
||||||
super(parent, logic);
|
super(parent, logic);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receivedConfirmPiece(Piece p) {
|
||||||
|
if (verifyPiece(p)) {
|
||||||
|
logic.send(new Player(1), new Animation());
|
||||||
|
// todo: goto state
|
||||||
|
} else {
|
||||||
|
logic.send(new Player(1), new StartPiece());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user