예제 #1
0
        /// <summary>
        /// 初始化大厅
        /// </summary>
        public void Initi()
        {
            lock (obj)
            {
                _DicRoom = new ConcurrentDictionary <int, TCRoom>();

                TCRoom tab1 = new TCRoom(3, 1, 5, 200);//先直接 分配个200桌
                _DicRoom.TryAdd(1, tab1);
                TCRoom tab2 = new TCRoom(3, 2, 10, 200);
                _DicRoom.TryAdd(2, tab2);
                TCRoom tab3 = new TCRoom(3, 3, 20, 200);
                _DicRoom.TryAdd(3, tab3);
            }
            //_DicDisConnectUser = new ConcurrentDictionary<int, User>();
            _dicUserStatus = new ConcurrentDictionary <int, UserStatus>();
        }
예제 #2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="RoomID"></param>
 /// <param name="TableID"></param>
 /// <returns></returns>
 public TCTable GetTableByRoomIDandTableID(int RoomID, int TableID)
 {
     if (RoomID == 0 || TableID == 0)
     {
         return(null);
     }
     lock (obj)
     {
         TCRoom tempR = GetRoomByRoomID(RoomID);
         if (tempR == null)
         {
             ErrorRecord.Record("21020726151102 运行正常后去掉");
             return(null);
         }
         return(tempR.GetTableByTableID(TableID));
     }
 }
예제 #3
0
        /// <summary>
        /// 进入房间 返回现在等待用户数
        /// </summary>
        /// <returns></returns>
        public string EnterRoom(tb_User _user, cs_enterroom _data)
        {
            sc_enterroom _senddata = new sc_enterroom()
            {
                result = 0, fn = "sc_enterroom", cc = 0
            };
            TCRoom room = TCLobby.instance.GetRoomByRoomID(_data.levelid);

            if (room == null)
            {
                return(JsonUtils.Serialize(_senddata));
            }
            int WaitUserCount = room.EnterRoom(_data, _user.UserID, _strIPandPort);

            _senddata.waitcount = WaitUserCount;
            _senddata.result    = 1;
            _senddata.gameid    = _data.gameid;
            _senddata.levelid   = _data.levelid;
            return(JsonUtils.Serialize(_senddata));
        }
예제 #4
0
        /// <summary>
        /// 重置此桌信息
        /// </summary>
        private void Reset(bool _no_again)
        {
            lock (objLock)
            {
                ForeashAllDo((i) =>
                {
                    TCUser _tempuser               = _DicPos2User[i];
                    _tempuser._isBanker            = false;
                    _tempuser._shouPaiArr          = new List <int>();
                    _tempuser._SysDealTimeOutCount = 0;
                    // _tempuser._WaitClientLimitCount = 0;
                });
                base.ResetBase(_no_again);
                //不在的用户处理掉
                ForeashAllDo((i) =>
                {
                    if (!_pos2userbase.ContainsKey(i))
                    {
                        TCUser _tempu;
                        _DicPos2User.TryRemove(i, out _tempu);
                    }
                });
                if (_numpertable < base._num_min)
                {
                    _tablestatus = TableStatusEnum.WaitforReady;  //人数不够了,,停止下局的自动准备
                }

                if (_no_again)
                {
                    _DicPos2User = null;
                    _judge       = null;
                    TCRoom myr = TCLobby.instance.GetRoomByRoomID(_roomid);
                    if (myr != null)
                    {
                        myr.ResetTableByTableID(_tableid);
                    }
                    _tableid = 0;
                }
            }
        }
예제 #5
0
        /// <summary>
        /// 返回指定房间的在线人数
        /// </summary>
        /// <param name="levelid"></param>
        /// <returns></returns>
        public int GetOnlineCount(int levelid)
        {
            TCRoom room = TCLobby.instance.GetRoomByRoomID(levelid);

            return(room._curNumberInRoom);
        }