added more logic for the server state diagram
This commit is contained in:
@@ -1,7 +1,55 @@
|
||||
package pp.mdga.server;
|
||||
|
||||
import pp.mdga.game.Player;
|
||||
import pp.mdga.message.server.WaitPiece;
|
||||
|
||||
public class NoPiece extends ServerState {
|
||||
public NoPiece(ServerState parent, ServerGameLogic 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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user