/// <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)); }