Merge branch 'development2' of https://athene2.informatik.unibw-muenchen.de/progproj/gruppen-ht24/Gruppe-01 into development2
This commit is contained in:
		@@ -24,96 +24,6 @@ public ChoosePieceAutomatonState(ChoosePieceState choosePieceAutomaton, ServerGa
 | 
			
		||||
        this.choosePieceAutomaton = choosePieceAutomaton;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
    protected boolean canMove(Piece piece) {
 | 
			
		||||
        int steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes();
 | 
			
		||||
        if (piece.getState().equals(PieceState.HOME)) {
 | 
			
		||||
            return canHomeMove(piece, steps);
 | 
			
		||||
        } else {
 | 
			
		||||
            int homeMoves = getHomeMoves(piece, steps);
 | 
			
		||||
            if (homeMoves > 0) {
 | 
			
		||||
                return canHomeMove(piece, homeMoves);
 | 
			
		||||
            } else {
 | 
			
		||||
                return canInfieldMove(piece, steps);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
     */
 | 
			
		||||
    /*
 | 
			
		||||
    protected int getHomeMoves(Piece piece, int steps) {
 | 
			
		||||
        int pieceIndex = logic.getGame().getBoard().getInfieldIndexOfPiece(piece);
 | 
			
		||||
        Color color = piece.getColor();
 | 
			
		||||
        int startIndex = logic.getGame().getPlayerByColor(color).getStartNodeIndex();
 | 
			
		||||
        int moveIndex = pieceIndex + steps;
 | 
			
		||||
        if (moveIndex > logic.getGame().getBoard().getInfield().length) {
 | 
			
		||||
            if (startIndex > pieceIndex) {
 | 
			
		||||
                return steps - (startIndex - pieceIndex - 1);
 | 
			
		||||
            }
 | 
			
		||||
            moveIndex %= logic.getGame().getBoard().getInfield().length;
 | 
			
		||||
            if (moveIndex >= startIndex) {
 | 
			
		||||
                return moveIndex - startIndex + 1;
 | 
			
		||||
            }
 | 
			
		||||
            return 0;
 | 
			
		||||
        }
 | 
			
		||||
        if (pieceIndex < startIndex && startIndex <= moveIndex) {
 | 
			
		||||
            return moveIndex - startIndex + 1;
 | 
			
		||||
        }
 | 
			
		||||
        return 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
     */
 | 
			
		||||
    /*
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    private boolean canInfieldMove(Piece piece, int steps) {
 | 
			
		||||
        int pieceIndex = logic.getGame().getBoard().getInfieldIndexOfPiece(piece);
 | 
			
		||||
        int moveIndex = (pieceIndex + steps) % logic.getGame().getBoard().getInfield().length;
 | 
			
		||||
        Piece occupant = logic.getGame().getBoard().getInfield()[moveIndex].getOccupant();
 | 
			
		||||
        if (occupant != null){
 | 
			
		||||
            if (occupant.isShielded()){
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            return occupant.getColor() != piece.getColor();
 | 
			
		||||
        }
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
     */
 | 
			
		||||
    /*
 | 
			
		||||
    private boolean canHomeMove(Piece piece, int moveIndex) {
 | 
			
		||||
        Color color = piece.getColor();
 | 
			
		||||
        Player player = logic.getGame().getPlayerByColor(color);
 | 
			
		||||
        Node[] homeNodes = player.getHomeNodes();
 | 
			
		||||
        int index;
 | 
			
		||||
        if (player.pieceInsideOfHome(piece)) {
 | 
			
		||||
            index = player.getHomeIndexOfPiece(piece);
 | 
			
		||||
        } else {
 | 
			
		||||
            index = 0;
 | 
			
		||||
        }
 | 
			
		||||
        if (index + moveIndex >= homeNodes.length) {
 | 
			
		||||
            return false;
 | 
			
		||||
        } else {
 | 
			
		||||
            for (int i = index; i <= index + moveIndex; i++) {
 | 
			
		||||
                if (homeNodes[i].isOccupied()) {
 | 
			
		||||
                    return false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
     */
 | 
			
		||||
    /*
 | 
			
		||||
    protected int calculateTargetIndex(Piece piece) {
 | 
			
		||||
        int steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes();
 | 
			
		||||
 | 
			
		||||
        return (logic.getGame().getBoard().getInfieldIndexOfPiece(piece) + steps) % logic.getGame().getBoard().getInfield().length;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * returns true, if the piece can move inside the home or infield or move from the infield to the home
 | 
			
		||||
     *
 | 
			
		||||
@@ -131,24 +41,33 @@ protected boolean canMove(Piece piece) {
 | 
			
		||||
        System.out.println("Server: ChoosePieceStateMachine: canMove: piece.getState()" + piece.getState());
 | 
			
		||||
        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;
 | 
			
		||||
        }
 | 
			
		||||
        //checks if the piece will not go over its home-field
 | 
			
		||||
        else if(40 > targetIdx && (!piece.getState().equals(PieceState.HOME)||!piece.getState().equals(PieceState.HOMEFINISHED))) {
 | 
			
		||||
            Color activeColor = logic.getGame().getActiveColor();
 | 
			
		||||
            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;
 | 
			
		||||
                }
 | 
			
		||||
        if (piece.getState().equals(PieceState.HOME)) {
 | 
			
		||||
            if (canPieceMoveInHome(piece, steps)) {
 | 
			
		||||
                System.out.println("Server: ChoosePieceStateMachine:canMove: entered canMove/canPieceMoveInHome");
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        //returns false it the piece can't move
 | 
			
		||||
        else {
 | 
			
		||||
            if (canPieceMoveInHome(piece, steps)) {
 | 
			
		||||
                System.out.println("Server: ChoosePieceStateMachine:canMove: entered canMove/canPieceMoveInHome");
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
            //checks if the piece will not go over its home-field
 | 
			
		||||
            else if (40 > targetIdx && (!piece.getState().equals(PieceState.HOME) || !piece.getState().equals(PieceState.HOMEFINISHED))) {
 | 
			
		||||
                Color activeColor = logic.getGame().getActiveColor();
 | 
			
		||||
                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;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            //returns false it the piece can't move
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -168,9 +87,12 @@ protected boolean canPieceMoveInHome(Piece piece, int steps) {
 | 
			
		||||
            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);
 | 
			
		||||
            if ((3 - homeIdx) >= steps - 1) {
 | 
			
		||||
                System.out.println("Server: canPieceMoveInHome: !jumpOver" + !jumpOver(steps-1, homeIdx, false));
 | 
			
		||||
                return !jumpOver(steps-1, homeIdx, false);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        //tests if the piece can move in the home
 | 
			
		||||
@@ -183,20 +105,18 @@ else if (piece.getState() == PieceState.ACTIVE) {
 | 
			
		||||
            if (targetIdx >= 40) {
 | 
			
		||||
                int stepsToHome = 39 - normPieceIdx;
 | 
			
		||||
                int restMovement = steps - stepsToHome - 1;
 | 
			
		||||
                if(restMovement>=3) return false;
 | 
			
		||||
                if (restMovement >= 3) return false;
 | 
			
		||||
                System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: stepsToHome:" + stepsToHome + "restMovement:" + restMovement + "jumpOver:" + jumpOver(restMovement, 0, true) + "canPieceMoveInHome: return:" + true);
 | 
			
		||||
                return !jumpOver(restMovement, 0, true);
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: return:" + false);
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * tests if the piece, when moved in or inside a home, must jump over another piece
 | 
			
		||||
     *
 | 
			
		||||
@@ -263,7 +183,6 @@ protected int getInfieldTarget(Piece piece, int steps) {
 | 
			
		||||
        return (steps + index) % 40;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * this method is used for calculating the targetIndex
 | 
			
		||||
     *
 | 
			
		||||
@@ -279,6 +198,4 @@ protected int calculateTargetIndex(Piece piece) {
 | 
			
		||||
        System.out.println("Server: ChoosePieceStateAutomaton: calculate index in Infield:" + getInfieldTarget(piece, steps));
 | 
			
		||||
        return getInfieldTarget(piece, steps);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -39,25 +39,6 @@ public void setMoveablePieces(ArrayList<Piece> moveablePieces) {
 | 
			
		||||
    /**
 | 
			
		||||
     * This method will be used whenever this state will be entered.
 | 
			
		||||
     */
 | 
			
		||||
    /*
 | 
			
		||||
    @Override
 | 
			
		||||
    public void enter() {
 | 
			
		||||
        LOGGER.log(System.Logger.Level.DEBUG, "Entered SelectPieceState state.");
 | 
			
		||||
        int steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes();
 | 
			
		||||
        for (Piece piece : moveablePieces) {
 | 
			
		||||
            int homeMoves =  getHomeMoves(piece, steps);
 | 
			
		||||
            if (homeMoves > 0) {
 | 
			
		||||
                isHomeMove.add(true);
 | 
			
		||||
                targetIndex.add(homeMoves);
 | 
			
		||||
            } else {
 | 
			
		||||
                isHomeMove.add(false);
 | 
			
		||||
                targetIndex.add(calculateTargetIndex(piece));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        logic.getServerSender().send(logic.getGame().getActivePlayerId(), new SelectPieceMessage(moveablePieces, isHomeMove, targetIndex));
 | 
			
		||||
    }
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void enter(){
 | 
			
		||||
        LOGGER.log(System.Logger.Level.DEBUG, "Entered SelectPieceState state in the Server.");
 | 
			
		||||
@@ -178,42 +159,6 @@ public void received(RequestMoveMessage msg, int from){
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /*
 | 
			
		||||
        Node oldNode = logic.getGame().getBoard().getInfield()[logic.getGame().getBoard().getInfieldIndexOfPiece(movePiece)];
 | 
			
		||||
        oldNode.clearOccupant();
 | 
			
		||||
        if (homeMove) {
 | 
			
		||||
            //setPieceInHome
 | 
			
		||||
            logic.getGame().getPlayerByColor(msg.getPiece().getColor()).setPieceInHome(targIdx, movePiece);
 | 
			
		||||
 | 
			
		||||
            if (logic.getGame().getPlayerByColor(msg.getPiece().getColor()).isHomeFinished(logic.getGame().getPieceThroughUUID(msg.getPiece().getUuid()))) {
 | 
			
		||||
                movePiece.setState(PieceState.HOMEFINISHED);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                movePiece.setState(PieceState.HOME);
 | 
			
		||||
            }
 | 
			
		||||
            movePiece.setShield(ShieldState.NONE);
 | 
			
		||||
        } else {
 | 
			
		||||
            Node targetNode = logic.getGame().getBoard().getInfield()[targIdx];
 | 
			
		||||
            //TODO durch merge auskommentiert
 | 
			
		||||
            if(targetNode.isBonus()) {
 | 
			
		||||
                for (Player p : logic.getGame().getPlayersAsList()) {
 | 
			
		||||
                    if(p.getColor() == logic.getGame().getActiveColor()) {
 | 
			
		||||
                        logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(logic.getGame().draw()));
 | 
			
		||||
                    } else {
 | 
			
		||||
                        logic.getServerSender().send(logic.getGame().getPlayerIdByColor(p.getColor()), new DrawCardMessage(new HiddenCard()));
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Piece occ = targetNode.getOccupant();
 | 
			
		||||
            if (occ != null) {
 | 
			
		||||
                logic.getGame().getPlayerByColor(occ.getColor()).addWaitingPiece(occ);
 | 
			
		||||
            }
 | 
			
		||||
            targetNode.setOccupant(msg.getPiece());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
         */
 | 
			
		||||
        System.out.println("Server changes from SelectPieceState to movePieceState");
 | 
			
		||||
        this.choosePieceAutomaton.getTurnAutomaton().setCurrentState(this.choosePieceAutomaton.getTurnAutomaton().getMovePieceState());
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user