Ejemplo n.º 1
0
        private void TryAbility(GroupAbilityFactory groupAbilityFactory)
        {
            if (!_abilitiesLock.CanDoAction())
            {
                return;
            }

            if (GroupsInRangeDetector.MostRepresentedGroupInRange == GroupManager.Group.None ||
                GroupsInRangeDetector.MostRepresentedGroupInRange == GroupManager.Group.All)
            {
                return;
            }

            GroupAbility ability = groupAbilityFactory.GetAbility();

            if (!_impMana.CheckSegments(ability.GetData().ManaSegmentsCost))
            {
                return;
            }

            //Debug.Log("Segments OK");

            if (!GroupsManager.Instance.Groups[GroupsInRangeDetector.MostRepresentedGroupInRange]
                .GetComponent <ImpGroupAi>().TryAbility(ability))
            {
                return;
            }

            //Debug.Log("Ability OK");

            _impMana.SpendSegments(ability.GetData().ManaSegmentsCost);

            OnAggroActionDone?.Invoke(useAbilityAggro);
        }
 private void OnStartGroupAbility(GroupAbilities g, GroupAbility ga)
 {
     foreach (ParticleSystem p in _particles)
     {
         p.Play();
     }
     //_audioSource.Play();
 }
Ejemplo n.º 3
0
        public bool TryAbility(GroupAbility ability)
        {
            if (_activeAbility != null)
            {
                return(false);
            }

            AssignTactic(ability.GetData().AssociatedTactic);

            _activeAbility = ability;

            return(true);
        }
Ejemplo n.º 4
0
    private void OnStartGroupAbility(GroupAbilities groupAbilities, GroupAbility groupAbility)
    {
        if (groupAbility.GetData().DoCameraShake)
        {
            shakingIntensity = groupAbility.GetData().CameraShakeIntensity;
            //shakingTimerTotal = groupAbility.GetData().CameraShakeDuration;
            //shakingTimer = shakingTimerTotal;
            doubleTargetCinemachineBasicMultiChannelPerlin.m_AmplitudeGain = shakingIntensity;
            lockedCinemachineBasicMultiChannelPerlin.m_AmplitudeGain       = shakingIntensity;
        }

        if (groupAbility.GetData().DoCameraDoubleLookAt)
        {
            lockedCamera.gameObject.SetActive(false);
            doubleTargetCamera.gameObject.SetActive(true);

            doubleTargetTimer = 3f;

            //targetGroup.m_Targets[ 0 ].target = _currentLeader.transform;
            //targetGroup.m_Targets[ 0 ].weight = 1;

            //targetGroup.m_Targets[ 0 ].target = _currentBoss.transform;
            //targetGroup.m_Targets[ 0 ].weight = 1;

            targetGroup.m_Targets[0].target = groupAbilities.transform.root;
            targetGroup.m_Targets[0].weight = 1;
        }

        if (groupAbility.GetData().DoCameraUnzoom)
        {
            lockedCamera.gameObject.SetActive(false);
            doubleTargetCamera.gameObject.SetActive(true);

            doubleTargetTimer = 1.5f;

            targetGroup.m_Targets[0].target = groupAbilities.transform.root;
            targetGroup.m_Targets[0].weight = 1;

            arenaCameraON    = true;
            arenaCameraTimer = 6f;
        }
    }
Ejemplo n.º 5
0
        public void StartAbility(GroupAbility ability)
        {
            if (_abilityCr != null)
            {
                return;
            }
            if (_currentAbility != null)
            {
                return;
            }

            foreach (Transform impsKey in _groupManager.Imps.Keys)
            {
                impsKey.GetComponent <ImpAbilities>().StartAbility(ability);
            }

            _currentAbility = ability;

            _abilityCr = StartCoroutine(ability.DoGroupAbility(transform.root, StopAbility));

            OnStartGroupAbility?.Invoke(this, ability);
        }
Ejemplo n.º 6
0
        private void StopAbility()
        {
            if (_abilityCr == null)
            {
                return;
            }
            if (_currentAbility == null)
            {
                return;
            }

            foreach (Transform impsKey in _groupManager.Imps.Keys)
            {
                impsKey.GetComponent <ImpAbilities>().StopAbility(_currentAbility);
            }

            _currentAbility = null;

            StopCoroutine(_abilityCr);
            _abilityCr = null;

            OnStopGroupAbility?.Invoke(this);
        }
Ejemplo n.º 7
0
 private void OnStopGroupAbility(GroupAbilities groupAbilities)
 {
     _activeAbility = null;
 }
Ejemplo n.º 8
0
 public void StartAbility(GroupAbility ability) => OnBlockEvent?.Invoke(ability.GetData().ActionBlocks);