Esempio n. 1
0
    public void Fire(CardGameEvent e)
    {
        var type = e.GetType();

        if (_registeredHandlers.TryGetValue(type, out var handlers))
        {
            handlers(e);
        }
    }
Esempio n. 2
0
        public bool CheckConditions(CardGameEvent e, ParameterScope thisScope)
        {
            var targetScope = scopeSelectionType == ScopeSelectionType.This ? thisScope.GetHigherScope(parameterScopeLevel) : e.GetFromHeirachyAtLevel(parameterScopeLevel);

            if (targetScope == null)
            {
                return(false);
            }
            return(conditions.TrueForAll(c => c.CheckCondition(targetScope)));
        }
Esempio n. 3
0
        public bool CheckConditions(CardGameEvent e, ParameterScope thisScope)
        {
            if (triggerFilterType == TriggerFilterType.This && e.callingHeirachy[0] != thisScope)
            {
                return(false);
            }
            if (triggerFilterType == TriggerFilterType.NotThis && e.callingHeirachy[0] == thisScope)
            {
                return(false);
            }

            return(triggerConditions.TrueForAll(c => c.CheckConditions(e, thisScope)));
        }
Esempio n. 4
0
 protected override List <(ParameterScope scope, TriggeredEffect effect)> GetTriggeredEffectsForEvent(CardGameEvent cardGameEvent)
 {
     return(CardDefinitionBase.TriggeredEffects
            .Where(e => e.CheckConditions(cardGameEvent, this))
            .Select(e => ((ParameterScope)this, e))
            .ToList());
 }
 public override void RaiseEvent(CardGameEvent cardGameEvent)
 {
     base.RaiseEvent(cardGameEvent);
     eventOrchestrator.RaiseEvent(cardGameEvent, this);
 }
Esempio n. 6
0
 protected virtual List <(ParameterScope scope, TriggeredEffect effect)> GetTriggeredEffectsForEvent(CardGameEvent cardGameEvent)
 {
     return(new List <(ParameterScope scope, TriggeredEffect effect)>());
 }
Esempio n. 7
0
        public List <(ParameterScope scope, TriggeredEffect effect)> GetAllTriggeredEffectsForEvent(CardGameEvent cardGameEvent)
        {
            var effects = GetTriggeredEffectsForEvent(cardGameEvent);

            effects.AddRange(ChildScopes.SelectMany(s => s.GetAllTriggeredEffectsForEvent(cardGameEvent)));
            return(effects);
        }
Esempio n. 8
0
 public virtual void RaiseEvent(CardGameEvent cardGameEvent)
 {
     cardGameEvent.callingHeirachy.Add(this);
     ParentScope?.RaiseEvent(cardGameEvent);
 }