Beispiel #1
0
        protected void ResetBase(bool _no_again)
        {
            if (_numpertable < _num_min)
            {
                _tablestatus = TableStatusEnum.WaitforReady;                           //人数不够了,,停止循环
            }
            MoneyRecordList = new ConcurrentQueue <MoneyRecord>();
            List <int> _removeKey = new List <int>();

            for (int i = 1; i <= _num_max; i++)
            {
                foreach (int key in _removeKey)
                {
                    if (i != key)
                    {
                        continue;
                    }
                    BaseUser _buser;
                    _pos2userbase.TryRemove(i, out _buser);
                }
            }
            _numpertable -= _removeKey.Count;//看一下 下一局还有多少人在够格继续
            _tablRecord   = new tb_tablerecord();
            ForeashAllDoBase((i) =>
            {
                _pos2userbase[i].ResetBase();
            });
            Interlocked.Exchange(ref _userTokenPos, 0);
            _tableSendData.Clear();      //一局完了清理,断线后的逻辑
            if (_no_again)
            {
                _tableEnterSendData.Clear();      //一局完了清理,断线后的逻辑
                //// _isUsed = false;    //房卡模式需要全踢
                ForeashAllDoBase((i) =>
                {
                    if (_pos2userbase[i]._isRobot)
                    {
                        _bsDataServer.QueRobotUser.Reverse();
                        //回收机器人 //1.断开机器人的连接
                        _bsDataServer.QueRobotUser.Enqueue(_pos2userbase[i]._tbUser);
                        _bsDataServer.RobotExistNumReduceOne();
                    }
                    UserStatus us = BaseLobby.instanceBase.GetUserStatusbyUserID(_pos2userbase[i]._userid);
                    if (us == null)
                    {
                        ErrorRecord.Record("201612052103BaseTable 必须找到的UserID: " + _pos2userbase[i]._userid);
                        return;
                    }
                    us.Status = UserStatusEnum.InLobby;
                    us.RoomID = 0;
                    BaseLobby.instanceBase.AddorUpdateUserStatus(us);
                });
            }
        }