Пример #1
0
        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();
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        /// <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);
        }