Esempio n. 1
0
    private bool handleHomeMovement(
        BoardPiece piece,
        PieceMovementData movementData,
        ref List <MovePath> result)
    {
        if (piece.boardPosition.type != PositionType.HOME)
        {
            return(false);
        }

        int  ownerIndex       = piece.ownerIndex;
        bool startingPegValid = true;

        BoardPosition startingPeg = _board.GetStartingPosition(ownerIndex);

        BoardPiece blockingPiece;

        if (_board.IsPositionOccupied(startingPeg, out blockingPiece))
        {
            startingPegValid = !blockingPiece.justLeftHome;
        }

        if (startingPegValid)
        {
            MovePath path = new MovePath();
            path.Add(startingPeg);
            result.Add(path);
        }

        return(result.Count > 0);
    }
Esempio n. 2
0
    public bool GetValidPaths(BoardPiece piece, CardData card, ref List <MovePath> result)
    {
        Assert.IsNotNull(piece);
        Assert.IsNotNull(card);
        Assert.IsNotNull(result);

        for (int i = 0; i < card.pieceMovementList.Length; ++i)
        {
            PieceMovementData moveData = card.pieceMovementList[i];

            //Lots of work to do here!
            GetValidPaths(piece, moveData, ref result);
        }
        return(result.Count > 0);
    }
Esempio n. 3
0
    public static CardData CreateFromJToken(JToken cardToken)
    {
        CardData result = new CardData();

        JsonUtility.FromJsonOverwrite(cardToken.ToString(), result);

        JArray movementArray = JArray.Parse(cardToken.SelectToken("moveType").ToString());

        PieceMovementData[] pieceMovementList = new PieceMovementData[movementArray.Count];

        for (int i = 0; i < movementArray.Count; ++i)
        {
            pieceMovementList[i] = JsonUtility.FromJson <PieceMovementData>(movementArray[i].ToString());
        }
        result.pieceMovementList = pieceMovementList;

        return(result);
    }
Esempio n. 4
0
    private bool handleNormalMovement(
        BoardPiece piece,
        PieceMovementData movementData,
        ref List <MovePath> result)
    {
        bool hasPath          = false;
        int  movementDistance = movementData.value;

        if (piece.boardPosition.type == PositionType.HOME)
        {
            hasPath = false;
        }
        else
        {
            hasPath = getPathList(movementDistance, piece, movementData.type == MoveType.FORWARDS, ref result);
        }

        return(hasPath);
    }
Esempio n. 5
0
    public bool GetValidPaths(BoardPiece piece, PieceMovementData moveData, ref List <MovePath> result)
    {
        Assert.IsNotNull(piece);
        Assert.IsNotNull(moveData);
        Assert.IsNotNull(result);

        bool hasPath = false;

        string moveType = moveData.type;

        switch (moveType)
        {
        case MoveType.FORWARDS:
        case MoveType.BACKWARDS:
            hasPath = handleNormalMovement(piece, moveData, ref result);
            break;

        case MoveType.LEAVE_BASE:
            hasPath = handleHomeMovement(piece, moveData, ref result);
            break;
        }

        return(hasPath);
    }