private void Awake() { _groupManager = GetComponent <GroupManager>(); _groupAbilities = GetComponentInChildren <GroupAbilities>(); _activeTactic = startTactic; }
private void OnTryTacticAssign(TacticFactory newTactic, GroupManager.Group targetGroup) { if (targetGroup != _groupManager.ThisGroupName && targetGroup != GroupManager.Group.All) { return; } AssignTactic(newTactic); }
private void AssignGlobalOrder(TacticFactory tacticFactory) { if (!_orderAssignLock.CanDoAction()) { return; } OnAggroActionDone?.Invoke(globalTacticAggro); OnTryTacticAssign?.Invoke(tacticFactory, GroupManager.Group.All); }
private void OnTacticChanged(TacticFactory obj) { if (!_groupManager.HasNoImps()) { foreach (ParticleSystem p in _particles) { p.Play(); } _audioSource.Play(); } }
private void StartHeldDown(TacticFactory tacticFactory) { AssignOrder(tacticFactory); if (_heldDownCr != null) { return; } _heldDownCr = StartCoroutine(HeldDownCoroutine(tacticFactory)); }
private void AssignOrder(TacticFactory tactic) { if (!_orderAssignLock.CanDoAction()) { return; } if (GroupsInRangeDetector.MostRepresentedGroupInRange == GroupManager.Group.None || GroupsInRangeDetector.MostRepresentedGroupInRange == GroupManager.Group.All) { return; } OnAggroActionDone?.Invoke(singleTacticAggro); OnTryTacticAssign?.Invoke(tactic, GroupsInRangeDetector.MostRepresentedGroupInRange); }
private void AssignTactic(TacticFactory newTactic) { if (_activeAbility != null) { return; } if (newTactic == _activeTactic) { return; } _activeTactic = newTactic; OnTacticChanged?.Invoke(_activeTactic); OnTacticChangedGlobal?.Invoke(newTactic, _groupManager.ThisGroupName); }
private IEnumerator HeldDownCoroutine(TacticFactory tacticFactory) { globalOrderCircle.SetActive(true); bool alreadyPlaying = false; Color finalColor = new Color(startingParticlesColor.r, startingParticlesColor.g, startingParticlesColor.b, 0f); float timer = 0f; ShapeModule shapeModule = globalOrderParticles.shape; MainModule mainModule = globalOrderParticles.main; mainModule.startColor = startingParticlesColor; while (timer < heldDownTime) { if (timer > heldDownTime / 3f) { if (!alreadyPlaying) { globalOrderParticles.Play(); alreadyPlaying = true; } shapeModule.radius = Mathf.Lerp(1f, globalOrderParticlesFinalRadius, (timer - (heldDownTime / 3f)) / (heldDownTime - (heldDownTime / 3f))); mainModule.startSize = Mathf.Lerp(2f, globalOrderParticlesFinalRadius / 2f, (timer - (heldDownTime / 3f)) / (heldDownTime - (heldDownTime / 3f))); } if (timer > heldDownTime / 1.5f) { mainModule.startColor = Color.Lerp(startingParticlesColor, finalColor, (timer - (heldDownTime / 1.5f)) / (heldDownTime - (heldDownTime / 1.5f))); } timer += Time.deltaTime; yield return(null); } AssignGlobalOrder(tacticFactory); ResetGlobalOrderParticles(); }