Exemplo n.º 1
0
        void player_CardBought(object sender, Players.CardBuyEventArgs e)
        {
            // This is not the card you are looking for
            if (e.Card != this || e.Actions.ContainsKey(this.GetType()))
            {
                return;
            }

            Player player = sender as Player;

            if (player.Currency > e.Game.ComputeCost(this))
            {
                e.Actions[this.GetType()] = new Players.CardBuyAction(this.Owner, this, String.Format("Overpay for {0}", this.Name), player_BuyOverpayer, false);
            }
        }
Exemplo n.º 2
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();
        }