/// <summary>
        ///  不同游戏类型结算方法不一样
        /// </summary>
        /// <returns></returns>
        public List <ShowDownSDBFC> GetShowDownList()
        {
            Dictionary <int, ShowDownSDBFC> _tempdicpos2SD = new Dictionary <int, ShowDownSDBFC>();
            int _bankerPos = _myTable._bankpos;

            _myTable.ForeashAllDo((i) =>
            {
                _tempdicpos2SD.Add(i, new ShowDownSDBFC()
                {
                    bulltype  = (int)_myTable._DicPos2User[i]._bulltype,
                    gamble    = _myTable._DicPos2User[i]._gambleTotal,
                    money     = 0,
                    pos       = i,
                    _cardlist = _myTable._DicPos2User[i]._shouPaiArr
                });
            });

            BullColorUser _tempBankerUser = _myTable._DicPos2User[_bankerPos];

            _myTable.ForeashAllDo((i) =>
            {
                if (_myTable._DicPos2User[i]._isBanker)
                {
                    return;
                }

                bool _tempBankerWin = BullFight.ComparePoker(_tempBankerUser._shouPaiArr, _tempBankerUser._bulltype, _myTable._DicPos2User[i]._shouPaiArr, _myTable._DicPos2User[i]._bulltype);
                if (_tempBankerWin)
                {
                    int _tempvar = _myTable._baseMoney * _myTable._DicPos2User[i]._gambleTotal * BullFight._dicbullfightRate[_tempBankerUser._bulltype];
                    _tempdicpos2SD[_bankerPos].money += _tempvar;
                    _tempdicpos2SD[i].money          -= _tempvar;
                }
                else
                {
                    int _tempvar = _myTable._baseMoney * _myTable._DicPos2User[i]._gambleTotal * BullFight._dicbullfightRate[_myTable._DicPos2User[i]._bulltype];
                    _tempdicpos2SD[_bankerPos].money -= _tempvar;
                    _tempdicpos2SD[i].money          += _tempvar;
                }
            });

            //算完后,统一数据持久化
            foreach (int key in _tempdicpos2SD.Keys)
            {
                if (_tempdicpos2SD[key].money > 0)//扣出5%费用 只要是赢了的人
                {
                    _tempdicpos2SD[key].money = (int)(_tempdicpos2SD[key].money * 0.95f);
                }
                _myTable._DicPos2User[key]._CurrentGold += _tempdicpos2SD[key].money;
            }
            return(_tempdicpos2SD.Values.ToList <ShowDownSDBFC>());
        }
Example #2
0
        /// <summary>
        ///  不同游戏类型结算方法不一样
        /// </summary>
        /// <returns></returns>
        public ShowDownSD100 GetShowDownList(int _pos)
        {
            int _bankerPos = _myTable._bankpos;
            List <CommonPosValListSD> _pos2CardList = new List <CommonPosValListSD>();

            foreach (var pokerlist in _myTable._dicPokerList)
            {
                _pos2CardList.Add(new CommonPosValListSD()
                {
                    pos = pokerlist.Key, vallist = pokerlist.Value
                });
            }

            ShowDownSD100 _tempdicpos2SD = new ShowDownSD100()
            {
                bulltype      = (int)_myTable._DicPos2User[_pos]._bulltype,
                gamble        = _myTable._DicPos2User[_pos]._gambleTotal,
                money         = 0,
                pos           = _pos,
                _pos2CardList = _pos2CardList
            };

            BullFight100User   _tempBankerUser = _myTable._DicPos2User[_bankerPos];
            List <int>         _bankerCardList = _myTable._dicPokerList[1];
            PokerBullFightType _bankderType    = _myTable._dicPokerBFType[1];

            foreach (int key in _myTable._dicPokerList.Keys)
            {
                if (key == 1)
                {
                    continue;          //固定1号位为庄
                }
                bool _tempBankerWin = BullFight.ComparePoker(_bankerCardList, _bankderType, _myTable._dicPokerList[key], _myTable._dicPokerBFType[key]);
                int  _gambleRate    = 1;
                if (_tempBankerWin)
                {
                    _gambleRate = BullFight._dicbullfightRate[_bankderType];
                }
                else
                {
                    _gambleRate = BullFight._dicbullfightRate[_myTable._dicPokerBFType[key]];
                }

                _myTable.ForeashAllDo((i) =>
                {
                    if (_myTable._masterPos == i)
                    {
                        return;                          //房主不计算
                    }
                    if (_myTable._bankpos == i)
                    {
                        return;                        //庄家不计算
                    }
                    if (_tempBankerWin)
                    {
                        int _tempvar = _myTable._baseMoney * _myTable._DicPos2User[i].GetGambleByPos(key) * _gambleRate;
                        _myTable._DicPos2User[_bankerPos]._CurrentGold += _tempvar;       //扣出5%费用 只要是赢了的人
                        _myTable._DicPos2User[i]._CurrentGold          -= _tempvar;
                    }
                    else
                    {
                        int _tempvar = _myTable._baseMoney * _myTable._DicPos2User[i].GetGambleByPos(key) * _gambleRate;
                        _myTable._DicPos2User[_bankerPos]._CurrentGold -= _tempvar;
                        _myTable._DicPos2User[i]._CurrentGold          += _tempvar;//扣出5%费用 只要是赢了的人
                    }
                });
            }

            return(_tempdicpos2SD);
        }