public BetOfferActionView(PokerGameWindow parent, BetOfferAction action) { InitializeComponent(); this.parent = parent; this.action = action; //Pobieramy naszego gracza var _player = (from p in parent.TableModel.PlayersList where p.User.ID == Session.Data.User.ID select p).FirstOrDefault(); this.BidSlider.Maximum = (double)this.action.MaxBet; this.BidSlider.TickFrequency = (double)this.action.BetTick; this.BidSlider.Minimum = (double)action.MinBet; this.BidSlider.Value = this.BidSlider.Minimum; //Jesli za malo pieniedzy ukrywamy elementy przebiajajce if (this.BidSlider.Value > (double)_player.Stack) { RiseBetButton.Visibility = Visibility.Hidden; SliderPanel.Visibility = Visibility.Hidden; } this.UpdateRiseButton(); this.UpdateCheckCallButton(); }
/// <summary> /// Pobiera ofertę akcji przebicia dla użytkownika według typu limitu stołu gry /// </summary> /// <returns></returns> private BetOfferAction GetBetOfferAction() { decimal minBet; decimal maxBet; decimal betTick; switch (this.Game.GameTableModel.Limit) { case Enums.LimitType.Fixed: minBet = Game.GameTableModel.Blind * 2; maxBet = minBet * 2; betTick = minBet; break; case Enums.LimitType.PotLimit: minBet = Game.GameTableModel.GetStageBet(Game.GameTableModel.Stage); if (minBet == 0.0m) { minBet = Game.GameTableModel.Blind * 2; } maxBet = Game.GameTableModel.TablePot + minBet + minBet; betTick = Game.GameTableModel.Blind; break; default: case Enums.LimitType.NoLimit: minBet = Game.GameTableModel.GetStageBet(Game.GameTableModel.Stage); if (minBet == 0.0m) { minBet = Game.GameTableModel.Blind * 2; } maxBet = Game.GameTableModel.ActionPlayer.Stack; betTick = Game.GameTableModel.Blind; break; } if (maxBet > Game.GameTableModel.ActionPlayer.Stack) { maxBet = Game.GameTableModel.ActionPlayer.Stack; } var betOfferAction = new BetOfferAction() { BetTick = betTick, MaxBet = maxBet, MinBet = minBet, Player = Game.GameTableModel.ActionPlayer, Time = Game.GameTableModel.ActionTimer, Timestamp = DateTime.Now, LastBet = Game.GameTableModel.GetStageBet(Game.GameTableModel.Stage) }; return(betOfferAction); }
/// <summary> /// Sprawdza sume ktora uzytkownik wprowadzil do akcji /// </summary> /// <param name="action"></param> /// <param name="actionValue"></param> /// <returns></returns> private decimal ParseBetActionValue(Enums.ActionPokerType action, decimal actionValue) { var table = Game.GameTableModel; //Sprawdzenie obliczamy ręcznie if (action == Enums.ActionPokerType.Call) { actionValue = GetCallValue(table.ActionPlayer); } else if (action == Enums.ActionPokerType.Raise) { //Sprawdzamy czy to allin var isPlayerAllIn = (this.Game.GameTableModel.ActionPlayer.Stack - actionValue <= 0); if (!isPlayerAllIn) { //Raise moze byc co najmniej rowny ostatniemu przebiciu (lub big blind) x2 BetOfferAction betOffer = GetBetOfferAction(); if (actionValue < betOffer.MinBet) { actionValue = betOffer.MinBet; } if (actionValue > betOffer.MaxBet) { actionValue = betOffer.MaxBet; } if (actionValue % betOffer.BetTick != 0) { actionValue = betOffer.MinBet; } } } return(actionValue); }