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); }