Exemplo n.º 1
0
    // Use this for initialization
    void Start()
    {
        b     = FindObjectOfType <TerrainEditor>();
        board = FindObjectOfType <BoardRunner>();

        radius.onEndEdit.AddListener(delegate { setRadius(); });
        strength.onEndEdit.AddListener(delegate { setStrength(); });
        increment.onValueChanged.AddListener(delegate { setIncrement(); });
        enabler.onValueChanged.AddListener(delegate { enable(); });
    }
Exemplo n.º 2
0
    // Use this for initialization
    void Start()
    {
        board = FindObjectOfType <BoardRunner>();
        tile  = board.getBoardTile(Mathf.RoundToInt(transform.position.x), Mathf.RoundToInt(transform.position.y));
        if (tile != null)
        {
            tile.structure = this;
        }


        sprite = GetComponent <SpriteRenderer>();
        updateSprite();
        updateAdjacentSprites();
    }
Exemplo n.º 3
0
        static public List <Vector2> getPath(Vector2 startpoint, Vector2 endpoint, BoardRunner board)
        {
            C5.IntervalHeap <Position> heap = new C5.IntervalHeap <Position>();
            //A* search, start with startpoint, make priorityqueue of positions, and keep adding
            Dictionary <int, Position> visitedPoints = new Dictionary <int, Position>(board.sizeX * board.sizeY);

            Position start = new Position(null, startpoint, 0, Vector2.Distance(startpoint, endpoint));

            heap.Add(start);
            visitedPoints[getPosition(startpoint, board)] = start;

            while (!heap.IsEmpty)
            {
                Position cur = heap.DeleteMax();
                if (cur.curPosition == endpoint)
                {
                    List <Vector2> solution = getSolution(cur);
                    return(solution);
                }

                if (cur.stepsTaken > MAX_STEPS)
                {
                    return(null);
                }

                //up, down, left, right, diagonals
                explorePosition(endpoint, cur, visitedPoints, heap, board, 1, 0);
                explorePosition(endpoint, cur, visitedPoints, heap, board, -1, 0);
                explorePosition(endpoint, cur, visitedPoints, heap, board, 0, 1);
                explorePosition(endpoint, cur, visitedPoints, heap, board, 0, -1);
                explorePosition(endpoint, cur, visitedPoints, heap, board, 1, 1);
                explorePosition(endpoint, cur, visitedPoints, heap, board, 1, -1);
                explorePosition(endpoint, cur, visitedPoints, heap, board, -1, 1);
                explorePosition(endpoint, cur, visitedPoints, heap, board, -1, -1);
            }

            return(null);
        }
Exemplo n.º 4
0
 // Use this for initialization
 void Start()
 {
     board = FindObjectOfType <BoardRunner>();
 }
 // Use this for initialization
 void Start()
 {
     board   = FindObjectOfType <BoardRunner>();
     terEdit = FindObjectOfType <TerrainEditor>();
 }
Exemplo n.º 6
0
 // Use this for initialization
 void Start()
 {
     cooldown = weaponCooldown;
     board    = FindObjectOfType <BoardRunner>();
 }
Exemplo n.º 7
0
        static void explorePosition(Vector2 endpoint, Position cur, Dictionary <int, Position> visitedPoints, C5.IntervalHeap <Position> heap, BoardRunner board, int offx, int offy)
        {
            Vector2   right = new Vector2(cur.curPosition.x + offx, cur.curPosition.y + offy);
            BoardTile g     = board.getBoardTile(Mathf.RoundToInt(right.x), Mathf.RoundToInt(right.y));

            if (g != null && g.isTraversable(cur.curPosition))
            {
                BoardTile b = g.GetComponent <BoardTile>();

                if (!visitedPoints.ContainsKey(getPosition(new Vector2(cur.curPosition.x + offx, cur.curPosition.y + offy), board)))
                {
                    Position p = new Position(cur, right, cur.stepsTaken + Mathf.Sqrt(offx * offx + offy * offy), Vector2.Distance(right, endpoint));
                    visitedPoints[getPosition(right, board)] = p;
                    heap.Add(p);
                }
                else if (visitedPoints[getPosition(new Vector2(cur.curPosition.x + offx, cur.curPosition.y + offy), board)].stepsFromGoal
                         > cur.stepsFromGoal + Mathf.Sqrt(offx * offx + offy * offy))    //if this position can reach the tile in fewer steps, update the step count, and the prevPosition for that tile.
                {
                    visitedPoints[getPosition(new Vector2(cur.curPosition.x + offx, cur.curPosition.y + offy), board)].stepsFromGoal = cur.stepsFromGoal + Mathf.Sqrt(offx * offx + offy * offy);
                    visitedPoints[getPosition(new Vector2(cur.curPosition.x + offx, cur.curPosition.y + offy), board)].prevPosition  = cur;
                }
            }
        }
Exemplo n.º 8
0
 static int getPosition(Vector2 pos, BoardRunner b)
 {
     return(Mathf.RoundToInt(pos.x) + Mathf.RoundToInt(pos.y) * b.sizeY);
 }
Exemplo n.º 9
0
 public void setBoard(BoardRunner b)
 {
     board = b;
 }