added more logic for the server state diagram

This commit is contained in:
Daniel Grigencha
2024-11-17 20:17:19 +01:00
committed by Felix
parent 96489f2454
commit 3949a00932
21 changed files with 374 additions and 16 deletions

View File

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