예제 #1
0
 /// <summary>
 /// 完成结算
 /// </summary>
 /// <param name="tableData"></param>
 private void DoComplatedSettlement(TableData tableData)
 {
     //放入空桌池中RoomData roomData;
     RoomData roomData = GetRoomData(tableData.RoomId);
     if (roomData != null)
     {
         foreach (PositionData position in tableData.Positions)
         {
             var user = GetUser(position.UserId);
             if (user != null)
             {
                 user.Property.InitTablePos();
             }
             position.Init();
         }
         tableData.Init();
         if (roomData.Tables.Remove(tableData.TableId))
         {
             //Console.WriteLine("Table:{0} is init", tableData.TableId);
             int minTableCount = ConfigEnvSet.GetInt("Game.Table.MinTableCount", 10);
             if (roomData.TablePool.Count < minTableCount)
             {
                 roomData.TablePool.Enqueue(tableData);
             }
             else
             {
                 tableData.Dispose();
             }
             return;
         }
     }
     TraceLog.WriteError("TableData object {1} in {0} room has be disposed error.", tableData.RoomId, tableData.TableId);
 }
예제 #2
0
        /// <summary>
        /// 检查是否开始
        /// </summary>
        /// <param name="tableData"></param>
        public void CheckStart(TableData tableData)
        {
            bool started = !Array.Exists(tableData.Positions, pos => !pos.IsAI && pos.UserId == 0);
            if (started)
            {
                TraceLog.WriteComplement("房间:{0},桌:{1}开始发牌...", tableData.RoomId, tableData.TableId);
                foreach (var p in tableData.Positions)
                {
                    p.ReSendCard();
                }
                tableData.Init();
                //随机第一个开始叫地主
                int index = RandomUtils.GetRandom(0, tableData.Positions.Length);
                var pos = tableData.Positions[index];
                tableData.CallLandlordPos = pos.Id;
                tableData.CallLandlordId = pos.UserId;
                tableData.CallLandlordName = pos.NickName;
                TraceLog.WriteComplement("房间:{0},桌:{1}第一个开始叫地主{2}", tableData.RoomId, tableData.TableId, pos.Id + pos.NickName);

                SendCard(tableData, TableData.CardBackNum);
                SyncNotifyAction(ActionIDDefine.Cst_Action2004, tableData, null,
                    t =>
                    {
                        TraceLog.WriteComplement("桌子:{0}底牌:{1}", tableData.TableId, string.Join(",", tableData.BackCardData));
                        foreach (var p in tableData.Positions)
                        {
                            _cardRole.SortCard(p.CardData);
                            TraceLog.WriteComplement("桌子:{0}玩家{1}-{2}牌:{3}",
                                tableData.TableId, p.UserId, p.NickName, string.Join(",", p.CardData));
                        }
                        TraceLog.WriteComplement("房间:{0},桌:{1}发牌结束", tableData.RoomId, tableData.TableId);
                    });

            }
        }