private void OnLaunchedSpell(SpellParameters spell)
 {
     m_Character.SpendActionPoints(spell.m_ActionPoints);
     m_InMovementState = true;
     m_Character.ClearAttackRange();
     m_Character.CalculateMovementRange(true);
 }
        private void SetCurrentPlayerSpell(SpellsEnum spellEnum)
        {
            SpellParameters spell = GetSpellWithEnum(spellEnum);

            if (!m_Character.HasEnoughActionPoints(spell))
            {
                return;
            }
            m_CurrentSpell = spell;
            m_Character.CalculateAttackRange(spell.m_Range, true);
            m_InMovementState = false;
        }
 private void SpawnObjectOnTile(SpellParameters spell, GameObject obj, GridTile gridTile)
 {
     if (!gridTile.m_IsTileFlyable)
     {
         GridObject targetPosGridObject = GridManager.Instance.GetGridObjectAtPosition(gridTile.m_GridPosition);
         if (!targetPosGridObject)
         {
             GridObject gridObject = obj.GetComponent <GridObject>();
             GridManager.Instance.InstantiateGridObject(gridObject, gridTile.m_GridPosition);
         }
         else
         {
             GridObject instantiatedGridObject = Instantiate(obj, targetPosGridObject.transform.position, Quaternion.identity).GetComponent <GridObject>();
         }
         OnLaunchedSpell(spell);
     }
 }
        private void LaunchSpell(SpellParameters spell, GridTile gridTile)
        {
            if (!m_Character.CanAttackTile(GridManager.Instance.m_HoveredGridTile))
            {
                return;
            }

            if (spell.m_ObjectToSpawn)
            {
                SpawnObjectOnTile(spell, spell.m_ObjectToSpawn, gridTile);
            }
            else
            {
                GridObject gridObject = GridManager.Instance.GetGridObjectAtPosition(gridTile.m_GridPosition);
                if (gridObject && gridObject.TryGetComponent(out Entity entity))
                {
                    entity.TakeDamage(spell.m_Damages);
                }
                OnLaunchedSpell(spell);
            }
        }
Пример #5
0
 public bool HasEnoughActionPoints(SpellParameters spell)
 {
     return(m_CurrentActionPoints >= spell.m_ActionPoints);
 }