예제 #1
0
        /// <summary>
        /// Invokes the method that chooses the bid.
        /// </summary>
        /// <returns>The bid chosen.</returns>
        internal BidBase InvokeChooseBid()
        {
            if (!Board.Instance.IsAuctionPhase)
            {
                throw new WrongPhaseException("A player can place a bid only during the auction phase", "Auction");
            }

            BidBase bid = _controller.ChooseBid();

            if (bid != null && bid < Board.Instance.currentAuctionWinningBid && bid is NotPassBidBase)
            {
                throw new BidNotEnoughException("The new bid is not enough to beat the winning one", bid);
            }

            if (bid == null)
            {
                return(null);
            }
            return(bid.ChangeBidder(this));
        }