public void RaiseEvent(CardGameEvent cardGameEvent, ParameterScope topLevelScope)
        {
            Debug.Log("Processing event: " + cardGameEvent);
            var effects = topLevelScope.GetAllTriggeredEffectsForEvent(cardGameEvent);
            var context = CreateContextFromEvent(cardGameEvent);

            Debug.Log($"{effects.Count} effects triggered");

            for (int i = 0; i < effects.Count; i++)
            {
                effects[i].effect.ActivateEffect(effects[i].scope, context);
                if (context.wasActionCancelled)
                {
                    // RaiseEvent() - raise cancellation event
                    cardGameEvent.CancelEvent();
                    break;
                }
            }
        }
 protected virtual CardEffectActivationContextBase CreateContextFromEvent(CardGameEvent cardGameEvent)
 {
     return(new CardEffectActivationContextBase()
     {
     });
 }