public static async Task <FiveStarPlayer> Create(MatchPlayerInfo matchPlayerInfo, FiveStarRoom fiveStarRoom) { try { FiveStarPlayer fiveStarPlayer = ComponentFactory.Create <FiveStarPlayer>(); fiveStarPlayer.FiveStarRoom = fiveStarRoom; fiveStarPlayer.SeatIndex = matchPlayerInfo.SeatIndex; fiveStarPlayer.IsAI = matchPlayerInfo.IsAI; fiveStarPlayer.IsCollocation = fiveStarPlayer.IsAI;//如果是AI默认就是托管状态 fiveStarPlayer.User = matchPlayerInfo.User; fiveStarPlayer.User.AddComponent <UserGateActorIdComponent>().ActorId = matchPlayerInfo.SessionActorId; if (fiveStarRoom.RoomType == RoomType.Match) { fiveStarPlayer.NowScore = (int)fiveStarPlayer.User.Beans; } await fiveStarPlayer.AddComponent <MailBoxComponent>().AddLocation(); return(fiveStarPlayer); } catch (Exception e) { Log.Error(e); throw; } }
public static MatchPlayerInfo Create(User user, long sessionActorId, int seatIndex, bool isAI = false) { MatchPlayerInfo matchPlayerInfo = ComponentFactory.Create <MatchPlayerInfo>(); matchPlayerInfo.SeatIndex = seatIndex; matchPlayerInfo.User = user; matchPlayerInfo.SessionActorId = sessionActorId; matchPlayerInfo.IsAI = isAI; return(matchPlayerInfo); }
public static async Task <JoyLdsPlayer> Create(MatchPlayerInfo matchPlayer, JoyLdsRoom joyLdsRoom) { JoyLdsPlayer joyLdsPlayer = ComponentFactory.Create <JoyLdsPlayer>(); joyLdsPlayer.pSeatIndex = matchPlayer.SeatIndex; joyLdsPlayer.pUser = matchPlayer.User; joyLdsPlayer.pUser.AddComponent <UserGateActorIdComponent>().ActorId = matchPlayer.SessionActorId; joyLdsPlayer.pJoyLdsRoom = joyLdsRoom; //添加收取Actor消息组件 并且本地化一下 就是所有服务器都能向这个对象发 await joyLdsPlayer.AddComponent <MailBoxComponent>().AddLocation(); return(joyLdsPlayer); }
//玩家上线 public static void PlayerOnLine(this MatchRoom matchRoom, long userId, long sessionActorId) { MatchPlayerInfo playerInfo = matchRoom.GetPlayerInfo(userId); if (playerInfo == null) { Log.Error(matchRoom.RoomId + "房间没有玩家" + userId); } playerInfo.SessionActorId = sessionActorId; playerInfo.User.GetComponent <UserGateActorIdComponent>().ActorId = sessionActorId; playerInfo.User.IsOnLine = true; matchRoom.BroadcastActorMessage(new Actor_UserOnLine() { UserId = userId }); }
public static async Task <ChessPlayer> Create(MatchPlayerInfo matchPlayerInfo, GameRoom gameRoom) { try { ChessPlayer player = ComponentFactory.Create <ChessPlayer>(); await player.AddComponent <MailBoxComponent>().AddLocation(); return(player); } catch (System.Exception ex) { Log.Error(ex); throw; } }
//玩家加入房间 public static bool UserJoinRoom(this MatchRoom matchRoom, User user, long sessionActorId) { for (int i = 0; i < matchRoom.RoomConfig.GameNumber; i++) { if (!matchRoom.PlayerInfoDic.ContainsKey(i)) { MatchPlayerInfo matchPlayerInfo = MatchPlayerInfoFactory.Create(user, sessionActorId, i); matchRoom.BroadcastActorMessage(new Actor_OtherJoinRoom() { PlayerInfo = matchPlayerInfo }); //广播其他玩家加入房间信息 matchRoom.PlayerInfoDic[i] = matchPlayerInfo; return(true); } } return(false); }
//检测能不能匹配成功 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; } }