public override void RemovedFrom(DeckLocation location, Player player)
 {
     base.RemovedFrom(location, player);
     if (_CostComputeEventHandler != null)
     {
         player._Game.CostCompute -= _CostComputeEventHandler;
     }
     _CostComputeEventHandler = null;
 }
        public override void AddedTo(DeckLocation location, Player player)
        {
            base.AddedTo(location, player);

            if (location == DeckLocation.InPlay)
            {
                if (_CostComputeEventHandler != null)
                {
                    player._Game.CostCompute -= _CostComputeEventHandler;
                }

                _CostComputeEventHandler  = new Game.CostComputeEventHandler(player_PrincessInPlayArea);
                player._Game.CostCompute += _CostComputeEventHandler;
                player._Game.SendMessage(player, this, 2);
            }
        }
		public override void RemovedFrom(DeckLocation location, Player player)
		{
			base.RemovedFrom(location, player);
			if (_CostComputeEventHandler != null)
				player._Game.CostCompute -= _CostComputeEventHandler;
			_CostComputeEventHandler = null;
		}
		public override void AddedTo(DeckLocation location, Player player)
		{
			base.AddedTo(location, player);

			if (location == DeckLocation.InPlay)
			{
				if (_CostComputeEventHandler != null)
					player._Game.CostCompute -= _CostComputeEventHandler;

				_CostComputeEventHandler = new Game.CostComputeEventHandler(player_HighwayInPlayArea);
				player._Game.CostCompute += _CostComputeEventHandler;
				player._Game.SendMessage(player, this, 1);
			}
		}
		void player_CardGained(object sender, Players.CardGainEventArgs e)
		{
			// This is not the card you are looking for
			if (e.Card != this)
				return;

			// Clear out the Event Triggers -- the cost computation only matters when it's in the Supply
			foreach (Player playerLoop in _CardGainedHandlers.Keys)
				playerLoop.CardGained -= _CardGainedHandlers[playerLoop];
			_CardGainedHandlers.Clear();

			if (_CostComputeEventHandler != null)
				_CostComputeEventHandler = null;
		}
		private void ResetTriggers(Game game)
		{
			IEnumerator<Player> enumPlayers = game.GetPlayersStartingWithActiveEnumerator();
			while (enumPlayers.MoveNext())
			{
				_CardGainedHandlers[enumPlayers.Current] = new Player.CardGainedEventHandler(player_CardGained);
				enumPlayers.Current.CardGained += _CardGainedHandlers[enumPlayers.Current];
			}

			if (_CostComputeEventHandler == null)
			{
				_CostComputeEventHandler = new Game.CostComputeEventHandler(peddler_CostCompute);
				game.CostCompute += _CostComputeEventHandler;
			}
		}