public void Fire(CardGameEvent e) { var type = e.GetType(); if (_registeredHandlers.TryGetValue(type, out var handlers)) { handlers(e); } }
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))); }
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))); }
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); }
protected virtual List <(ParameterScope scope, TriggeredEffect effect)> GetTriggeredEffectsForEvent(CardGameEvent cardGameEvent) { return(new List <(ParameterScope scope, TriggeredEffect effect)>()); }
public List <(ParameterScope scope, TriggeredEffect effect)> GetAllTriggeredEffectsForEvent(CardGameEvent cardGameEvent) { var effects = GetTriggeredEffectsForEvent(cardGameEvent); effects.AddRange(ChildScopes.SelectMany(s => s.GetAllTriggeredEffectsForEvent(cardGameEvent))); return(effects); }
public virtual void RaiseEvent(CardGameEvent cardGameEvent) { cardGameEvent.callingHeirachy.Add(this); ParentScope?.RaiseEvent(cardGameEvent); }