public static void ResolveTriggers(TriggerTypes triggerType, Action callBack = null) { if (callBack != null) { Console.Write(triggerType.ToString(), LogTypes.Triggers, true, "yellow"); } else { Console.Write(triggerType + " is resolved again", LogTypes.Triggers, false, "yellow"); } if (triggerType == TriggerTypes.OnDamageIsDealt && callBack != null) { DamageNumbers.UpdateSavedHP(); } StackLevel currentLevel = GetCurrentLevel(); if (currentLevel == null || currentLevel.IsActive) { CreateNewLevelOfStack(triggerType, callBack); currentLevel = GetCurrentLevel(); } if (!currentLevel.IsActive) { SetStackLevelCallBack(callBack); List <Trigger> currentTriggersList = currentLevel.GetTriggersByPlayer(Phases.PlayerWithInitiative); Players.PlayerNo currentPlayer = (currentTriggersList.Count > 0) ? Phases.PlayerWithInitiative : Roster.AnotherPlayer(Phases.PlayerWithInitiative); currentTriggersList = currentLevel.GetTriggersByPlayer(currentPlayer); if (currentTriggersList.Count != 0) { currentLevel.IsActive = true; if ((currentTriggersList.Count == 1) || (IsAllSkippable(currentTriggersList))) { FireTrigger(currentTriggersList[0]); } else { RunDecisionSubPhase(); } } else { if (triggerType == TriggerTypes.OnDamageIsDealt) { DamageNumbers.ShowChangedHP(); } DoCallBack(); } } }
void FadeEffects(TriggerTypes trigger) { for (var i = currentDisplays.Count - 1; i >= 0; --i) { if (currentDisplays[i].effect.fadeTrigger == trigger) { Debug.Log($"Effect name: { currentDisplays[i].name } faded at { trigger.ToString() }. Total effects: { currentDisplays.Count }"); RemoveEffect(currentDisplays[i].effect.name); } } }
void ActivateEffects(TriggerTypes trigger) { for (var i = 0; i < currentDisplays.Count; i++) { if (currentDisplays[i].effect.activationTrigger == trigger && currentDisplays[i].effect.actionToTrigger != null) { currentDisplays[i].effect.readyToFade = true; StartCoroutine(BattleManager.instance.DoHeroAction(currentDisplays[i].effect.actionToTrigger, parentPanel, null, false)); Debug.Log($"Effect name: { currentDisplays[i].name } activated at { trigger.ToString() }."); } } }
/// <summary> /// Try to trigger an object /// </summary> /// <param name="triggerObj"></param> /// <param name="triggerType"></param> /// <returns></returns> bool TryTriggerInteraction(ObjectTrigger triggerObj, TriggerTypes triggerType) { Debug.Log(triggerObj + "TriggerType: " + triggerType); if (triggerObj != null) { if (triggerObj.actionTrigger != null && triggerObj.actionTrigger.ActionType == triggerType.ToString()) { StartCoroutine(triggerObj.TriggerAction(CompleteAction)); } else if (attemptTime <= 0) { TriggerFailAttempt(); } return(true); } return(false); }