/// <summary> /// 如果是强制结束此桌,此桌不会记录与结处 /// </summary> /// <param name="_forceOver"></param> private void DoExecuteAllEnd(bool _forceOver) { lock (objLock) { ForeashAllDo((i) => { //更新数据 tb_UserEx.UpdateData(_DicPos2User[i]._tbUser); }); List <CommonPosValSD> _watchlist = new List <CommonPosValSD>(); //写入此桌的金钱交易记录 if (!_forceOver) { _pos2CardList = new Dictionary <int, List <int> >(_dicPokerList);//记录手牌 ForeashAllDo((i) => { _pos2Money.Add(i, _DicPos2User[i]._CurrentGold); _pos2Win.Add(i, _judge.CheckGameOverWin(_DicPos2User[i]._CurrentGold)); int _bfRate = BullFight._dicbullfightRate[_DicPos2User[i]._bulltype]; _pos2BullRate.Add(i, _bfRate); //更新数据 tb_UserEx.UpdateData(_DicPos2User[i]._tbUser); }); ForeashAllDo((i) => { //低于一定分数就当观众了 if (_judge.MinLimitMoney((int)_DicPos2User[i]._tbUser.UserMoney)) { _DicPos2User[i]._isWatch = true; } else { _DicPos2User[i]._isWatch = false; //金币模式中上局没开始成功的 } _watchlist.Add(new CommonPosValSD() { pos = i, val = _DicPos2User[i]._isWatch ? 1 : 0 }); _pos2Watch.Add(i, _DicPos2User[i]._isWatch ? 1 : 0); }); } else { _gameover = _forceOver; } _tablRecord.ActionList = ""; //写入此桌的录相 记录 _tablRecord.EndTime = DateTime.Now; _tablRecord.gameid = _gameid; _tablRecord._isover = (_judge._gameCoin2Room1 == 2 ? true : _gameover); LogWriteToDB(_tablRecord); bool _bankerCanGetBonusPot = _judge.CheckCanBankerGetBonusPot(); //必须在结算了后面 tb_TableMoneyLogEx.SetRateDataByTableNum(_guid, _gameover, _numpertable); List <CommonPosValSD> _pos2Gold1 = _judge.GetCurrentPosGold(); //向X家返回结果 通知 结束 List <UserIDMSG> imList = new List <UserIDMSG>(); ForeashAllDo((i) => { BullFight100User tempUser = _DicPos2User[i]; sc_end_bf100_n _end_n = new sc_end_bf100_n() { fn = "sc_end_bf100_n", result = 1, _msgid = _TurnWaitTime }; // 显示结束面板就行 _end_n.gamemodel = _judge._gameCoin2Room1; _end_n._OverTable = _gameover ? 1 : 0; _end_n.createpos = _masterPos; _end_n._pos2Watch = _watchlist; _end_n._pos2Gold = _pos2Gold1; _end_n.closefun = _bankerCanGetBonusPot ? true : false;// 能收取奖池的时候 客户端不自动走准备方法,等下一个命令 if (_judge._gameCoin2Room1 == 2 && tempUser._isRobot) { return; //结束不发给机器人 } imList.Add(new UserIDMSG(tempUser._userid, JsonUtils.Serialize(_end_n), tempUser._isRobot, tempUser._isDisconnet)); }); BF100SendDataServer.instance.SendDataDelay(imList); _tableSendData.Add(imList); ForeashAllDo((i) => { _DicPos2User[i].SetTimeOutAction(1, "sc_end_bf100_n", _bankerCanGetBonusPot ? _TurnWaitTime : 6); }); //下把的自动开始功能 ReStart(); Reset(_gameover); //准备下局, 重置此桌信息 } }