/// <summary> /// Used to queue a Character Trigger to be automatically executed during key phases of combat. If you need to ensure that your trigger is executed at other times, please use QueueAndRunTrigger with a coroutine. /// </summary> /// <param name="charTrigger">CharacterTrigger to be queued</param> /// <param name="character">Character to Queue the Trigger On</param> /// <param name="canAttackOrHeal">Whether the Character being triggered can Attack or be Healed</param> /// <param name="canFireTriggers">Whether the trigger can currently be fired</param> /// <param name="fireTriggersData">Additional Parameters for controlling how the trigger is fired</param> /// <param name="triggerCount">Number of Times to Trigger</param> /// <returns>Returns Whether it succeeded at Queuing a trigger internally</returns> public static void QueueTrigger(CharacterTrigger charTrigger, CharacterState character, bool canAttackOrHeal = true, bool canFireTriggers = true, CharacterState.FireTriggersData fireTriggersData = null, int triggerCount = 1) { if (ProviderManager.TryGetProvider <CombatManager>(out CombatManager combatManager)) { combatManager.QueueTrigger( character, charTrigger.GetEnum(), canAttackOrHeal, canFireTriggers, fireTriggersData, triggerCount ); } }
/// <summary> /// Used to queue a Character Trigger to be automatically executed during key phases of combat. If you need to ensure that your trigger is executed at other times, please use QueueAndRunTrigger with a coroutine. /// </summary> /// <typeparam name="Manager">Type of Manager to Queue and Run Triggers to</typeparam> /// <param name="charTrigger">CharacterTrigger to be queued</param> /// <param name="canAttackOrHeal">Whether the Character being triggered can Attack or be Healed</param> /// <param name="canFireTriggers">Whether the trigger can currently be fired</param> /// <param name="fireTriggersData">Additional Parameters for controlling how the trigger is fired</param> /// <param name="triggerCount">Number of Times to Trigger</param> /// <returns></returns> public static void QueueTrigger <Manager>(CharacterTrigger charTrigger, bool canAttackOrHeal = true, bool canFireTriggers = true, CharacterState.FireTriggersData fireTriggersData = null, int triggerCount = 1) where Manager : ICharacterManager, IProvider { if (ProviderManager.TryGetProvider <CombatManager>(out CombatManager combatManager) && ProviderManager.TryGetProvider <Manager>(out Manager characterManager)) { for (int i = 0; i < characterManager.GetNumCharacters(); i++) { combatManager.QueueTrigger( characterManager.GetCharacter(i), charTrigger.GetEnum(), canAttackOrHeal, canFireTriggers, fireTriggersData, triggerCount ); } } }
/// <summary> /// Associates two triggers with eachother allowing MT to cast from one trigger to another /// </summary> /// <param name="cardTrigger">CardTrigger to be Associated</param> /// <param name="characterTrigger">CharacterTrigger to be Associated</param> public static void AssociateTriggers(CardTrigger cardTrigger, CharacterTrigger characterTrigger) { CharToCardTriggerDict[characterTrigger.GetEnum()] = cardTrigger.GetEnum(); CardToCharTriggerDict[cardTrigger.GetEnum()] = characterTrigger.GetEnum(); }