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); } }
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); } }
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); } }
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()); }