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(); }
public bool TryAbility(GroupAbility ability) { if (_activeAbility != null) { return(false); } AssignTactic(ability.GetData().AssociatedTactic); _activeAbility = ability; return(true); }
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; } }
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); }
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); }
private void OnStopGroupAbility(GroupAbilities groupAbilities) { _activeAbility = null; }
public void StartAbility(GroupAbility ability) => OnBlockEvent?.Invoke(ability.GetData().ActionBlocks);