Пример #1
0
 public virtual void CalculateMovementRange(bool andHighlight = false)
 {
     m_currentMovementRange = RangeAlgorithms.SearchByParameters(_gridObject.m_CurrentGridTile, m_MovementRangeParameters);
     if (andHighlight)
     {
         HighlightMovementRange();
     }
 }
Пример #2
0
 public void CalculateAttackRange(RangeParameters attackParam, bool andHighlight = false)
 {
     m_CurrentAttackRange = RangeAlgorithms.SearchByParameters(m_GridObject.m_CurrentGridTile, attackParam);
     if (andHighlight)
     {
         HighlightAttackRange(true);
     }
 }
Пример #3
0
 public void CalculateAttackRange(bool andHighlight = false)
 {
     ClearAttackRange();
     m_currentAttackRange = RangeAlgorithms.SearchByParameters(_tacticsCharacter._gridObject.m_CurrentGridTile, m_AttackRangeParameters);
     if (andHighlight)
     {
         HighlightAttackRange();
     }
 }
    public void CalculateRange()
    {
        var newRange = new List <GridTile>();

        newRange = RangeAlgorithms.SearchByParameters(_gridObject.m_CurrentGridTile, m_RangeParameters);

        if (newRange != null && newRange.Count > 0)
        {
            ClearVisualPath();
            _currentRange = newRange;
            PopulateVisualRange();
        }
    }
Пример #5
0
        public void CalculateMovementRange(bool andHighlight = false)
        {
            if (m_CurrentMouvementPoints <= 0)
            {
                return;
            }
            RangeParameters rangeParam = new RangeParameters(m_MovementRangeParameters);

            rangeParam.m_MaxReach  = m_CurrentMouvementPoints;
            m_CurrentMovementRange = RangeAlgorithms.SearchByParameters(m_GridObject.m_CurrentGridTile, rangeParam, m_PathWalker.m_CanFly);
            if (andHighlight)
            {
                HighlightMovementRange(true);
            }
        }
Пример #6
0
    public static List <GridTile> SearchByParameters(GridTile start, RangeParameters rangeParameters)
    {
        switch (rangeParameters.m_RangeSearchType)
        {
        case RangeSearchType.RectangleByGridPosition:
        default:
            return(RangeAlgorithms.SearchByGridPosition(start, rangeParameters.m_MaxReach, rangeParameters.m_WalkableTilesOnly, rangeParameters.m_UnOccupiedTilesOnly, rangeParameters.m_SquareRange, rangeParameters.m_IgnoreTilesHeight, rangeParameters.m_IncludeStartingTile, rangeParameters.m_MinimunReach));

        case RangeSearchType.RectangleByMovement:
            return(RangeAlgorithms.SearchByMovement(start, rangeParameters.m_MaxReach, rangeParameters.m_IgnoreTilesHeight, rangeParameters.m_IncludeStartingTile, rangeParameters.m_MinimunReach));

        case RangeSearchType.HexagonByGridPosition:
            return(RangeAlgorithms.HexagonSearchByGridPosition(start, rangeParameters.m_MaxReach, rangeParameters.m_WalkableTilesOnly, rangeParameters.m_UnOccupiedTilesOnly, rangeParameters.m_IgnoreTilesHeight, rangeParameters.m_IncludeStartingTile, rangeParameters.m_MinimunReach));

        case RangeSearchType.HexagonByMovement:
            return(RangeAlgorithms.HexagonSearchByMovement(start, rangeParameters.m_MaxReach, rangeParameters.m_IgnoreTilesHeight, rangeParameters.m_IncludeStartingTile, rangeParameters.m_MinimunReach));
        }
    }
Пример #7
0
    public void CalculateAttackRangeWithVictimsOnly(bool andHighlight, bool unhighlightPrevious = false)
    {
        ClearAttackRange();
        var range = RangeAlgorithms.SearchByParameters(_tacticsCharacter._gridObject.m_CurrentGridTile, m_AttackRangeParameters);

        foreach (GridTile tile in range)
        {
            var victimAtPosition = GetAttackableUnitAtTile(tile);
            if (victimAtPosition != null)
            {
                if (!m_currentAttackRange.Contains(tile))
                {
                    m_currentAttackRange.Add(tile);
                }
            }
        }

        if (andHighlight)
        {
            HighlightAttackRange(unhighlightPrevious);
        }
    }
    public virtual void GetTargetInRange()
    {
        // Reset the current target
        if (m_CurrentTarget != null)
        {
            ResetTarget();
        }

        var tilesInRange = RangeAlgorithms.SearchByParameters(_gridObject.m_CurrentGridTile, m_SightRangeParamters);

        // Chase the chosen target when it is in range
        if (m_TargetToChase != null)
        {
            foreach (GridTile tile in tilesInRange)
            {
                var gridObjectAtTile = GridManager.Instance.GetGridObjectAtPosition(tile.m_GridPosition);
                if (gridObjectAtTile != null && gridObjectAtTile == m_TargetToChase && gridObjectAtTile != _gridObject)
                {
                    SetTarget(gridObjectAtTile);
                    break;
                }
            }
        }
    }
    public override List <GridTile> GetTargetTiles()
    {
        var targetTiles = RangeAlgorithms.SearchByParameters(_gridObject.m_CurrentGridTile, m_RangeParameters);

        return(targetTiles);
    }