Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="RoomID"></param>
        /// <param name="TableID"></param>
        /// <returns></returns>
        public BullColorTable GetTableByRoomIDandTableID(int RoomID, int TableID)
        {
            BullColorRoom tempR = GetRoomByRoomID(RoomID);

            if (tempR == null)
            {
                return(null);
            }

            return(tempR.GetTableByTableID(TableID));
        }
Пример #2
0
        /// <summary>
        /// 重置此桌信息
        /// </summary>
        public void Reset(bool _no_again)
        {
            lock (objLock)
            {
                _strStatus = "Reset...     ";
                ForeashAllDo((i) =>
                {
                    BullColorUser _tempuser        = _DicPos2User[i];
                    _tempuser._isBanker            = false;
                    _tempuser._shouPaiArr          = new List <int>();
                    _tempuser._bulltype            = PokerBullFightType.Bull_No;
                    _tempuser._gambleTotal         = 0;
                    _tempuser._SysDealTimeOutCount = 0;
                    _tempuser._gambletime          = DateTime.Now.AddYears(100);
                    // _tempuser._WaitClientLimitCount = 0;
                });
                base.ResetBase(_no_again);

                //不在的用户处理掉
                ForeashAllDo((i) =>
                {
                    if (!_pos2userbase.ContainsKey(i))
                    {
                        BullColorUser _tempu;
                        _DicPos2User.TryRemove(i, out _tempu);
                    }
                });
                if (_numpertable < base._num_min)
                {
                    _tablestatus = TableStatusEnum.WaitforReady;  //人数不够了,,停止下局的自动准备
                }
                if (_no_again)
                {
                    _DicPos2User = null;
                    _judge       = null;
                    BullColorRoom myr = BullColorLobby.instance.GetRoomByRoomID(_roomid);
                    if (myr != null)
                    {
                        myr.ResetTableByTableID(_tableid);
                    }
                    _tableid = 0;
                }
            }
        }
Пример #3
0
        /// <summary>
        /// 初始化大厅
        /// </summary>
        public void Initi()
        {
            Gameid = 41;
            var roomInfo = new ShareCacheStruct <tb_GameInfo>();
            var temp     = roomInfo.FindAll(false);//DOTO 取了一个房间配置 后面在根据情况在来处理

            //====================begin============================================
            BullColorRoom._instance.Awake();
            var roomList = new ShareCacheStruct <tb_gamelevelinfo>().FindAll((g) => { return(g.gameid == Gameid); });

            foreach (var _roomInfo in roomList)
            {
                var roomData = new BullColorRoom(_roomInfo);
                BullColorRoom.roomCache.TryAdd(roomData.RoomId + "", roomData);
                roomData.CreateTableByRobot();
            }
            //===================end
            _dicUserStatus = new ConcurrentDictionary <int, UserStatus>();
        }
Пример #4
0
        /// <summary>
        /// 进入房间 1.如果是房卡模式就直接进入房间,2.如果是金币模式就返回现在等待用户数
        /// </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
            };
            BullColorRoom room = BullColorLobby.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;
            _senddata.gamemodel   = _data.gamemodel;
            _senddata.numpertable = _data.numpertable;
            return(JsonUtils.Serialize(_senddata));
        }
Пример #5
0
        /// <summary>
        /// 进入1~1006人后处理的
        /// </summary>
        /// <param name="tablenum"></param>
        /// <param name="userList"></param>
        public BullColorTable(int gameid, BullColorRoom _room2, int tablenum, List <BullColorUser> userList, cs_enterroom _data)
        {
            _numpertable = userList.Count;
            _roomid      = _room2.RoomId;
            _room        = _room2 as BullColorRoom;
            _tableid     = tablenum;
            _baseMoney   = 1;
            _bankpos     = 1;
            if (_DicPos2User == null)
            {
                _DicPos2User = new ConcurrentDictionary <int, BullColorUser>();
            }

            List <BullColorUser> _fuserlist = new List <BullColorUser>(userList);
            ConcurrentDictionary <int, BaseUser> _temppos2user = new ConcurrentDictionary <int, BaseUser>();

            for (int i = 0; i < _fuserlist.Count; i++)
            {
                _fuserlist[i]._tableID = tablenum;         //赋值桌子号

                _DicPos2User.TryAdd(i + 1, _fuserlist[i]); //1~3表示位置
                _temppos2user.TryAdd(i + 1, _fuserlist[i]);
            }

            _judge = new BullColorJudge(this);
            _judge.InitiArgs(_data);
            base._gametype = _judge._gametype;
            _tableMaxCount = _judge.GetTableorBankerMaxCount;

            _TurnWaitTime = BFColorSendDataServer.instance.TurnWaitTime;

            base.Initi(_temppos2user, _judge._minLimit, _judge._maxLimit, gameid, BFColorSendDataServer.instance, DoTableTimer);
            base.EnterTable();
            _DicPos2User[_bankpos].SetTimeOutAction(1, "sc_ready_bfc_n", 1 * 60);//1分钟等待时间
            _strStatus = "BullColorTable...1";
        }