示例#1
0
    public AStarNode(GridSquare square, GridSquare target)
    {
        if (square == null)
            return;
        parent = null;
        this.square = square;
        this.target = target;
        neighbors = new List<GridSquare>();

        hScore = square.manhattanDistanceTo(this.target);

        GridSquare[] potentialNeighbors = {square.Top, square.Bottom, square.Left, square.Right};

        foreach (GridSquare s in potentialNeighbors) {
            //Complicated logic so that squares inside an enclave are accessible
            if (s == null)
                continue;
            if ((s != null && !s.isBlocked () && (!(square.isInStartBlock () || square.isInEndBlock()) || (!square.isBlocked () || square.isEnclaveEntrance())))
                || (square.isInStartBlock () && s.isInStartBlock())
                || (square.isInEndBlock () && s.isInEndBlock())
                || (s.isEnclaveEntrance())
                ) {
                neighbors.Add (s);
            }
        }
    }