/// <summary>
    /// Moves a unit across x tiles.
    /// </summary>
    private IEnumerator MoveToTiles()
    {
        Vector3 oldTile = _pathfinder.GetGeneratedPathAt(0);
        Vector3 newTile = Vector3.zero;
        int     index   = 0;

        while (_pathfinder.GetGeneratedPath() != null && index < _pathfinder.GetGeneratedPath().Count - 1)
        {
            newTile = _pathfinder.GetGeneratedPathAt(index + 1);
            Vector3 startingPosition = TileMapUtil.TileMapToWorldCentered(_pathfinder.GetGeneratedPathAt(index), tileMap.TileSize);
            Vector3 endingPosition   = TileMapUtil.TileMapToWorldCentered(newTile, tileMap.TileSize);

            yield return(StartCoroutine(MoveToTile(controller.HighlightedUnit, startingPosition, endingPosition)));

            index++;
            yield return(null);
        }
        _pathfinder.Clear();

        // After move is finished, swap out tile unit is standing on
        if (!TileMapUtil.IsInvalidTile(oldTile))
        {
            TileMapData tileMapData = tileMap.GetTileMapData();
            TileData    oldTileData = tileMapData.GetTileDataAt(oldTile);
            oldTileData.SwapUnits(tileMapData.GetTileDataAt(newTile));
            controller.HighlightedUnit.Tile = newTile;
        }
        yield break;
    }
Beispiel #2
0
 public void StopMoving()
 {
     lock (mMovementSyncRoot)
     {
         mPathfinder.Clear();
     }
 }
Beispiel #3
0
    void DoSelection() //left click
    {
        UpdateCurrentTile();
        if (currentTile == null) //didnt click on a tile, return
        {
            return;
        }
        else if (isPathfinding) //if pathfinding is on, turn off pathfinding and hide pathfinding preview. (and reshow unit path)
        {
            isPathfinding = false;
            Pathfinder.Clear();
            if (SelectedUnit.PathTrail != null)
            {
                SelectedUnit.PathTrail.ShowPath();
            }
        }
        else if (!isPathfinding && !SelectedUnit.Moving && SelectedUnit.PathTrail != null && !SelectedUnit.PathTrail.ContainsTile(currentTile)) //else unselecting unit.
        {
            SelectedUnit.PathTrail.HidePath();
            SelectedUnit.PathTrail = null;

            Pathfinder.Clear();
        }
    }
    public void TestClear()
    {
        _validStraightPathfinder.Clear();

        Assert.AreEqual(0, _validStraightPathfinder.GetGeneratedPath().Count);
    }