/// <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; } } }
/// <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(); } }