Ejemplo n.º 1
0
    public List <Vector2i> DecideNextMove(int targetX, int targetY, bool staticOnly)
    {
        // if targetX,targetY is blocked, refuse to pathfind.
        if (!Interaction.CheckWalkableForUnit(targetX, targetY, staticOnly))
        {
            return(null);
        }

        // init astar searcher
        if (AstarSearcherH == null)
        {
            AstarSearcherH = new UnitAstarHelper(this);
        }
        if (AstarSearcher == null)
        {
            AstarSearcher = new ShortestPathGraphSearch <Vector2i, Vector2i>(AstarSearcherH);
        }
        AstarSearcherH.StaticLookup = staticOnly;

        try
        {
            List <Vector2i> nodes = AstarSearcher.GetShortestPath(new Vector2i(X, Y), new Vector2i(targetX, targetY));
            if (nodes == null)
            {
                return(null);
            }
            nodes.Add(new Vector2i(targetX, targetY));
            return(nodes);
        }
        catch (Exception)
        {
            return(null);
        }
    }
Ejemplo n.º 2
0
    public void TestNoObstacles()
    {
        ShortestPathGraphSearch <Vector2i, Vector2i> search = new ShortestPathGraphSearch <Vector2i, Vector2i>(this);
        List <Vector2i> list = search.GetShortestPath(new Vector2i(1, 0), new Vector2i(3, 0));

        Assert.Equals(2, list.Count);
        Debug.Log("Test No Obstacles");
        foreach (Vector2i pos in list)
        {
            Debug.Log("Position " + pos);
        }
    }
Ejemplo n.º 3
0
    public void TestObstaclesNoDiagonal()
    {
        moveDiagonal = false;
        ShortestPathGraphSearch <Vector2i, Vector2i> search = new ShortestPathGraphSearch <Vector2i, Vector2i>(this);
        List <Vector2i> list = search.GetShortestPath(new Vector2i(-1, 0), new Vector2i(1, 0));

        Assert.Equals(4, list.Count);
        Debug.Log("Test Obstacles");
        foreach (Vector2i pos in list)
        {
            Debug.Log("Position " + pos);
        }
    }
Ejemplo n.º 4
0
    public void StartGame()
    {
        if (!_isInitialized)
        {
            _hexGrid = FindObjectOfType <HexGrid>();
            if (_hexGrid == null)
            {
                throw new Exception("No HexGrid found on the Scene.");
            }
            _pathGraphSearch = new ShortestPathGraphSearch <HexCoord, HexCoord>(new HexPathFinding(_hexGrid));

            TurnManager.Instance.Init();

            Messenger.AddListener <HexTile>(HexTile.ON_HEX_CLICKED_EVENT_NAME, OnHexClicked);
            Messenger.AddListener <Ability>(Ability.ON_ABILITY_ACTIVATED, OnAbilityActivated);
            Messenger.AddListener <Ability>(Ability.ON_ABILITY_DEACTIVATED, OnAbilityDeactivated);
            Messenger.AddListener <Component, bool>(Ability.ON_CAST_COMPLETED, OnActionCompletedCallback);
            Messenger.AddListener <Component, bool>(HexUnit.ON_MOVE_COMPLETED, OnActionCompletedCallback);
            Messenger.AddListener <GameObject>(Player.ON_UNIT_REMOVED, OnUnitRemoved);
            _isInitialized = true;
        }

        StartCoroutine(ArmyBuild());
    }