コード例 #1
0
        //开始游戏
        public static void StartGame(this MatchRoom matchRoom)
        {
            M2S_StartGame m2SStartGame = new M2S_StartGame();

            m2SStartGame.RoomId   = matchRoom.RoomId;
            m2SStartGame.RoomType = RoomType.RoomCard;
            m2SStartGame.MatchPlayerInfos.AddRange(matchRoom.PlayerInfoDic.Values);
            m2SStartGame.RoomConfig       = matchRoom.RoomConfig;
            m2SStartGame.NeedJeweNumCount = matchRoom.NeedJeweNumCount;
            m2SStartGame.FriendsCircleId  = matchRoom.FriendsCircleId;
            Session toyGameSession = Game.Scene.GetComponent <NetInnerSessionComponent>().GetGameServerSession(matchRoom.RoomConfig.ToyGameId);

            toyGameSession.Send(m2SStartGame);
        }
コード例 #2
0
        public static async Task <JoyLdsRoom> Create(M2S_StartGame m2SStartGame)
        {
            JoyLdsRoom joyLdsRoom = ComponentFactory.Create <JoyLdsRoom>();

            joyLdsRoom.BesansLowest = m2SStartGame.RoomConfig.BesansLowest;
            joyLdsRoom.BaseMultiple = m2SStartGame.RoomConfig.BaseScore;
            foreach (var matchPlayer in m2SStartGame.MatchPlayerInfos)
            {
                JoyLdsPlayer joyLdsPlayer = await JoyLdsPlayerFactory.Create(matchPlayer, joyLdsRoom);

                joyLdsRoom.pJoyLdsPlayerDic.Add(joyLdsPlayer.pSeatIndex, joyLdsPlayer);
            }
            return(joyLdsRoom);
        }
コード例 #3
0
        public static async Task <FiveStarRoom> Create(M2S_StartGame m2SStartGame)
        {
            try
            {
                FiveStarRoom fiveStarRoom = ComponentFactory.Create <FiveStarRoom>();

                FiveStarRoomConfig fiveStarRoomConfig = FiveStarRoomConfigFactory.Create(m2SStartGame.RoomConfig.RoomConfigs);//创建房间配置信息

                fiveStarRoom.FriendsCircleId   = m2SStartGame.FriendsCircleId;
                fiveStarRoom.NeedJeweNumCount  = m2SStartGame.NeedJeweNumCount;       //需要的钻石数量
                fiveStarRoom.RoomConfig        = fiveStarRoomConfig;                  //房间配置
                fiveStarRoom.MathRoomId        = m2SStartGame.RoomConfig.MatchRoomId; //匹配房间ID 在房卡模式下就是本身的房间ID
                fiveStarRoom.RoomId            = m2SStartGame.RoomId;                 //房间ID
                fiveStarRoom.RoomType          = m2SStartGame.RoomType;               //赋值房间类型
                fiveStarRoom.RoomNumber        = fiveStarRoomConfig.RoomNumber;       //房间人数
                fiveStarRoom.CurrRoomStateType = RoomStateType.GameIn;                //房间状态 改为游戏中

                if (fiveStarRoom.RoomType == RoomType.RoomCard)
                {
                    fiveStarRoom.StartVideoDataId = FiveStarRoomComponent.Ins.GetMiltaryDataStartId(); //如果在房卡模式要获取起始录像Id
                }
                fiveStarRoom.IsHaveAI = false;                                                         //默认是没有AI的
                //创建玩家对象
                foreach (var playerInfo in m2SStartGame.MatchPlayerInfos)
                {
                    fiveStarRoom.FiveStarPlayerDic[playerInfo.SeatIndex] = await FiveStarPlayerFactory.Create(playerInfo, fiveStarRoom);

                    if (playerInfo.IsAI)
                    {
                        fiveStarRoom.IsHaveAI = true;//只要有一个AI就是有AI
                    }
                }
                await fiveStarRoom.AddComponent <MailBoxComponent>().AddLocation();

                return(fiveStarRoom);
            }
            catch (Exception e)
            {
                Log.Error(e);
                throw;
            }
        }
コード例 #4
0
ファイル: GameRoomFactory.cs プロジェクト: aoehuge/ETDemo
        public static async Task <GameRoom> Create(M2S_StartGame m2S_StartGame)
        {
            try
            {
                GameRoom gameRoom = ComponentFactory.Create <GameRoom>();

                //添加玩家
                foreach (var playerInfo in m2S_StartGame.MatchPlayerInfos)
                {
                    gameRoom.PlayerDic[playerInfo.SeatIndex] = await ChessPlayerFactory.Create(playerInfo, gameRoom);
                }

                await gameRoom.AddComponent <MailBoxComponent>().AddLocation();

                return(gameRoom);
            }
            catch (System.Exception ex)
            {
                Log.Error(ex);
                throw;
            }
        }
コード例 #5
0
 //检测能不能匹配成功
 public static void DetectionMatchCondition(this MatchRoomComponent matchRoomComponent, long matchRoomId)
 {
     try
     {
         MatchRoomConfig matchRoomConfig = Game.Scene.GetComponent <GameMatchRoomConfigComponent>().GetMatachRoomInfo(matchRoomId);
         while (matchRoomComponent.mAllQueueDics[matchRoomId].Count >= matchRoomConfig.GameNumber)
         {
             M2S_StartGame m2SStartGame = new M2S_StartGame();
             m2SStartGame.RoomConfig = matchRoomConfig;
             for (int i = 0; i < matchRoomConfig.GameNumber; i++)
             {
                 _TemporarayActorId = 0;
                 _IsAI = false;
                 if (matchRoomComponent.mAllQueueDics[matchRoomId][i].GetComponent <UserGateActorIdComponent>() != null)
                 {
                     _TemporarayActorId = matchRoomComponent.mAllQueueDics[matchRoomId][i].GetComponent <UserGateActorIdComponent>().ActorId;
                 }
                 else
                 {
                     _IsAI = true;
                 }
                 MatchPlayerInfo matchPlayer = MatchPlayerInfoFactory.Create(matchRoomComponent.mAllQueueDics[matchRoomId][i], _TemporarayActorId, i, _IsAI);
                 m2SStartGame.MatchPlayerInfos.Add(matchPlayer);
             }
             matchRoomComponent.PlayerStartGame(matchRoomId, matchRoomConfig.GameNumber);
             //随机分配一个游戏服务器并告知他开始一局游戏
             long toyGameId = Game.Scene.GetComponent <GameMatchRoomConfigComponent>().GetMatachRoomInfo(matchRoomId).ToyGameId;
             matchRoomComponent.RoomStartGame(toyGameId, m2SStartGame);
         }
     }
     catch (Exception e)
     {
         Log.Error(e);
         throw;
     }
 }
コード例 #6
0
        public static void CheckMatchCondition(this MatchRoomComponent matchRoomComponent, long matchRoomId)
        {
            try
            {
                MatchRoomConfig matchRoomConfig = Game.Scene.GetComponent <MatchRoomConfigComponent>().GetMatchRoomInfo(matchRoomId);
                while (matchRoomComponent.mAllQueue[matchRoomId].Count >= matchRoomConfig.GameNumber)
                {
                    M2S_StartGame m2S_StartGame = new M2S_StartGame();
                    m2S_StartGame.RoomConfig = matchRoomConfig;
                    for (int i = 0; i < matchRoomConfig.GameNumber; i++)
                    {
                        _TempActorId = 0;
                        _IsAI        = false;
                        if (matchRoomComponent.mAllQueue[matchRoomId][i].GetComponent <UserGateActorIdComponent>() != null)
                        {
                            _TempActorId = matchRoomComponent.mAllQueue[matchRoomId][i].GetComponent <UserGateActorIdComponent>().ActorId;
                        }
                        else
                        {
                            _IsAI = true;
                        }
                        MatchPlayerInfo matchPlayerInfo = MatchPlayerInfoFactory.Create(matchRoomComponent.mAllQueue[matchRoomId][i], _TempActorId, i, _IsAI);;
                        m2S_StartGame.MatchPlayerInfos.Add(matchPlayerInfo);
                    }
                    matchRoomComponent.MatchStartGame(matchRoomId, matchRoomConfig.GameNumber);

                    long toyGameId = Game.Scene.GetComponent <MatchRoomConfigComponent>().GetMatchRoomInfo(matchRoomId).ToyGameId;
                    matchRoomComponent.RoomStartGame(toyGameId, m2S_StartGame);
                }
            }
            catch (System.Exception ex)
            {
                Log.Error(ex);
                throw;
            }
        }
コード例 #7
0
        //开始游戏 并创建房间记录 返回房间ID
        private static void RoomStartGame(this MatchRoomComponent matchRoomComponent, long toyGameId, M2S_StartGame message)
        {
            try
            {
                //记录玩家信息
                MatchRoom matchRoom = MatchRoomFactory.CreateRandomMatchRoom(toyGameId, matchRoomComponent.RandomRoomId(), message.MatchPlayerInfos, message.RoomConfig);
                matchRoomComponent.MatchRoomDic[matchRoom.RoomId] = matchRoom;
                for (int i = 0; i < message.MatchPlayerInfos.count; i++)
                {
                    if (message.MatchPlayerInfos[i].IsAI)
                    {
                        continue;//如果是AI不记录
                    }
                    matchRoomComponent.UserIdInRoomIdDic[message.MatchPlayerInfos[i].User.UserId] = matchRoom;
                }

                message.RoomType = RoomType.Match;
                Session toyGameSession = Game.Scene.GetComponent <NetInnerSessionComponent>().GetGameServerSession(toyGameId);
                message.RoomId = matchRoom.RoomId;
                toyGameSession.Send(message);
            }
            catch (Exception e)
            {
                Log.Error(e);
                throw;
            }
        }
コード例 #8
0
        public static async Task <FiveStarRoom> StartGame(this FiveStarRoomComponent fiveStarRoomComponent, M2S_StartGame m2SStartGame)
        {
            try
            {
                FiveStarRoom fiveStarRoom = await FiveStarRoomFactory.Create(m2SStartGame);

                fiveStarRoomComponent.pJoyLdsRoomDic[fiveStarRoom.RoomId] = fiveStarRoom;
                fiveStarRoomComponent.RoomIds.Add(fiveStarRoom.RoomId);
                fiveStarRoom.StartGame();
                return(fiveStarRoom);
            }
            catch (Exception e)
            {
                Log.Error(e);
                throw;
            }
        }
コード例 #9
0
        public static async Task <GameRoom> StartGame(this GameRoomComponent gameRoomCom, M2S_StartGame m2S_StartGame)
        {
            try
            {
                GameRoom gameRoom = await GameRoomFactory.Create(m2S_StartGame);

                gameRoomCom.gameRoomDic[gameRoom.RoomId] = gameRoom;
                gameRoomCom.RoomIds.Add(gameRoom.RoomId);


                return(gameRoom);
            }
            catch (System.Exception ex)
            {
                Log.Error(ex);
                throw;
            }
        }