Example #1
0
        public bool CheckTrigger(TriggerUnitData data, IActivationEvent activation, ActivationType type)
        {
            if (activation.Type == TriggerType.TriggerManual)
            {
                return(false);
            }
            if (type == ActivationType.StartBattle)
            {
                return(activation.Type == TriggerType.TriggerStartBattle);
            }

            if (activation.Events == null)
            {
                return(false);
            }

            if (!_battle.IsTarget(data, activation.Target))
            {
                return(false);
            }
            foreach (var temp in activation.Events)
            {
                if (!_triggers.TryGetValue(temp.Value.Activation.Type, out Func <TriggerUnitData, ITrigger, bool> action))
                {
                    throw new Exception($"no register impact executor type = {temp.Value.Activation.Type}");
                }
                if (action.Invoke(data, temp.Value.Activation))
                {
                    return(true);
                }
            }
            return(false);
        }