Exemplo n.º 1
0
 //public List<TilePathfindingData> SelectedUnitPathfindingData { get; private set; }
 public async Task ChangeSelectedUnitAsync(Unit unitToSelect, GridTile[,] tileGrid)
 {
     //Clicked on an idle player unit
     if (unitToSelect.State != UnitState.Idle || SelectedUnit == unitToSelect)
     {
         return;
     }
     DeselectUnit();
     SelectedUnit = unitToSelect;
     if (SelectedUnit.PathfindingData == null)
     {
         var unitPosition = SelectedUnit.transform.position;
         SelectedUnit.PathfindingData = await PathfindingHelper.CalculateUnitAvailablePathsAsync(unitPosition, tileGrid);
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// Moves the selectedUnit to the selectedTile, if the selected tile is a valid move for that unit
        /// </summary>
        public void MoveUnitToTile(GridTile selectedGridTile, Unit selectedUnit)
        {
            if (selectedGridTile.TerrainType == TerrainType.Impassable || ReferenceEquals(selectedUnit, null))
            {
                return;
            }
            //checks that the selected tile is a valid move for the unit
            var selectedTilePathfindingData = selectedUnit.PathfindingData.FirstOrDefault(x => x.DestinationGridTile == selectedGridTile);

            if (selectedTilePathfindingData == null || selectedTilePathfindingData.MoveCost > selectedUnit.Movement)
            {
                return;
            }
            var pathfindingDataList = PathfindingHelper.GetPathToTile(selectedUnit.PathfindingData, selectedGridTile);

            //we move the unit reference from the starting tile to the selected tile
            selectedUnit.PathfindingData[0].DestinationGridTile.CurrentUnit = null;
            selectedGridTile.CurrentUnit = selectedUnit;
            selectedUnit.BeginFollowingTilePath(pathfindingDataList);
            _unitSelector.DeselectUnit();
            selectedUnit.State           = UnitState.OutOfActions;
            selectedUnit.PathfindingData = null;
        }
Exemplo n.º 3
0
 private void CalculatePath(List <ITile> field)
 {
     Path = PathfindingHelper.FindPath(CurrentLocation, NewDestination, field);
 }