コード例 #1
0
    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();
            }
        }
    }
コード例 #2
0
 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);
         }
     }
 }
コード例 #3
0
 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() }.");
         }
     }
 }
コード例 #4
0
 /// <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);
 }