Example #1
0
        public IReadOnlyDictionary <TriggerEventType, TriggerEvent> GetTriggerEvent(IModifierEffectHolder target)
        {
            var result = new Dictionary <TriggerEventType, TriggerEvent>();

            if (!_core.Scope.TryGetValue(target.TypeName, out var scope))
            {
                return(result);
            }

            foreach (var kv in scope.TriggerEvent)
            {
                if (!Enum.TryParse(kv.Key, out TriggerEventType type))
                {
                    Logger.Log(LogType.Warning, Name,
                               $"{kv.Key} is not a valid TriggerEvent type, so it will be ignored.");
                    continue;
                }

                if (type == TriggerEventType.OnAdded || type == TriggerEventType.OnRemoved)
                {
                    continue;
                }

                var priority = scope.TriggerEventPriority.TryGetValue(kv.Key, out var value) ? value : 0;

                result[type] = new TriggerEvent(Name, type, kv.Value, target, AdderObjectId, priority);
            }

            return(result);
        }
Example #2
0
        public void OnAdded(IModifierEffectHolder target, int adderObjectId)
        {
            if (!Scope.TryGetValue(target.TypeName, out var scope))
            {
                return;
            }

            if (!scope.TriggerEvent.TryGetValue("OnAdded", out var onAdded))
            {
                return;
            }

            onAdded.TryInvoke($"Scope.{target.TypeName}.OnAdded", Name, target, Game.Instance.GetObject(adderObjectId));
        }
Example #3
0
 public IReadOnlyList <ModifierEffect> GetEffects(IModifierEffectHolder target) =>
 _core.GetEffects(target, AdderObjectId);
Example #4
0
 public void OnRemoved(IModifierEffectHolder target) => _core.OnRemoved(target, AdderObjectId);
Example #5
0
 public IReadOnlyList <ModifierEffect> GetEffects(IModifierEffectHolder target, int adderObjectId) =>
 _getEffect == null || !_getEffect.TryInvoke($"Scope.{TargetTypeName}.GetEffect", _modifierName,
                                             out var result, target, adderObjectId)
Example #6
0
 public IReadOnlyList <ModifierEffect> GetEffects(IModifierEffectHolder target, int adderObjectId) =>
 Scope.TryGetValue(target.TypeName, out var scope)
         ? scope.GetEffects(target, adderObjectId)
         : new List <ModifierEffect>();