Пример #1
0
		internal void player_BuyOverpayer(Player player, ref Players.CardBuyEventArgs e)
		{
			OptionCollection options = new OptionCollection();
			for (int i = 0; i <= player.Currency.Coin.Value - e.Game.ComputeCost(this).Coin.Value; i++)
				for (int j = 0; j <= player.Currency.Potion.Value; j++)
					if (i != 0 || j != 0)
						options.Add(new Currency(i, j).ToStringInline(), false);

			if (options.Count > 0)
			{
				Choice choiceOverpay = new Choice(this.OverpayMessage, this, options, player);
				ChoiceResult resultOverpay = player.MakeChoice(choiceOverpay);

				if (resultOverpay.Options.Count > 0)
				{
					Currency overpayAmount = new Currency(resultOverpay.Options[0]);
					player._Game.SendMessage(player, this, overpayAmount);

					if (!overpayAmount.IsBlank)
					{
						player.SpendCurrency(overpayAmount);
						Overpay(player, overpayAmount);
					}
				}
			}

			e.HandledBy.Add(this.GetType());

			// Clear out the Event Triggers -- this only happens when its Gained, so we don't care any more
			foreach (Player playerLoop in _CardBoughtHandlers.Keys)
				playerLoop.CardBought -= _CardBoughtHandlers[playerLoop];
			_CardBoughtHandlers.Clear();
		}