Example #1
0
        private void Activate()
        {
            // should be set at start or there will be an
            // infinite loop
            _isActivated.Value = true;

            foreach (var modifier in _modifierFactories.Select(factory => factory()))
            {
                var p = new ModifierParameters
                {
                    IsStatic   = true,
                    SourceCard = OwningCard
                };

                var lifetime = new ManualLifetime();

                modifier.AddLifetime(lifetime);
                _lifetimes.Add(lifetime);

                if (modifier is IGameModifier)
                {
                    Game.AddModifier((IGameModifier)modifier, p);
                    continue;
                }

                if (modifier is ICardModifier)
                {
                    OwningCard.AddModifier((ICardModifier)modifier, p);
                    continue;
                }

                if (modifier is IPlayerModifier)
                {
                    OwningCard.Controller.AddModifier((IPlayerModifier)modifier, p);
                    continue;
                }
            }
        }
Example #2
0
        public void Enable()
        {
            foreach (var modifier in _modifierFactories.Select(factory => factory()))
            {
                var p = new ModifierParameters
                {
                    IsStatic   = true,
                    SourceCard = OwningCard
                };

                var lifetime = new ManualLifetime();

                modifier.AddLifetime(lifetime);
                _lifetimes.Add(lifetime);

                if (modifier is IGameModifier)
                {
                    Game.AddModifier((IGameModifier)modifier, p);
                    continue;
                }

                if (modifier is ICardModifier)
                {
                    OwningCard.AddModifier((ICardModifier)modifier, p);
                    continue;
                }

                if (modifier is IPlayerModifier)
                {
                    OwningCard.Controller.AddModifier((IPlayerModifier)modifier, p);
                    continue;
                }
            }

            _isEnabled.Value = true;
        }