/// <summary>
        /// 斗地主游戏开始
        /// </summary>
        /// <param name="self"></param>
        public static void GameStart(this LandlordsRoom self)
        {
            //更改房间状态 从空闲房间移除 添加到游戏中房间列表
            LandlordsComponent Match = Game.Scene.GetComponent <LandlordsComponent>();

            Match.FreeLandlordsRooms.Remove(self.Id);
            Match.GamingLandlordsRooms.Add(self.Id, self);

            //更该玩家状态
            for (int i = 0; i < self.gamers.Length; i++)
            {
                Gamer gamer = self.gamers[i];
                Match.Waiting.Remove(gamer.UserID);
                Match.Playing.Add(gamer.UserID, self);
            }

            //添加组件
            self.AddComponent <DeckComponent>();
            self.AddComponent <DeskCardsCacheComponent>();
            self.AddComponent <OrderControllerComponent>();
            self.AddComponent <GameControllerComponent, RoomConfig>(GateHelper.GetLandlordsConfig(RoomLevel.Lv100));

            //开始游戏
            self.GetComponent <GameControllerComponent>().StartGame();
        }
        /// <summary>
        /// 检查匹配状态 每当有新排队玩家加入时执行一次
        /// </summary>
        /// <param name="self"></param>
        public static async void MatchingCheck(this LandlordsComponent self)
        {
            //如果有空房间 且 正在排队的玩家>0
            LandlordsRoom room = self.GetFreeLandlordsRoom();

            if (room != null)
            {
                while (self.MatchingQueue.Count > 0 && room.Count < 3)
                {
                    self.JoinRoom(room, self.MatchingQueue.Dequeue());
                }
            } //else 如果没有空房间 且 正在排队的玩家>=3
            else if (self.MatchingQueue.Count >= 3)
            {
                //创建新房间
                room = ComponentFactory.Create <LandlordsRoom>();
                await room.AddComponent <MailBoxComponent>().AddLocation();

                self.FreeLandlordsRooms.Add(room.Id, room);

                while (self.MatchingQueue.Count > 0 && room.Count < 3)
                {
                    self.JoinRoom(room, self.MatchingQueue.Dequeue());
                }
            }
        }