added more logic for the move
This commit is contained in:
		@@ -4,6 +4,7 @@
 | 
			
		||||
import pp.mdga.client.ClientState;
 | 
			
		||||
import pp.mdga.client.gamestate.turnstate.ChoosePieceState;
 | 
			
		||||
import pp.mdga.game.Piece;
 | 
			
		||||
import pp.mdga.game.PieceState;
 | 
			
		||||
import pp.mdga.message.client.RequestMoveMessage;
 | 
			
		||||
import pp.mdga.message.client.SelectedPiecesMessage;
 | 
			
		||||
import pp.mdga.message.server.MoveMessage;
 | 
			
		||||
@@ -49,10 +50,30 @@ public void selectPiece(Piece piece) {
 | 
			
		||||
    public void received(MoveMessage msg) {
 | 
			
		||||
        Piece piece = logic.getGame().getPieceThroughUUID(msg.getPiece().getUuid());
 | 
			
		||||
        //logic.getGame().getBoard().getInfield()[logic.getGame().getBoard().getInfieldIndexOfPiece(piece)].clearOccupant();
 | 
			
		||||
        System.out.println("Client: selectPieceState: receivedMoveMessage: msg.isHomeMoved():"+msg.isHomeMove());
 | 
			
		||||
        if (msg.isHomeMove()) {
 | 
			
		||||
            System.out.println("Client: selectPieceState: receivedMoveMessage: msg.getPiece.getState():"+piece.getState());
 | 
			
		||||
            if(piece.getState().equals(PieceState.ACTIVE)){
 | 
			
		||||
                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);
 | 
			
		||||
                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);
 | 
			
		||||
                logic.getGame().getActivePlayer().getHomeNodes()[pieceHomeIndex].clearOccupant();
 | 
			
		||||
                logic.getGame().getPlayerByColor(piece.getColor()).setPieceInHome(msg.getTargetIndex(), piece);
 | 
			
		||||
            }
 | 
			
		||||
            /*
 | 
			
		||||
            logic.addNotification(new HomeMoveNotification(piece.getUuid(), msg.getTargetIndex()));
 | 
			
		||||
            logic.getGame().getBoard().getInfield()[logic.getGame().getBoard().getInfieldIndexOfPiece(piece)].clearOccupant();
 | 
			
		||||
            logic.getGame().getPlayerByColor(piece.getColor()).setPieceInHome(msg.getTargetIndex(), piece);
 | 
			
		||||
 | 
			
		||||
             */
 | 
			
		||||
        } else {
 | 
			
		||||
            int oldIndex = logic.getGame().getBoard().getInfieldIndexOfPiece(piece);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -87,7 +87,7 @@ public Game() {
 | 
			
		||||
        gameStatistics = new Statistic();
 | 
			
		||||
        initializeDrawPile();
 | 
			
		||||
        board = new Board();
 | 
			
		||||
        die = new Die(2,5,6,3,6);
 | 
			
		||||
        die = new Die(5,5,5,5,5,5,5,5,1,2,1,2,2,6,3,6);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 
 | 
			
		||||
@@ -120,93 +120,97 @@ protected int calculateTargetIndex(Piece piece) {
 | 
			
		||||
     * @param piece the piece that will be checked
 | 
			
		||||
     * @return true, if the piece can move
 | 
			
		||||
     */
 | 
			
		||||
    protected boolean canMove(Piece piece){
 | 
			
		||||
        System.out.println("Server: ChoosePieceStateMachine: canMove: piece.getState()"+piece.getState());
 | 
			
		||||
    protected boolean canMove(Piece piece) {
 | 
			
		||||
        System.out.println("Server: ChoosePieceStateMachine: canMove: piece.getState()" + piece.getState());
 | 
			
		||||
        int steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes();
 | 
			
		||||
        System.out.println("Server: ChoosePieceStateAutomaton: canMove:"+canPieceMoveInHome(piece,steps));
 | 
			
		||||
        if(canPieceMoveInHome(piece,steps)){
 | 
			
		||||
        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);
 | 
			
		||||
        System.out.println("ChoosePieceAutomaton: pieceIndex:" + pieceIdx);
 | 
			
		||||
        int startIdx = logic.getGame().getActivePlayer().getStartNodeIndex();
 | 
			
		||||
        int normPieceIdx = (-startIdx+pieceIdx+40)%40;
 | 
			
		||||
        int targetIdx = normPieceIdx+steps;
 | 
			
		||||
        if(40> targetIdx){
 | 
			
		||||
        int normPieceIdx = (-startIdx + pieceIdx + 40) % 40;
 | 
			
		||||
        int targetIdx = normPieceIdx + steps;
 | 
			
		||||
        //checks if the piece will not go over its home-field
 | 
			
		||||
        if (40 > targetIdx) {
 | 
			
		||||
            Color activeColor = logic.getGame().getActiveColor();
 | 
			
		||||
            System.out.println("ChoosePieceAutomaton: targetindex:"+ (pieceIdx+steps)%40);
 | 
			
		||||
            Node tartgetNode =logic.getGame().getBoard().getInfield()[(pieceIdx+steps)%40];
 | 
			
		||||
            if(!tartgetNode.isOccupied(activeColor)){
 | 
			
		||||
                if(!tartgetNode.isOccupied()||tartgetNode.getOccupant().getShield() != ShieldState.ACTIVE){
 | 
			
		||||
            System.out.println("ChoosePieceAutomaton: targetindex:" + (pieceIdx + steps) % 40);
 | 
			
		||||
            Node tartgetNode = logic.getGame().getBoard().getInfield()[(pieceIdx + steps) % 40];
 | 
			
		||||
            //checks if the target-node is not occupied by an own color
 | 
			
		||||
            if (!tartgetNode.isOccupied(activeColor)) {
 | 
			
		||||
                //checks if the targetNode is not occupied or the occupant ha no shield
 | 
			
		||||
                if (!tartgetNode.isOccupied() || tartgetNode.getOccupant().getShield() != ShieldState.ACTIVE) {
 | 
			
		||||
                    return true;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
        //returns false it the piece can't move
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * tests if the piece can move in the home or inside the home
 | 
			
		||||
     *
 | 
			
		||||
     * @param piece
 | 
			
		||||
     * @param steps
 | 
			
		||||
     * @return false, if the piece can't move in the home
 | 
			
		||||
     */
 | 
			
		||||
    protected boolean canPieceMoveInHome(Piece piece, int steps){
 | 
			
		||||
    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());
 | 
			
		||||
        if(piece.getState()==PieceState.HOME){
 | 
			
		||||
        System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: pieceState:" + piece.getState());
 | 
			
		||||
        steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes();
 | 
			
		||||
        if (piece.getState() == PieceState.HOME) {
 | 
			
		||||
            System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: pieceState:reached if(piece.getState()==PieceState.HOME)");
 | 
			
		||||
            int homeIdx =logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece);
 | 
			
		||||
            if((4-homeIdx)>steps){
 | 
			
		||||
                System.out.println("Server: canPieceMoveInHome: !jumpOver"+ !jumpOver(steps,homeIdx,false));
 | 
			
		||||
                return !jumpOver(steps,homeIdx,false);
 | 
			
		||||
            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);
 | 
			
		||||
            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){
 | 
			
		||||
        if (piece.getState() == PieceState.ACTIVE) {
 | 
			
		||||
            int pieceIdx = logic.getGame().getBoard().getInfieldIndexOfPiece(piece);
 | 
			
		||||
            int startIdx = logic.getGame().getActivePlayer().getStartNodeIndex();
 | 
			
		||||
            int normPieceIdx = (-startIdx+pieceIdx+40)%40;
 | 
			
		||||
            int targetIdx = normPieceIdx+steps;
 | 
			
		||||
            System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: pieceIndex:" +pieceIdx);
 | 
			
		||||
            System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: targetIdx:" +targetIdx);
 | 
			
		||||
            if(targetIdx >= 40){
 | 
			
		||||
                int stepsToHome = 39- normPieceIdx;
 | 
			
		||||
                int restMovement = steps-stepsToHome;
 | 
			
		||||
                System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: stepsToHome:" +stepsToHome);
 | 
			
		||||
                System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: restMovement:" +restMovement);
 | 
			
		||||
                System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: jumpOver:" +jumpOver(restMovement,0,true));
 | 
			
		||||
                if(4> restMovement){
 | 
			
		||||
                    System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: return:" +true);
 | 
			
		||||
                    return !jumpOver(restMovement,0,true);
 | 
			
		||||
                }
 | 
			
		||||
            int normPieceIdx = (-startIdx + pieceIdx + 40) % 40;
 | 
			
		||||
            int targetIdx = normPieceIdx + steps;
 | 
			
		||||
            System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: pieceIndex:" + pieceIdx + "targetIdx:" + targetIdx);
 | 
			
		||||
            if (targetIdx >= 40) {
 | 
			
		||||
                int stepsToHome = 39 - normPieceIdx;
 | 
			
		||||
                int restMovement = steps - stepsToHome - 1;
 | 
			
		||||
                System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: stepsToHome:" + stepsToHome + "restMovement:" + restMovement + "jumpOver:" + jumpOver(restMovement, 0, true) + "canPieceMoveInHome: return:" + true);
 | 
			
		||||
                return !jumpOver(restMovement, 0, true);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: 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
 | 
			
		||||
     *
 | 
			
		||||
     * @param stepsInHome the steps walked inside the home
 | 
			
		||||
     * @param homeIdx the index of the piece inside, or 0 if come from outside
 | 
			
		||||
     * @param outside a boolean, if the piece moves inside a house or in a house
 | 
			
		||||
     * @param homeIdx     the index of the piece inside, or 0 if come from outside
 | 
			
		||||
     * @param outside     a boolean, if the piece moves inside a house or in a house
 | 
			
		||||
     * @return false, if there is no piece to jump over
 | 
			
		||||
     */
 | 
			
		||||
    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
 | 
			
		||||
        if(outside){
 | 
			
		||||
            for(int i =0;i < stepsInHome;i++){
 | 
			
		||||
                if(logic.getGame().getActivePlayer().getHomeNodes()[i].isOccupied()) return true;
 | 
			
		||||
        if (outside) {
 | 
			
		||||
            System.out.println("Server: ChoosePieceState: jumpOver: from outside");
 | 
			
		||||
            for (int i = 0; i < stepsInHome; i++) {
 | 
			
		||||
                if (logic.getGame().getActivePlayer().getHomeNodes()[i].isOccupied()) return true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        //tests if the piece jumps over a piece inside the home
 | 
			
		||||
        else{
 | 
			
		||||
            for(int i = 1+homeIdx; i<homeIdx+stepsInHome; i++){
 | 
			
		||||
                if(logic.getGame().getActivePlayer().getHomeNodes()[i].isOccupied()) return true;
 | 
			
		||||
        //tests if the piece jumps over a piece from inside the home
 | 
			
		||||
        else {
 | 
			
		||||
            for (int i = 1 + homeIdx; i < homeIdx + stepsInHome; i++) {
 | 
			
		||||
                if (logic.getGame().getActivePlayer().getHomeNodes()[i].isOccupied()) return true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
@@ -218,21 +222,22 @@ private boolean jumpOver(int stepsInHome,int homeIdx,boolean outside){
 | 
			
		||||
     * @param piece the give piece
 | 
			
		||||
     * @return the index in the home, where the piece will go
 | 
			
		||||
     */
 | 
			
		||||
    protected int getHomeTargetIdx (Piece piece){
 | 
			
		||||
        int steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes();
 | 
			
		||||
        if(piece.getState()==PieceState.ACTIVE) {
 | 
			
		||||
    protected int getHomeTargetIdx(Piece piece, int steps) {
 | 
			
		||||
        //tests if the piece is active and move in the house
 | 
			
		||||
        if (piece.getState() == PieceState.ACTIVE) {
 | 
			
		||||
            //gets the id's
 | 
			
		||||
            int pieceIdx = logic.getGame().getBoard().getInfieldIndexOfPiece(piece);
 | 
			
		||||
            int startIdx = logic.getGame().getActivePlayer().getStartNodeIndex();
 | 
			
		||||
            //normalize the idx
 | 
			
		||||
            int normPieceIdx = (-startIdx+pieceIdx+40)%40;
 | 
			
		||||
            int normPieceIdx = (-startIdx + pieceIdx + 40) % 40;
 | 
			
		||||
            //calculate the steps to the home
 | 
			
		||||
            int stepsToHome = 39- normPieceIdx;
 | 
			
		||||
            int stepsToHome = 39 - normPieceIdx;
 | 
			
		||||
            //calculates the rest-movement inside a home
 | 
			
		||||
            int restMovement = steps-stepsToHome;
 | 
			
		||||
            int restMovement = steps - stepsToHome - 1;
 | 
			
		||||
            return restMovement;
 | 
			
		||||
        }
 | 
			
		||||
        else{
 | 
			
		||||
        //the else handles the logic if the piece is in the home and moves inside the house
 | 
			
		||||
        else {
 | 
			
		||||
            int pieceHomeIdx = logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece);
 | 
			
		||||
            return pieceHomeIdx + steps;
 | 
			
		||||
        }
 | 
			
		||||
@@ -244,22 +249,27 @@ protected int getHomeTargetIdx (Piece piece){
 | 
			
		||||
     * @param piece the piece given
 | 
			
		||||
     * @return the index in the infield
 | 
			
		||||
     */
 | 
			
		||||
    protected int getInfieldTarget(Piece piece){
 | 
			
		||||
        int steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes();
 | 
			
		||||
    protected int getInfieldTarget(Piece piece, int steps) {
 | 
			
		||||
        int index = logic.getGame().getBoard().getInfieldIndexOfPiece(piece);
 | 
			
		||||
        return (steps+index)%40;
 | 
			
		||||
        return (steps + index) % 40;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    protected int calculateTargetIndex(Piece piece){
 | 
			
		||||
    /**
 | 
			
		||||
     * this method is used for calculating the targetIndex
 | 
			
		||||
     *
 | 
			
		||||
     * @param piece
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    protected int calculateTargetIndex(Piece piece) {
 | 
			
		||||
        int steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes();
 | 
			
		||||
        if(canPieceMoveInHome(piece, steps)){
 | 
			
		||||
            System.out.println("Server: ChoosePieceStateAutomaton: calculate index in home:"+getHomeTargetIdx(piece));
 | 
			
		||||
            return getHomeTargetIdx(piece);
 | 
			
		||||
        if (canPieceMoveInHome(piece, steps)) {
 | 
			
		||||
            System.out.println("Server: ChoosePieceStateAutomaton: calculate index in home:" + getHomeTargetIdx(piece, steps));
 | 
			
		||||
            return getHomeTargetIdx(piece, steps);
 | 
			
		||||
        }
 | 
			
		||||
        return getInfieldTarget(piece);
 | 
			
		||||
        System.out.println("Server: ChoosePieceStateAutomaton: calculate index in Infield:" + getInfieldTarget(piece, steps));
 | 
			
		||||
        return getInfieldTarget(piece, steps);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -59,7 +59,6 @@ private void checkSelectPiece(Player activePlayer){
 | 
			
		||||
        ArrayList<Piece> moveablePieces = new ArrayList<>();
 | 
			
		||||
        for (Piece piece : activePlayer.getPieces()){
 | 
			
		||||
            if (piece.getState().equals(PieceState.ACTIVE) || piece.getState().equals(PieceState.HOME)){
 | 
			
		||||
                System.out.println("Server: NoPieceState: movablePieces.size()"+piece.getState());
 | 
			
		||||
                moveablePieces.add(piece);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -64,13 +64,13 @@ public void enter(){
 | 
			
		||||
        for (Piece piece : moveablePieces) {
 | 
			
		||||
 | 
			
		||||
            if(canPieceMoveInHome(piece,steps)){
 | 
			
		||||
                int target= getHomeTargetIdx(piece);
 | 
			
		||||
                int target= getHomeTargetIdx(piece,steps);
 | 
			
		||||
                System.out.println("Server: SelectPieceState: enter in canPieceMoveInHome: targetIndex:"+target);
 | 
			
		||||
                targetIndex.add(target);
 | 
			
		||||
                isHomeMove.add(true);
 | 
			
		||||
            }
 | 
			
		||||
            else{
 | 
			
		||||
                int target = getInfieldTarget(piece);
 | 
			
		||||
                int target = getInfieldTarget(piece,steps);
 | 
			
		||||
                System.out.println("Server: SelectPieceState: enter in else: targetIndex:"+target);
 | 
			
		||||
                targetIndex.add(target);
 | 
			
		||||
                isHomeMove.add(false);
 | 
			
		||||
@@ -85,6 +85,7 @@ public void received(RequestMoveMessage msg, int from){
 | 
			
		||||
        if(!moveablePieces.contains(msg.getPiece())){
 | 
			
		||||
            throw new RuntimeException("invalid Piece");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        int indexOfPiece = moveablePieces.indexOf(msg.getPiece());
 | 
			
		||||
        int steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes();
 | 
			
		||||
        Piece piece = moveablePieces.get(indexOfPiece);
 | 
			
		||||
@@ -96,7 +97,7 @@ public void received(RequestMoveMessage msg, int from){
 | 
			
		||||
                int homeIndex = logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece);
 | 
			
		||||
                Node oldNode = logic.getGame().getActivePlayer().getHomeNodes()[homeIndex];
 | 
			
		||||
                //gets the targetNode
 | 
			
		||||
                int targetHomeIdx = getHomeTargetIdx(piece);
 | 
			
		||||
                int targetHomeIdx = getHomeTargetIdx(piece,steps);
 | 
			
		||||
                Node targetNode = logic.getGame().getActivePlayer().getHomeNodes()[targetHomeIdx];
 | 
			
		||||
 | 
			
		||||
                oldNode.clearOccupant();
 | 
			
		||||
@@ -114,7 +115,7 @@ public void received(RequestMoveMessage msg, int from){
 | 
			
		||||
                Node oldNode = logic.getGame().getBoard().getInfield()[oldNoteIdx];
 | 
			
		||||
 | 
			
		||||
                //gets the targetNode
 | 
			
		||||
                int targetHomeIdx = getHomeTargetIdx(piece);
 | 
			
		||||
                int targetHomeIdx = getHomeTargetIdx(piece,steps);
 | 
			
		||||
                Node targetNode = logic.getGame().getActivePlayer().getHomeNodes()[targetHomeIdx];
 | 
			
		||||
 | 
			
		||||
                oldNode.clearOccupant();
 | 
			
		||||
@@ -126,26 +127,28 @@ public void received(RequestMoveMessage msg, int from){
 | 
			
		||||
                piece.setState(PieceState.HOME);
 | 
			
		||||
                System.out.println("Server: SelectPieceMessage: received(RequestMoveMessage): setPiece(Home)"+piece.getState());
 | 
			
		||||
            }
 | 
			
		||||
            LOGGER.log(System.Logger.Level.INFO,"Server : SelectPieceState: PieceState:"+piece.getState());
 | 
			
		||||
        }
 | 
			
		||||
        else{
 | 
			
		||||
            LOGGER.log(System.Logger.Level.INFO,"Server : SelectPieceState: PieceState:"+piece.getState());
 | 
			
		||||
            int oldNoteIdx = logic.getGame().getBoard().getInfieldIndexOfPiece(piece);
 | 
			
		||||
            Node oldNode = logic.getGame().getBoard().getInfield()[oldNoteIdx];
 | 
			
		||||
 | 
			
		||||
            int targetIndex = (oldNoteIdx+steps)%40;
 | 
			
		||||
            Node targetNode = logic.getGame().getBoard().getInfield()[targetIndex];
 | 
			
		||||
 | 
			
		||||
            oldNode.clearOccupant();
 | 
			
		||||
            targetNode.setOccupant(piece);
 | 
			
		||||
 | 
			
		||||
            Piece occ = targetNode.getOccupant();
 | 
			
		||||
            if (occ != null) {
 | 
			
		||||
                logic.getGame().getPlayerByColor(occ.getColor()).addWaitingPiece(occ);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if(targetNode instanceof StartNode){
 | 
			
		||||
            if(targetNode.isStart()){
 | 
			
		||||
                if(piece.getShield()== ShieldState.ACTIVE) piece.setShield(ShieldState.SUPPRESSED);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            oldNode.clearOccupant();
 | 
			
		||||
            targetNode.setOccupant(piece);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        System.out.println("Server: SelectPieceMessage: received(RequestMoveMessage): pieceState: wichtig"+piece.getState());
 | 
			
		||||
@@ -186,6 +189,7 @@ public void received(RequestMoveMessage msg, int from){
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
         */
 | 
			
		||||
        LOGGER.log(System.Logger.Level.INFO,"Server : SelectPieceState: PieceState: end:"+piece.getState());
 | 
			
		||||
        logic.getServerSender().broadcast(new MoveMessage(piece, homeMove, targIdx));
 | 
			
		||||
        System.out.println("Server changes from SelectPieceState to movePieceState");
 | 
			
		||||
        this.choosePieceAutomaton.getTurnAutomaton().setCurrentState(this.choosePieceAutomaton.getTurnAutomaton().getMovePieceState());
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user