//开始游戏 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); }
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); }
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; } }
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; } }
//检测能不能匹配成功 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; } }
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; } }
//开始游戏 并创建房间记录 返回房间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; } }
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; } }
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; } }