reformatted code

This commit is contained in:
Benjamin Feyer
2024-12-10 02:23:19 +01:00
parent 91d4718179
commit 38c865d135
5 changed files with 78 additions and 76 deletions

View File

@@ -53,41 +53,38 @@ public void selectPiece(Piece piece) {
public void received(MoveMessage msg) { public void received(MoveMessage msg) {
Piece piece = logic.getGame().getPieceThroughUUID(msg.getPiece().getUuid()); Piece piece = logic.getGame().getPieceThroughUUID(msg.getPiece().getUuid());
//logic.getGame().getBoard().getInfield()[logic.getGame().getBoard().getInfieldIndexOfPiece(piece)].clearOccupant(); //logic.getGame().getBoard().getInfield()[logic.getGame().getBoard().getInfieldIndexOfPiece(piece)].clearOccupant();
System.out.println("Client: selectPieceState: receivedMoveMessage: msg.isHomeMoved():"+msg.isHomeMove()); System.out.println("Client: selectPieceState: receivedMoveMessage: msg.isHomeMoved():" + msg.isHomeMove());
if (msg.isHomeMove()) { if (msg.isHomeMove()) {
System.out.println("Client: selectPieceState: receivedMoveMessage: msg.getPiece.getState():"+piece.getState()); System.out.println("Client: selectPieceState: receivedMoveMessage: msg.getPiece.getState():" + piece.getState());
if(piece.getState().equals(PieceState.ACTIVE)){ if (piece.getState().equals(PieceState.ACTIVE)) {
logic.addNotification(new HomeMoveNotification(piece.getUuid(), msg.getTargetIndex())); logic.addNotification(new HomeMoveNotification(piece.getUuid(), msg.getTargetIndex()));
int infieldIndex=logic.getGame().getBoard().getInfieldIndexOfPiece(piece); int infieldIndex = logic.getGame().getBoard().getInfieldIndexOfPiece(piece);
System.out.println("Client: SelectState: activePiece in Home: infieldIndex"+infieldIndex); System.out.println("Client: SelectState: activePiece in Home: infieldIndex" + infieldIndex);
if(msg.getTargetIndex()==logic.getGame().getActivePlayer().getHighestHomeIdx()){ if (msg.getTargetIndex() == logic.getGame().getActivePlayer().getHighestHomeIdx()) {
piece.setState(PieceState.HOMEFINISHED); piece.setState(PieceState.HOMEFINISHED);
} }
else{ else {
piece.setState(PieceState.HOME); piece.setState(PieceState.HOME);
} }
logic.getGame().getBoard().getInfield()[infieldIndex].clearOccupant(); logic.getGame().getBoard().getInfield()[infieldIndex].clearOccupant();
logic.getGame().getPlayerByColor(piece.getColor()).setPieceInHome(msg.getTargetIndex(), piece); logic.getGame().getPlayerByColor(piece.getColor()).setPieceInHome(msg.getTargetIndex(), piece);
} }
else{ else {
System.out.println("Client: SelectPieceState: receivedMoveMessage:reached else"); System.out.println("Client: SelectPieceState: receivedMoveMessage:reached else");
logic.addNotification(new HomeMoveNotification(piece.getUuid(), msg.getTargetIndex())); logic.addNotification(new HomeMoveNotification(piece.getUuid(), msg.getTargetIndex()));
System.out.println("Client: electPieceState: homeindex"+logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece)); System.out.println("Client: electPieceState: homeindex" + logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece));
int pieceHomeIndex = logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece); int pieceHomeIndex = logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece);
if(msg.getTargetIndex()==logic.getGame().getActivePlayer().getHighestHomeIdx()){ if (msg.getTargetIndex() == logic.getGame().getActivePlayer().getHighestHomeIdx()) {
piece.setState(PieceState.HOMEFINISHED); piece.setState(PieceState.HOMEFINISHED);
} }
else{ else {
piece.setState(PieceState.HOME); piece.setState(PieceState.HOME);
} }
logic.getGame().getActivePlayer().getHomeNodes()[pieceHomeIndex].clearOccupant(); logic.getGame().getActivePlayer().getHomeNodes()[pieceHomeIndex].clearOccupant();
logic.getGame().getPlayerByColor(piece.getColor()).setPieceInHome(msg.getTargetIndex(), piece); logic.getGame().getPlayerByColor(piece.getColor()).setPieceInHome(msg.getTargetIndex(), piece);
} }
} else { }
else {
int oldIndex = logic.getGame().getBoard().getInfieldIndexOfPiece(piece); int oldIndex = logic.getGame().getBoard().getInfieldIndexOfPiece(piece);
Piece occ = logic.getGame().getBoard().getInfield()[msg.getTargetIndex()].getOccupant(); Piece occ = logic.getGame().getBoard().getInfield()[msg.getTargetIndex()].getOccupant();
@@ -104,12 +101,13 @@ public void received(MoveMessage msg) {
logic.getGame().getBoard().getInfield()[logic.getGame().getBoard().getInfieldIndexOfPiece(piece)].clearOccupant(); logic.getGame().getBoard().getInfield()[logic.getGame().getBoard().getInfieldIndexOfPiece(piece)].clearOccupant();
//set new node //set new node
logic.getGame().getBoard().getInfield()[msg.getTargetIndex()].setOccupant(piece); logic.getGame().getBoard().getInfield()[msg.getTargetIndex()].setOccupant(piece);
if (logic.getGame().getBoard().getInfield()[msg.getTargetIndex()].isStart()){ if (logic.getGame().getBoard().getInfield()[msg.getTargetIndex()].isStart()) {
if (piece.isShielded()){ if (piece.isShielded()) {
piece.setShield(ShieldState.SUPPRESSED); piece.setShield(ShieldState.SUPPRESSED);
logic.addNotification(new ShieldSuppressedNotification(piece.getUuid())); logic.addNotification(new ShieldSuppressedNotification(piece.getUuid()));
} }
} else if (piece.isSuppressed()){ }
else if (piece.isSuppressed()) {
piece.setShield(ShieldState.ACTIVE); piece.setShield(ShieldState.ACTIVE);
logic.addNotification(new ShieldActiveNotification(piece.getUuid())); logic.addNotification(new ShieldActiveNotification(piece.getUuid()));
} }

View File

@@ -38,7 +38,6 @@ protected boolean canMove(Piece piece) {
int normPieceIdx = (-startIdx + pieceIdx + 40) % 40; int normPieceIdx = (-startIdx + pieceIdx + 40) % 40;
int targetIdx = normPieceIdx + steps; int targetIdx = normPieceIdx + steps;
//checks if the piece can move in the home //checks if the piece can move in the home
if (piece.getState().equals(PieceState.HOME)) { if (piece.getState().equals(PieceState.HOME)) {
if (canPieceMoveInHome(piece, steps)) { if (canPieceMoveInHome(piece, steps)) {
@@ -77,11 +76,11 @@ else if (40 > targetIdx && (!piece.getState().equals(PieceState.HOME) || !piece.
protected boolean canPieceMoveInHome(Piece piece, int steps) { protected boolean canPieceMoveInHome(Piece piece, int steps) {
//tests if the piece can move inside the home //tests if the piece can move inside the home
steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes(); steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes();
System.out.println("Server: reached canPieceMoveInHome for piece: " + piece +" and the steps: "+steps); System.out.println("Server: reached canPieceMoveInHome for piece: " + piece + " and the steps: " + steps);
if (piece.getState().equals(PieceState.HOME)) { if (piece.getState().equals(PieceState.HOME)) {
int homeIdx = logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece); int homeIdx = logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece);
System.out.println("Server: reached canPieceMoveInHome for piece: " + piece + " and the steps: "+steps + " and the homeIndex: "+homeIdx + " and the if-clause ((3 - homeIdx) >= steps - 1): "+((3 - homeIdx) >= steps - 1)); System.out.println("Server: reached canPieceMoveInHome for piece: " + piece + " and the steps: " + steps + " and the homeIndex: " + homeIdx + " and the if-clause ((3 - homeIdx) >= steps - 1): " + ((3 - homeIdx) >= steps - 1));
//tests if the steps are less than the possible movement //tests if the steps are less than the possible movement
if ((3 - homeIdx) >= steps - 1) { if ((3 - homeIdx) >= steps - 1) {
return !jumpOver(steps, homeIdx, false); return !jumpOver(steps, homeIdx, false);
@@ -96,11 +95,11 @@ else if (piece.getState() == PieceState.ACTIVE) {
int startIdx = logic.getGame().getActivePlayer().getStartNodeIndex(); int startIdx = logic.getGame().getActivePlayer().getStartNodeIndex();
int normPieceIdx = (-startIdx + pieceIdx + 40) % 40; int normPieceIdx = (-startIdx + pieceIdx + 40) % 40;
int targetIdx = normPieceIdx + steps; int targetIdx = normPieceIdx + steps;
System.out.println("Server: canPieceHomeMove: else: Active: with pieceIndex: "+pieceIdx+" and the steps: "+steps+ " and startIdx: "+startIdx+" and targetIdx: "+targetIdx +" and the if-statement (targetIdx >= 40): "+(targetIdx >= 40)); System.out.println("Server: canPieceHomeMove: else: Active: with pieceIndex: " + pieceIdx + " and the steps: " + steps + " and startIdx: " + startIdx + " and targetIdx: " + targetIdx + " and the if-statement (targetIdx >= 40): " + (targetIdx >= 40));
if (targetIdx >= 40) { if (targetIdx >= 40) {
int stepsToHome = 39 - normPieceIdx; int stepsToHome = 39 - normPieceIdx;
int restMovement = steps - stepsToHome-1; int restMovement = steps - stepsToHome - 1;
System.out.println("Server: canPieceHomeMove:else: restMovement: "+restMovement+ " and the if-clause(restMovement >= 3):"+(restMovement >= 3)); System.out.println("Server: canPieceHomeMove:else: restMovement: " + restMovement + " and the if-clause(restMovement >= 3):" + (restMovement >= 3));
if (restMovement >= 4) return false; if (restMovement >= 4) return false;
return !jumpOver(restMovement, 0, true); return !jumpOver(restMovement, 0, true);
} }
@@ -122,7 +121,7 @@ else if (piece.getState() == PieceState.ACTIVE) {
private boolean jumpOver(int stepsInHome, int homeIdx, boolean outside) { private boolean jumpOver(int stepsInHome, int homeIdx, boolean outside) {
//tests if the piece comes from the outside in the home //tests if the piece comes from the outside in the home
if (outside) { if (outside) {
System.out.println("Server: jumpOver: for the homeIndex: "+ homeIdx+" ,stepsInHome: "+stepsInHome+ " , outside: "+outside + " annd the targetIndex: "+stepsInHome); System.out.println("Server: jumpOver: for the homeIndex: " + homeIdx + " ,stepsInHome: " + stepsInHome + " , outside: " + outside + " annd the targetIndex: " + stepsInHome);
if (logic.getGame().getActivePlayer().getHomeNodes()[stepsInHome].isOccupied()) return true; if (logic.getGame().getActivePlayer().getHomeNodes()[stepsInHome].isOccupied()) return true;
for (int i = 0; i <= stepsInHome; i++) { for (int i = 0; i <= stepsInHome; i++) {
if (logic.getGame().getActivePlayer().getHomeNodes()[i].isOccupied()) return true; if (logic.getGame().getActivePlayer().getHomeNodes()[i].isOccupied()) return true;
@@ -131,7 +130,7 @@ private boolean jumpOver(int stepsInHome, int homeIdx, boolean outside) {
//tests if the piece jumps over a piece from inside the home //tests if the piece jumps over a piece from inside the home
else { else {
int targetIndex = stepsInHome + homeIdx; int targetIndex = stepsInHome + homeIdx;
System.out.println("Server: jumpOver: for the homeIndex: "+ homeIdx+" ,stepsInHome: "+stepsInHome+ " , outside: "+outside + " and the targetIndex: "+targetIndex); System.out.println("Server: jumpOver: for the homeIndex: " + homeIdx + " ,stepsInHome: " + stepsInHome + " , outside: " + outside + " and the targetIndex: " + targetIndex);
if (logic.getGame().getActivePlayer().getHomeNodes()[targetIndex].isOccupied()) return true; if (logic.getGame().getActivePlayer().getHomeNodes()[targetIndex].isOccupied()) return true;
for (int i = 1 + homeIdx; i <= targetIndex; i++) { for (int i = 1 + homeIdx; i <= targetIndex; i++) {
if (logic.getGame().getActivePlayer().getHomeNodes()[i].isOccupied()) return true; if (logic.getGame().getActivePlayer().getHomeNodes()[i].isOccupied()) return true;
@@ -158,13 +157,13 @@ protected int getHomeTargetIdx(Piece piece, int steps) {
int stepsToHome = 39 - normPieceIdx; int stepsToHome = 39 - normPieceIdx;
//calculates the rest-movement inside a home //calculates the rest-movement inside a home
int restMovement = steps - stepsToHome - 1; int restMovement = steps - stepsToHome - 1;
System.out.println("Server: getHomeTargetIndex for the piece: "+ piece + " with the index: "+restMovement); System.out.println("Server: getHomeTargetIndex for the piece: " + piece + " with the index: " + restMovement);
return restMovement; return restMovement;
} }
//the else handles the logic if the piece is in the home and moves inside the house //the else handles the logic if the piece is in the home and moves inside the house
else { else {
int pieceHomeIdx = logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece); int pieceHomeIdx = logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece);
System.out.println("Server: getHomeTargetIndex for the piece: "+ piece + " with the index: "+(pieceHomeIdx + steps)); System.out.println("Server: getHomeTargetIndex for the piece: " + piece + " with the index: " + (pieceHomeIdx + steps));
return pieceHomeIdx + steps; return pieceHomeIdx + steps;
} }
} }
@@ -177,7 +176,7 @@ protected int getHomeTargetIdx(Piece piece, int steps) {
*/ */
protected int getInfieldTarget(Piece piece, int steps) { protected int getInfieldTarget(Piece piece, int steps) {
int index = logic.getGame().getBoard().getInfieldIndexOfPiece(piece); int index = logic.getGame().getBoard().getInfieldIndexOfPiece(piece);
System.out.println("Server: calculated the targetIndex in the Infield for:"+piece+"with the value"+ ((steps + index) % 40)); System.out.println("Server: calculated the targetIndex in the Infield for:" + piece + "with the value" + ((steps + index) % 40));
return (steps + index) % 40; return (steps + index) % 40;
} }

View File

@@ -24,9 +24,9 @@ public NoPieceState(ChoosePieceState choosePieceAutomaton, ServerGameLogic logic
super(choosePieceAutomaton, logic); super(choosePieceAutomaton, logic);
} }
private void initialize(){ private void initialize() {
Player activePlayer = logic.getGame().getPlayerByColor(logic.getGame().getActiveColor()); Player activePlayer = logic.getGame().getPlayerByColor(logic.getGame().getActiveColor());
if(logic.getGame().getDiceModifier() == 0){ if (logic.getGame().getDiceModifier() == 0) {
if (logic.getGame().getDiceEyes() == 6) { if (logic.getGame().getDiceEyes() == 6) {
if (activePlayer.hasPieceInWaitingArea()) { if (activePlayer.hasPieceInWaitingArea()) {
if (!logic.getGame().getBoard().getInfield()[activePlayer.getStartNodeIndex()].isOccupied(activePlayer.getColor())) { if (!logic.getGame().getBoard().getInfield()[activePlayer.getStartNodeIndex()].isOccupied(activePlayer.getColor())) {
@@ -36,34 +36,40 @@ private void initialize(){
} }
} }
this.choosePieceAutomaton.setCurrentState(this.choosePieceAutomaton.getNoTurnState()); this.choosePieceAutomaton.setCurrentState(this.choosePieceAutomaton.getNoTurnState());
} else if (activePlayer.hasPieceInWaitingArea()) { }
if (!logic.getGame().getBoard().getInfield()[activePlayer.getStartNodeIndex()].isOccupied(activePlayer.getColor())){ else if (activePlayer.hasPieceInWaitingArea()) {
if (!logic.getGame().getBoard().getInfield()[activePlayer.getStartNodeIndex()].isOccupied(activePlayer.getColor())) {
if (logic.getGame().getDiceEyes() == 6) { if (logic.getGame().getDiceEyes() == 6) {
this.choosePieceAutomaton.setCurrentState(this.choosePieceAutomaton.getWaitingPieceState()); this.choosePieceAutomaton.setCurrentState(this.choosePieceAutomaton.getWaitingPieceState());
} else { }
else {
checkSelectPiece(activePlayer); checkSelectPiece(activePlayer);
} }
} else if (canMove(logic.getGame().getBoard().getInfield()[activePlayer.getStartNodeIndex()].getOccupant())){ }
else if (canMove(logic.getGame().getBoard().getInfield()[activePlayer.getStartNodeIndex()].getOccupant())) {
this.choosePieceAutomaton.setCurrentState(this.choosePieceAutomaton.getStartPieceState()); this.choosePieceAutomaton.setCurrentState(this.choosePieceAutomaton.getStartPieceState());
} else { }
else {
checkSelectPiece(activePlayer); checkSelectPiece(activePlayer);
} }
} else { }
else {
checkSelectPiece(activePlayer); checkSelectPiece(activePlayer);
} }
} }
private void checkSelectPiece(Player activePlayer){ private void checkSelectPiece(Player activePlayer) {
ArrayList<Piece> moveablePieces = new ArrayList<>(); ArrayList<Piece> moveablePieces = new ArrayList<>();
for (Piece piece : activePlayer.getPieces()){ for (Piece piece : activePlayer.getPieces()) {
if (piece.getState().equals(PieceState.ACTIVE) || piece.getState().equals(PieceState.HOME)){ if (piece.getState().equals(PieceState.ACTIVE) || piece.getState().equals(PieceState.HOME)) {
moveablePieces.add(piece); moveablePieces.add(piece);
} }
} }
moveablePieces.removeIf(piece -> !canMove(piece)); moveablePieces.removeIf(piece -> !canMove(piece));
if (moveablePieces.isEmpty()) { if (moveablePieces.isEmpty()) {
this.choosePieceAutomaton.setCurrentState(this.choosePieceAutomaton.getNoTurnState()); this.choosePieceAutomaton.setCurrentState(this.choosePieceAutomaton.getNoTurnState());
} else { }
else {
this.choosePieceAutomaton.getSelectPieceState().setMoveablePieces(moveablePieces); this.choosePieceAutomaton.getSelectPieceState().setMoveablePieces(moveablePieces);
this.choosePieceAutomaton.setCurrentState(this.choosePieceAutomaton.getSelectPieceState()); this.choosePieceAutomaton.setCurrentState(this.choosePieceAutomaton.getSelectPieceState());
} }

View File

@@ -40,17 +40,17 @@ public void setMoveablePieces(ArrayList<Piece> moveablePieces) {
* This method will be used whenever this state will be entered. * This method will be used whenever this state will be entered.
*/ */
@Override @Override
public void enter(){ public void enter() {
int steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes(); int steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes();
for (Piece piece : moveablePieces) { for (Piece piece : moveablePieces) {
if(canPieceMoveInHome(piece,steps)){ if (canPieceMoveInHome(piece, steps)) {
int target= getHomeTargetIdx(piece,steps); int target = getHomeTargetIdx(piece, steps);
targetIndex.add(target); targetIndex.add(target);
isHomeMove.add(true); isHomeMove.add(true);
} }
else{ else {
int target = getInfieldTarget(piece,steps); int target = getInfieldTarget(piece, steps);
targetIndex.add(target); targetIndex.add(target);
isHomeMove.add(false); isHomeMove.add(false);
} }
@@ -59,60 +59,58 @@ public void enter(){
} }
@Override @Override
public void received(RequestMoveMessage msg, int from){ public void received(RequestMoveMessage msg, int from) {
if(!moveablePieces.contains(msg.getPiece())){ if (!moveablePieces.contains(msg.getPiece())) {
throw new RuntimeException("invalid Piece"); throw new RuntimeException("invalid Piece");
} }
int indexOfPiece = moveablePieces.indexOf(msg.getPiece()); int indexOfPiece = moveablePieces.indexOf(msg.getPiece());
int steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes(); int steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes();
Piece piece = moveablePieces.get(indexOfPiece); Piece piece = moveablePieces.get(indexOfPiece);
if(canPieceMoveInHome(piece,steps)){ if (canPieceMoveInHome(piece, steps)) {
if(piece.getState().equals(PieceState.HOME)) { if (piece.getState().equals(PieceState.HOME)) {
//gets the oldNode //gets the oldNode
int homeIndex = logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece); int homeIndex = logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece);
Node oldNode = logic.getGame().getActivePlayer().getHomeNodes()[homeIndex]; Node oldNode = logic.getGame().getActivePlayer().getHomeNodes()[homeIndex];
//gets the targetNode //gets the targetNode
int targetHomeIdx = getHomeTargetIdx(piece,steps); int targetHomeIdx = getHomeTargetIdx(piece, steps);
Node targetNode = logic.getGame().getActivePlayer().getHomeNodes()[targetHomeIdx]; Node targetNode = logic.getGame().getActivePlayer().getHomeNodes()[targetHomeIdx];
if (targetHomeIdx ==logic.getGame().getActivePlayer().getHighestHomeIdx()) { if (targetHomeIdx == logic.getGame().getActivePlayer().getHighestHomeIdx()) {
piece.setState(PieceState.HOMEFINISHED); piece.setState(PieceState.HOMEFINISHED);
} }
else{ else {
piece.setState(PieceState.HOME); piece.setState(PieceState.HOME);
} }
oldNode.clearOccupant(); oldNode.clearOccupant();
targetNode.setOccupant(piece); targetNode.setOccupant(piece);
} }
else{ else {
int oldNoteIdx = logic.getGame().getBoard().getInfieldIndexOfPiece(piece); int oldNoteIdx = logic.getGame().getBoard().getInfieldIndexOfPiece(piece);
Node oldNode = logic.getGame().getBoard().getInfield()[oldNoteIdx]; Node oldNode = logic.getGame().getBoard().getInfield()[oldNoteIdx];
//gets the targetNode //gets the targetNode
int targetHomeIdx = getHomeTargetIdx(piece,steps); int targetHomeIdx = getHomeTargetIdx(piece, steps);
Node targetNode = logic.getGame().getActivePlayer().getHomeNodes()[targetHomeIdx]; Node targetNode = logic.getGame().getActivePlayer().getHomeNodes()[targetHomeIdx];
if (targetHomeIdx ==logic.getGame().getActivePlayer().getHighestHomeIdx()) { if (targetHomeIdx == logic.getGame().getActivePlayer().getHighestHomeIdx()) {
piece.setState(PieceState.HOMEFINISHED); piece.setState(PieceState.HOMEFINISHED);
} }
else{ else {
piece.setState(PieceState.HOME); piece.setState(PieceState.HOME);
} }
oldNode.clearOccupant(); oldNode.clearOccupant();
targetNode.setOccupant(piece); targetNode.setOccupant(piece);
} }
LOGGER.log(System.Logger.Level.INFO,"Server : SelectPieceState: PieceState:"+piece.getState()); LOGGER.log(System.Logger.Level.INFO, "Server : SelectPieceState: PieceState:" + piece.getState());
} }
else{ else {
LOGGER.log(System.Logger.Level.INFO,"Server : SelectPieceState: PieceState:"+piece.getState()); LOGGER.log(System.Logger.Level.INFO, "Server : SelectPieceState: PieceState:" + piece.getState());
int oldNoteIdx = logic.getGame().getBoard().getInfieldIndexOfPiece(piece); int oldNoteIdx = logic.getGame().getBoard().getInfieldIndexOfPiece(piece);
Node oldNode = logic.getGame().getBoard().getInfield()[oldNoteIdx]; Node oldNode = logic.getGame().getBoard().getInfield()[oldNoteIdx];
int targetIndex = (oldNoteIdx+steps)%40; int targetIndex = (oldNoteIdx + steps) % 40;
Node targetNode = logic.getGame().getBoard().getInfield()[targetIndex]; Node targetNode = logic.getGame().getBoard().getInfield()[targetIndex];
Piece occ = targetNode.getOccupant(); Piece occ = targetNode.getOccupant();
@@ -120,13 +118,12 @@ public void received(RequestMoveMessage msg, int from){
logic.getGame().getPlayerByColor(occ.getColor()).addWaitingPiece(occ); logic.getGame().getPlayerByColor(occ.getColor()).addWaitingPiece(occ);
} }
if(targetNode.isStart()){ if (targetNode.isStart()) {
if(piece.getShield()== ShieldState.ACTIVE) piece.setShield(ShieldState.SUPPRESSED); if (piece.getShield() == ShieldState.ACTIVE) piece.setShield(ShieldState.SUPPRESSED);
} }
oldNode.clearOccupant(); oldNode.clearOccupant();
targetNode.setOccupant(piece); targetNode.setOccupant(piece);
} }
boolean homeMove = isHomeMove.get(indexOfPiece); boolean homeMove = isHomeMove.get(indexOfPiece);
@@ -134,16 +131,17 @@ public void received(RequestMoveMessage msg, int from){
Node targetNode = logic.getGame().getBoard().getInfield()[targIdx]; Node targetNode = logic.getGame().getBoard().getInfield()[targIdx];
LOGGER.log(System.Logger.Level.INFO,"Server : SelectPieceState: PieceState: end:"+piece.getState()); LOGGER.log(System.Logger.Level.INFO, "Server : SelectPieceState: PieceState: end:" + piece.getState());
logic.getServerSender().broadcast(new MoveMessage(piece, homeMove, targIdx)); logic.getServerSender().broadcast(new MoveMessage(piece, homeMove, targIdx));
if(targetNode.isBonus()) { if (targetNode.isBonus()) {
for (Player p : logic.getGame().getPlayersAsList()) { for (Player p : logic.getGame().getPlayersAsList()) {
if(p.getColor() == logic.getGame().getActiveColor()) { if (p.getColor() == logic.getGame().getActiveColor()) {
PowerCard cardToDraw = logic.getGame().draw(); PowerCard cardToDraw = logic.getGame().draw();
p.addHandCard(cardToDraw); p.addHandCard(cardToDraw);
logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(cardToDraw)); logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(cardToDraw));
} else { }
else {
logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(new HiddenCard())); logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(new HiddenCard()));
} }
} }

View File

@@ -41,7 +41,7 @@ public void enter() {
} }
@Override @Override
public void received(RequestMoveMessage msg, int from){ public void received(RequestMoveMessage msg, int from) {
LOGGER.log(System.Logger.Level.INFO, "Received RequestMoveMessage message. is piece equals: " + piece.equals(msg.getPiece())); LOGGER.log(System.Logger.Level.INFO, "Received RequestMoveMessage message. is piece equals: " + piece.equals(msg.getPiece()));
if (piece.equals(msg.getPiece())) { if (piece.equals(msg.getPiece())) {
int targetIndex = calculateTargetIndex(piece); int targetIndex = calculateTargetIndex(piece);
@@ -54,20 +54,21 @@ public void received(RequestMoveMessage msg, int from){
logic.getGame().getBoard().getInfield()[logic.getGame().getBoard().getInfieldIndexOfPiece(piece)].clearOccupant(); logic.getGame().getBoard().getInfield()[logic.getGame().getBoard().getInfieldIndexOfPiece(piece)].clearOccupant();
Piece occ = targetNode.getOccupant(); Piece occ = targetNode.getOccupant();
if (occ != null){ if (occ != null) {
//move occ to waiting //move occ to waiting
logic.getGame().getPlayerByColor(occ.getColor()).addWaitingPiece(occ); logic.getGame().getPlayerByColor(occ.getColor()).addWaitingPiece(occ);
} }
//move piece to targetNode //move piece to targetNode
targetNode.setOccupant(piece); targetNode.setOccupant(piece);
if(targetNode.isBonus()) { if (targetNode.isBonus()) {
for (Player p : logic.getGame().getPlayersAsList()) { for (Player p : logic.getGame().getPlayersAsList()) {
if(p.getColor() == logic.getGame().getActiveColor()) { if (p.getColor() == logic.getGame().getActiveColor()) {
PowerCard cardToDraw = logic.getGame().draw(); PowerCard cardToDraw = logic.getGame().draw();
p.addHandCard(cardToDraw); p.addHandCard(cardToDraw);
logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(cardToDraw)); logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(cardToDraw));
} else { }
else {
logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(new HiddenCard())); logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(new HiddenCard()));
} }
} }