/// <summary> /// This method returns the For Insurance /// </summary> internal void PromptForInsurance(IPlayerResponseRequest takeInsuranceRequest) { // verify this player is in this hand (has a hand and the GameMagager.Shuffler exists) bool isInHand = IsInHand(); // If this player is dealt in if ((isInHand) && (this.HasPlayerControl) && (this.PlayerControl.HasTable)) { // if this is a computer player if (this.IsComputerPlayer) { // Find the Shuffler to use RandomShuffler chipShuffler = this.PlayerControl.Table.ChipShuffler; // if the Shuffler exists if ((chipShuffler.HasRandomIntStorage) && (chipShuffler.CanPullNextItem())) { // get a randomIntValue int randomIntValue = chipShuffler.PullNextItem(false); // Take Insurance if the random value is an even number bool takeInsurance = ((randomIntValue % 2) == 0); // Send the response PlayerResponse response = null; // if this player choose to takeInsurance if (takeInsurance) { // the player choose to take insurance // Create a response this player took insurance response = new PlayerResponse(ResponseTypeEnum.Insurance, this.CurrentHand.AmountWagered / 2); // This was an insurance request response.ResponseRequestType = ResponseRequestTypeEnum.Insurance; // Get a reference to the PlayerResponseControl PlayerResponseControl playerResponseControl = this.PlayerControl.Table.GetPlayerResponseControl(); // If the playerResponseControl object exists if (NullHelper.Exists(playerResponseControl)) { // If the value for the property playerResponseControl.HasSendResponseCallBack is true if (playerResponseControl.HasSendResponseCallBack) { // Send the response back playerResponseControl.SendResponseCallBack(response); } } } else { // the player declined taking insurance // Create a response this player took insurance response = new PlayerResponse(ResponseTypeEnum.No); // This was an insurance request response.ResponseRequestType = ResponseRequestTypeEnum.Insurance; // Get a reference to the PlayerResponseControl PlayerResponseControl playerResponseControl = this.PlayerControl.Table.GetPlayerResponseControl(); // If the playerResponseControl object exists if (NullHelper.Exists(playerResponseControl)) { // If the value for the property playerResponseControl.HasSendResponseCallBack is true if (playerResponseControl.HasSendResponseCallBack) { // Send the response back playerResponseControl.SendResponseCallBack(response); } } } } } else { // This is a human so start the ResponseRequest takeInsuranceRequest.Start(this.PlayerControl.Table.GameManager.ResponseControl, this.PlayerControl); } } }
/// <summary> /// This method returns the For Bet /// </summary> internal void PromptForBet(PlayerResponseControl responseControl, Hand hand, Options houseRules) { // locals PlaceBetResponseRequest placeBetResponseRequest = null; PlayerResponse playerResponse = null; double amountWagered = 0; // If the responseControl object exists if ((NullHelper.Exists(responseControl)) && (responseControl.HasResponseRequest)) { // get a local copy so the type is shorter placeBetResponseRequest = responseControl.ResponseRequest as PlaceBetResponseRequest; // if the responseRequest exists if (NullHelper.Exists(placeBetResponseRequest)) { // if this is a computer player if (this.IsComputerPlayer) { // if the SendResponseCallBack exists if (responseControl.HasSendResponseCallBack) { // To Do: Create a computer logic, this is just a stub for now amountWagered = placeBetResponseRequest.TableMinimum * 7; // If the PlayerControl object exists if (this.HasPlayerControl) { // Show the amount the computer player bet this.PlayerControl.ShowAmountWagered(amountWagered); } // Create the PlayerResponse playerResponse = new PlayerResponse(ResponseTypeEnum.PlaceBet, amountWagered); // Set the responseCallBack responseControl.SendResponseCallBack(playerResponse); } } else { // not a computer player, this is a human the dealer must interact with // If the PlayerControl object exists if ((this.HasPlayerControl) && (NullHelper.Exists(responseControl))) { // Create a new hand hand.Player = this; // Show the Chip Selector and the Amount Bet TextBox this.PlayerControl.PromptForBet(); // Create the response and cast it as a PlaceBetResponse PlaceBetResponseRequest request = PlayerResponseFactory.CreatePlayerResponseRequest(ResponseRequestTypeEnum.PlaceBet, responseControl, this.PlayerControl, houseRules) as PlaceBetResponseRequest; // if the request exists if (NullHelper.Exists(request)) { // Setup the Response before showing responseControl.ResponseRequest = request; // Prompt the user for a response playerResponse = request.Start(responseControl, this.PlayerControl); } } else { // this must be sitting out hand.SittingOut = true; hand.Player.SittingOut = true; } } } else { // Without a ResponseRequest they are sitting out this.SittingOut = true; hand.Player.SittingOut = true; } } // Change the status of this player if it changed this.SittingOut = hand.SittingOut; }