Esempio n. 1
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;
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 进入三个人后处理的
        /// </summary>
        /// <param name="tablenum"></param>
        /// <param name="userList"></param>
        public TCTable(int gameid, int roomid, int tablenum, List <TCUser> userList, cs_enterroom _data)
        {
            lock (objLock)
            {
                _numpertable = userList.Count;
                _roomid      = roomid;
                _tableid     = tablenum;
                _baseMoney   = 1;
                _bankpos     = 1;

                _allTurnCount     = _numpertable * 20;
                _currentTurnCount = 0;
                if (_DicPos2User == null)
                {
                    _DicPos2User = new ConcurrentDictionary <int, TCUser>();
                }

                List <TCUser> _fuserlist = new List <TCUser>(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.Add(i + 1, _fuserlist[i]);
                }
                _judge = new TCJudge(this);
                _judge.InitiArgs(_data);
                base._gametype = _judge._gametype;
                _tableMaxCount = _judge.GetTableorBankerMaxCount;

                ForeashAllDo((i) =>
                {
                    _DicPos2User[i]._CurrentGold = _judge.BaseAllMoney;   //初始化底分。
                });

                base.Initi(_temppos2user, _judge._minLimit, _judge._maxLimit, gameid, TCSendDataServer.instance, DoTableTimer);
                base.EnterTable();
            }
        }