public bool KuaFuLogin(KuaFuServerLoginData kuaFuServerLoginData) { HuanYingSiYuanFuBenData huanYingSiYuanFuBenData = this.GetKuaFuFuBenData((int)kuaFuServerLoginData.GameId); if (huanYingSiYuanFuBenData != null && huanYingSiYuanFuBenData.State < GameFuBenState.End) { if (huanYingSiYuanFuBenData.ServerId == GameManager.ServerId) { if (huanYingSiYuanFuBenData.RoleDict.ContainsKey(kuaFuServerLoginData.RoleId)) { KuaFuRoleData kuaFuRoleData = this.GetKuaFuRoleDataFromServer(kuaFuServerLoginData.ServerId, kuaFuServerLoginData.RoleId); if (kuaFuRoleData.GameId == huanYingSiYuanFuBenData.GameId) { return(true); } } } } return(false); }
private void NotifyFuBenRoleEnterGame(HuanYingSiYuanFuBenData fuBenData) { try { lock (fuBenData) { foreach (var role in fuBenData.RoleDict.Values) { KuaFuRoleData kuaFuRoleData; if (RoleIdKuaFuRoleDataDict.TryGetValue(KuaFuRoleKey.Get(role.ServerId, role.RoleId), out kuaFuRoleData) && kuaFuRoleData.State == KuaFuRoleStates.NotifyEnterGame) { AsyncDataItem evItem = new AsyncDataItem(KuaFuEventTypes.UpdateAndNotifyEnterGame, kuaFuRoleData); ClientAgentManager.Instance().PostAsyncEvent(kuaFuRoleData.ServerId, GameType, evItem); } } } } catch (System.Exception ex) { } }
private void RemoveGameFuBen(HuanYingSiYuanFuBenData huanYingSiYuanFuBenData, HuanYingSiYuanAgent huanYingSiYuanAgent = null) { int gameId = huanYingSiYuanFuBenData.GameId; HuanYingSiYuanFuBenData huanYingSiYuanFuBenDataTemp; ShotOfRolesFuBenDataDict.TryRemove(gameId, out huanYingSiYuanFuBenDataTemp); if (HuanYingSiYuanFuBenDataDict.TryRemove(gameId, out huanYingSiYuanFuBenDataTemp)) { huanYingSiYuanFuBenDataTemp.State = GameFuBenState.End; //减少服务器负载计数 if (null == huanYingSiYuanAgent) { if (!ServerId2KuaFuClientAgent.TryGetValue(huanYingSiYuanFuBenDataTemp.ServerId, out huanYingSiYuanAgent)) { huanYingSiYuanAgent = null; } } if (null != huanYingSiYuanAgent) { huanYingSiYuanAgent.RemoveGameFuBen(huanYingSiYuanFuBenDataTemp.GameId); } } lock (huanYingSiYuanFuBenData) { foreach (var fuBenRoleData in huanYingSiYuanFuBenData.RoleDict.Values) { KuaFuRoleData kuaFuRoleData; if (RoleIdKuaFuRoleDataDict.TryGetValue(KuaFuRoleKey.Get(fuBenRoleData.ServerId, fuBenRoleData.RoleId), out kuaFuRoleData)) { if (kuaFuRoleData.GameId == gameId) { kuaFuRoleData.State = KuaFuRoleStates.None; } } } } }
private HuanYingSiYuanFuBenData GetKuaFuFuBenData(int gameId) { HuanYingSiYuanFuBenData huanYingSiYuanFuBenData = null; if (huanYingSiYuanFuBenData == null) { IKuaFuService kuaFuService = this.GetKuaFuService(false); if (null != kuaFuService) { try { huanYingSiYuanFuBenData = kuaFuService.GetFuBenData(gameId); } catch (Exception ex) { LogManager.WriteException(ex.ToString()); huanYingSiYuanFuBenData = null; } } } return(huanYingSiYuanFuBenData); }
/// <summary> /// 创建一个幻影寺院副本 /// </summary> /// <param name="huanYingSiYuanAgent"></param> /// <param name="groupIndex"></param> /// <param name="roleNum"></param> /// <returns></returns> public HuanYingSiYuanFuBenData CreateHysyGameFuBen(HuanYingSiYuanAgent huanYingSiYuanAgent, int groupIndex, int roleNum) { int fuBenSeqId = huanYingSiYuanAgent.PopFuBenSeqId(); if (fuBenSeqId <= 0) { return(null); } int gameId; int serverId = huanYingSiYuanAgent.ClientInfo.ServerId; try { gameId = (int)DbHelperMySQL.GetSingle(string.Format("select CreateHysyGameFuBen({0},{1},{2})", serverId, fuBenSeqId, roleNum)); //id = (int)DbHelperMySQL.GetSingle(string.Format("select CreateHysyGameFuBen('{0}',{1},{2},{3})", DateTime.Now.ToString("yyMMdd"), serverId, fuBenSeqId, roleNum)); } catch (System.Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); gameId = -1; } HuanYingSiYuanFuBenData huanYingSiYuanFuBenData = null; if (gameId > 0) { huanYingSiYuanFuBenData = new HuanYingSiYuanFuBenData() { ServerId = serverId, GroupIndex = groupIndex, SequenceId = fuBenSeqId, GameId = gameId, EndTime = Global.NowTime.AddMinutes(Consts.HuanYingSiYuanGameFuBenMaxExistMinutes), }; } return(huanYingSiYuanFuBenData); }
private void NotifyFuBenRoleCount(HuanYingSiYuanFuBenData fuBenData) { try { lock (fuBenData) { int roleCount = fuBenData.RoleDict.Count; foreach (var role in fuBenData.RoleDict.Values) { KuaFuRoleData kuaFuRoleData; if (RoleIdKuaFuRoleDataDict.TryGetValue(KuaFuRoleKey.Get(role.ServerId, role.RoleId), out kuaFuRoleData)) { AsyncDataItem evItem = new AsyncDataItem(KuaFuEventTypes.NotifyWaitingRoleCount, kuaFuRoleData.RoleId, roleCount); ClientAgentManager.Instance().PostAsyncEvent(kuaFuRoleData.ServerId, GameType, evItem); } } } } catch { } }
private HuanYingSiYuanFuBenData GetKuaFuFuBenData(int gameId) { HuanYingSiYuanFuBenData huanYingSiYuanFuBenData = null; if (huanYingSiYuanFuBenData == null) { IKuaFuService kuaFuService = GetKuaFuService(); if (null != kuaFuService) { try { huanYingSiYuanFuBenData = (HuanYingSiYuanFuBenData)kuaFuService.GetFuBenData(gameId); } catch (System.Exception ex) { huanYingSiYuanFuBenData = null; } } } return(huanYingSiYuanFuBenData); }
public int GameFuBenChangeState(int gameId, GameFuBenState state, DateTime time) { int result = -11; HuanYingSiYuanFuBenData huanYingSiYuanFuBenData = null; int result2; if (this.HuanYingSiYuanFuBenDataDict.TryGetValue(gameId, out huanYingSiYuanFuBenData)) { lock (huanYingSiYuanFuBenData) { huanYingSiYuanFuBenData.State = state; if (state == GameFuBenState.End) { this.RemoveGameFuBen(huanYingSiYuanFuBenData); } } result2 = result; } else { result2 = -20; } return(result2); }
private void NotifyFuBenRoleEnterGame(HuanYingSiYuanFuBenData fuBenData) { try { lock (fuBenData) { foreach (var role in fuBenData.RoleDict.Values) { KuaFuRoleData kuaFuRoleData; if (RoleIdKuaFuRoleDataDict.TryGetValue(KuaFuRoleKey.Get(role.ServerId, role.RoleId), out kuaFuRoleData) && kuaFuRoleData.State == KuaFuRoleStates.NotifyEnterGame) { HuanYingSiYuanAgent huanYingSiYuanAgent; if (ServerId2KuaFuClientAgent.TryGetValue(kuaFuRoleData.ServerId, out huanYingSiYuanAgent)) { huanYingSiYuanAgent.NotifyEnterGame(kuaFuRoleData); } } } } } catch (System.Exception ex) { } }
private void AddGameFuBen(HuanYingSiYuanFuBenData huanYingSiYuanFuBenData) { this.HuanYingSiYuanFuBenDataDict[huanYingSiYuanFuBenData.GameId] = huanYingSiYuanFuBenData; }
private bool AssignGameFuben(KuaFuRoleData kuaFuRoleData, long waitSecs1, long waitSecs2, DateTime now) { int roleCount = 0; DateTime stateEndTime = now.AddSeconds((double)this.EnterGameSecs); HuanYingSiYuanFuBenData selectFuben = null; KuaFuFuBenRoleData kuaFuFuBenRoleData = new KuaFuFuBenRoleData { ServerId = kuaFuRoleData.ServerId, RoleId = kuaFuRoleData.RoleId, ZhanDouLi = kuaFuRoleData.GameData.ZhanDouLi }; try { foreach (HuanYingSiYuanFuBenData tmpFuben in this.ShotOfRolesFuBenDataDict.Values) { if (tmpFuben.CanRemove()) { this.RemoveGameFuBen(tmpFuben); } else if (tmpFuben.CanEnter(kuaFuRoleData.GroupIndex, waitSecs1, waitSecs2)) { if (ClientAgentManager.Instance().IsAgentAlive(tmpFuben.ServerId)) { roleCount = tmpFuben.AddKuaFuFuBenRoleData(kuaFuFuBenRoleData, new GameFuBenRoleCountChanged(this.GameFuBenRoleCountChangedHandler)); if (roleCount > 0) { selectFuben = tmpFuben; break; } } } } if (null == selectFuben) { int gameId = this.Persistence.GetNextGameId(); int kfSrvId = 0; if (ClientAgentManager.Instance().AssginKfFuben(this.GameType, (long)gameId, 1, out kfSrvId)) { selectFuben = new HuanYingSiYuanFuBenData(); selectFuben.ServerId = kfSrvId; selectFuben.GameId = gameId; selectFuben.GroupIndex = kuaFuRoleData.GroupIndex; selectFuben.EndTime = Global.NowTime.AddMinutes(15.0); this.AddGameFuBen(selectFuben); roleCount = selectFuben.AddKuaFuFuBenRoleData(kuaFuFuBenRoleData, new GameFuBenRoleCountChanged(this.GameFuBenRoleCountChangedHandler)); this.Persistence.LogCreateHysyFuben(gameId, kfSrvId, 0, 1); } } if (selectFuben != null && roleCount > 0) { if (roleCount == 1) { selectFuben.EndTime = now; } if (selectFuben.State == GameFuBenState.Wait) { if (roleCount == Consts.HuanYingSiYuanRoleCountTotal) { List <KuaFuFuBenRoleData> roleList = selectFuben.SortFuBenRoleList(); foreach (KuaFuFuBenRoleData role in roleList) { KuaFuRoleKey key = KuaFuRoleKey.Get(role.ServerId, role.RoleId); KuaFuRoleData kuaFuRoleDataTemp; if (this.RoleIdKuaFuRoleDataDict.TryGetValue(key, out kuaFuRoleDataTemp)) { kuaFuRoleDataTemp.UpdateStateTime(selectFuben.GameId, KuaFuRoleStates.NotifyEnterGame, stateEndTime.Ticks); } } selectFuben.State = GameFuBenState.Start; this.NotifyFuBenRoleEnterGame(selectFuben); } else { kuaFuRoleData.UpdateStateTime(selectFuben.GameId, KuaFuRoleStates.SignUpWaiting, kuaFuRoleData.StateEndTicks); this.NotifyFuBenRoleCount(selectFuben); } } else if (selectFuben.State == GameFuBenState.Start) { kuaFuRoleData.UpdateStateTime(selectFuben.GameId, KuaFuRoleStates.NotifyEnterGame, stateEndTime.Ticks); this.NotifyFuBenRoleEnterGame(selectFuben); } return(true); } return(false); } catch (Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); } return(false); }
private bool AssignGameFuben(KuaFuRoleData kuaFuRoleData, ServerLoadContext context, long waitSecs1, long waitSecs2, DateTime now) { int roleCount = 0; DateTime stateEndTime = now.AddSeconds(EnterGameSecs); HuanYingSiYuanAgent huanYingSiYuanAgent = null; HuanYingSiYuanFuBenData huanYingSiYuanFuBenData = null; IKuaFuClient kuaFuClient = null; KuaFuFuBenRoleData kuaFuFuBenRoleData = new KuaFuFuBenRoleData() { ServerId = kuaFuRoleData.ServerId, RoleId = kuaFuRoleData.RoleId, ZhanDouLi = HuanYingSiYuanGameData.GetZhanDouLi(kuaFuRoleData.GameData), }; List <KuaFuRoleData> updateRoleDataList = new List <KuaFuRoleData>(); try { //先检测是否有需要补充人的队伍 foreach (var fuBenData in ShotOfRolesFuBenDataDict.Values) { //分组编号要相等 if (fuBenData.CanRemove()) { RemoveGameFuBen(fuBenData); } else if (fuBenData.CanEnter(kuaFuRoleData.GroupIndex, waitSecs1, waitSecs2)) { if (ServerId2KuaFuClientAgent.TryGetValue(fuBenData.ServerId, out huanYingSiYuanAgent) && huanYingSiYuanAgent.IsAlive) { roleCount = fuBenData.AddKuaFuFuBenRoleData(kuaFuFuBenRoleData, GameFuBenRoleCountChangedHandler); if (roleCount > 0) { huanYingSiYuanFuBenData = fuBenData; break; } } } } if (null == huanYingSiYuanFuBenData) { //按负载状态在一个跨服活动服务器上分配一个新的游戏副本,并加入 LinkedListNode <KuaFuServerGameConfig> node = context.IdelActiveServerQueue.First; int count = context.IdelActiveServerQueue.Count; for (int i = 0; i < count && node != null; i++) { KuaFuServerGameConfig srv = node.Value; LinkedListNode <KuaFuServerGameConfig> next = node.Next; if (ServerId2KuaFuClientAgent.TryGetValue(srv.ServerId, out huanYingSiYuanAgent) && huanYingSiYuanAgent.IsAlive) { int serverLoad = huanYingSiYuanAgent.GetAliveGameFuBenCount(); if (serverLoad < srv.Capacity && serverLoad <= context.ServerLoadAvg) { try { huanYingSiYuanFuBenData = Persistence.CreateHysyGameFuBen(huanYingSiYuanAgent, kuaFuRoleData.GroupIndex, 1); if (huanYingSiYuanFuBenData != null) { AddGameFuBen(huanYingSiYuanFuBenData, huanYingSiYuanAgent); roleCount = huanYingSiYuanFuBenData.AddKuaFuFuBenRoleData(kuaFuFuBenRoleData, GameFuBenRoleCountChangedHandler); if (roleCount > 0) { context.AlivedGameFuBenCount++; context.CalcServerLoadAvg(); break; } } } catch (System.Exception ex) { huanYingSiYuanAgent.MaxActiveTicks = 0; } } else { context.IdelActiveServerQueue.Remove(node); if (serverLoad < srv.Capacity) { context.IdelActiveServerQueue.AddLast(node); } } } node = next; } } if (huanYingSiYuanFuBenData != null && roleCount > 0) { if (roleCount == 1) { huanYingSiYuanFuBenData.EndTime = now; //第一个人进入时,重置副本创建时间 } if (huanYingSiYuanFuBenData.State == GameFuBenState.Wait) { if (roleCount == Consts.HuanYingSiYuanRoleCountTotal) { List <KuaFuFuBenRoleData> roleList = huanYingSiYuanFuBenData.SortFuBenRoleList(); foreach (var role in roleList) { KuaFuRoleData kuaFuRoleDataTemp; KuaFuRoleKey key = KuaFuRoleKey.Get(role.ServerId, role.RoleId); if (RoleIdKuaFuRoleDataDict.TryGetValue(key, out kuaFuRoleDataTemp)) { kuaFuRoleDataTemp.UpdateStateTime(huanYingSiYuanFuBenData.GameId, KuaFuRoleStates.NotifyEnterGame, stateEndTime.Ticks); } } huanYingSiYuanFuBenData.State = GameFuBenState.Start; NotifyFuBenRoleEnterGame(huanYingSiYuanFuBenData); } else { kuaFuRoleData.UpdateStateTime(huanYingSiYuanFuBenData.GameId, KuaFuRoleStates.SignUpWaiting, kuaFuRoleData.StateEndTicks); NotifyFuBenRoleCount(huanYingSiYuanFuBenData); } } else if (huanYingSiYuanFuBenData.State == GameFuBenState.Start) { kuaFuRoleData.UpdateStateTime(huanYingSiYuanFuBenData.GameId, KuaFuRoleStates.NotifyEnterGame, stateEndTime.Ticks); NotifyFuBenRoleEnterGame(huanYingSiYuanFuBenData); } } else { //如果分配失败,则返回false,本轮不在尝试分配 return(false); } return(true); } catch (System.Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); } return(false); }
public void EventCallBackHandler(AsyncDataItem item) { try { int eventType = (int)item.EventType; object[] args = item.Args; int num = eventType; if (num <= 9996) { switch (num) { case 0: case 1: if (args.Length == 1) { KuaFuRoleData kuaFuRoleData = args[0] as KuaFuRoleData; if (null != kuaFuRoleData) { this.UpdateRoleData(kuaFuRoleData, kuaFuRoleData.RoleId); } } break; case 2: if (args.Length == 2) { int rid = (int)args[0]; int count = (int)args[1]; this.CoreInterface.GetEventSourceInterface().fireEvent(new KuaFuFuBenRoleCountEvent(rid, count), this.SceneType); } break; case 3: if (args.Length == 1) { KuaFuRoleData kuaFuRoleData = args[0] as KuaFuRoleData; if (null != kuaFuRoleData) { this.UpdateRoleData(kuaFuRoleData, kuaFuRoleData.RoleId); HuanYingSiYuanFuBenData huanYingSiYuanFuBenData = this.GetKuaFuFuBenData(kuaFuRoleData.GameId); if (huanYingSiYuanFuBenData != null && huanYingSiYuanFuBenData.State == GameFuBenState.Start) { KuaFuServerLoginData kuaFuServerLoginData = new KuaFuServerLoginData { RoleId = kuaFuRoleData.RoleId, GameType = kuaFuRoleData.GameType, GameId = (long)kuaFuRoleData.GameId, EndTicks = kuaFuRoleData.StateEndTicks }; kuaFuServerLoginData.ServerId = this.ClientInfo.ServerId; KuaFuServerInfo kuaFuServerInfo; if (KuaFuManager.getInstance().TryGetValue(huanYingSiYuanFuBenData.ServerId, out kuaFuServerInfo)) { kuaFuServerLoginData.ServerIp = kuaFuServerInfo.Ip; kuaFuServerLoginData.ServerPort = kuaFuServerInfo.Port; } else { LogManager.WriteLog(LogTypes.Error, string.Format("服务器列表中无法找到serverid={0}的IP和端口信息", huanYingSiYuanFuBenData.ServerId), null, true); } this.CoreInterface.GetEventSourceInterface().fireEvent(new KuaFuNotifyEnterGameEvent(kuaFuServerLoginData), this.SceneType); } } } break; default: if (num == 9996) { if (args.Length == 1) { GMCmdData data = args[0] as GMCmdData; GVoiceManager.getInstance().UpdateGVoicePriority(data, true); } } break; } } else if (num != 10015) { if (num == 10029) { KuaFuLueDuoNtfEnterData data2 = args[0] as KuaFuLueDuoNtfEnterData; KuaFuLueDuoManager.getInstance().HandleNtfEnterEvent(data2); } } else if (args != null && args.Length == 2) { KuaFuManager.getInstance().UpdateServerInfoList(args[1] as List <KuaFuServerInfo>); } } catch (Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); } }
private bool AssignGameFuben(KuaFuRoleData kuaFuRoleData, long waitSecs1, long waitSecs2, DateTime now) { int roleCount = 0; DateTime stateEndTime = now.AddSeconds(EnterGameSecs); HuanYingSiYuanFuBenData selectFuben = null; KuaFuFuBenRoleData kuaFuFuBenRoleData = new KuaFuFuBenRoleData() { ServerId = kuaFuRoleData.ServerId, RoleId = kuaFuRoleData.RoleId, ZhanDouLi = HuanYingSiYuanGameData.GetZhanDouLi(kuaFuRoleData.GameData), }; try { //先检测是否有需要补充人的队伍 foreach (var tmpFuben in ShotOfRolesFuBenDataDict.Values) { //分组编号要相等 if (tmpFuben.CanRemove()) { RemoveGameFuBen(tmpFuben); } else if (tmpFuben.CanEnter(kuaFuRoleData.GroupIndex, waitSecs1, waitSecs2)) { if (ClientAgentManager.Instance().IsAgentAlive(tmpFuben.ServerId)) { roleCount = tmpFuben.AddKuaFuFuBenRoleData(kuaFuFuBenRoleData, GameFuBenRoleCountChangedHandler); if (roleCount > 0) { selectFuben = tmpFuben; break; } } } } if (null == selectFuben) { int gameId = Persistence.GetNextGameId(); int kfSrvId = 0; if (ClientAgentManager.Instance().AssginKfFuben(GameType, gameId, 1, out kfSrvId)) { selectFuben = new HuanYingSiYuanFuBenData(); selectFuben.ServerId = kfSrvId; selectFuben.GameId = gameId; selectFuben.GroupIndex = kuaFuRoleData.GroupIndex; selectFuben.EndTime = Global.NowTime.AddMinutes(Consts.HuanYingSiYuanGameFuBenMaxExistMinutes); AddGameFuBen(selectFuben); roleCount = selectFuben.AddKuaFuFuBenRoleData(kuaFuFuBenRoleData, GameFuBenRoleCountChangedHandler); Persistence.LogCreateHysyFuben(gameId, kfSrvId, 0, 1); } } if (selectFuben != null && roleCount > 0) { if (roleCount == 1) { selectFuben.EndTime = now; //第一个人进入时,重置副本创建时间 } if (selectFuben.State == GameFuBenState.Wait) { if (roleCount == Consts.HuanYingSiYuanRoleCountTotal) { List <KuaFuFuBenRoleData> roleList = selectFuben.SortFuBenRoleList(); foreach (var role in roleList) { KuaFuRoleData kuaFuRoleDataTemp; KuaFuRoleKey key = KuaFuRoleKey.Get(role.ServerId, role.RoleId); if (RoleIdKuaFuRoleDataDict.TryGetValue(key, out kuaFuRoleDataTemp)) { kuaFuRoleDataTemp.UpdateStateTime(selectFuben.GameId, KuaFuRoleStates.NotifyEnterGame, stateEndTime.Ticks); } } selectFuben.State = GameFuBenState.Start; NotifyFuBenRoleEnterGame(selectFuben); } else { kuaFuRoleData.UpdateStateTime(selectFuben.GameId, KuaFuRoleStates.SignUpWaiting, kuaFuRoleData.StateEndTicks); NotifyFuBenRoleCount(selectFuben); } } else if (selectFuben.State == GameFuBenState.Start) { kuaFuRoleData.UpdateStateTime(selectFuben.GameId, KuaFuRoleStates.NotifyEnterGame, stateEndTime.Ticks); NotifyFuBenRoleEnterGame(selectFuben); } } else { //如果分配失败,则返回false,本轮不在尝试分配 return(false); } return(true); } catch (System.Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); } return(false); }
public void EventCallBackHandler(int eventType, params object[] args) { try { switch (eventType) { case (int)KuaFuEventTypes.NotifyWaitingRoleCount: { if (args.Length == 2) { int rid = (int)args[0]; int count = (int)args[1]; CoreInterface.GetEventSourceInterface().fireEvent(new KuaFuFuBenRoleCountEvent(rid, count), SceneType); } } break; case (int)KuaFuEventTypes.RoleSignUp: case (int)KuaFuEventTypes.RoleStateChange: { if (args.Length == 1) { KuaFuRoleData kuaFuRoleData = args[0] as KuaFuRoleData; if (null != kuaFuRoleData) { UpdateRoleData(kuaFuRoleData, kuaFuRoleData.RoleId); } } } break; case (int)KuaFuEventTypes.UpdateAndNotifyEnterGame: { if (args.Length == 1) { KuaFuRoleData kuaFuRoleData = args[0] as KuaFuRoleData; if (null != kuaFuRoleData) { UpdateRoleData(kuaFuRoleData, kuaFuRoleData.RoleId); HuanYingSiYuanFuBenData huanYingSiYuanFuBenData = GetKuaFuFuBenData(kuaFuRoleData.GameId); if (null != huanYingSiYuanFuBenData && huanYingSiYuanFuBenData.State == GameFuBenState.Start) { KuaFuServerLoginData kuaFuServerLoginData = new KuaFuServerLoginData() { RoleId = kuaFuRoleData.RoleId, GameType = kuaFuRoleData.GameType, GameId = kuaFuRoleData.GameId, EndTicks = kuaFuRoleData.StateEndTicks, }; kuaFuServerLoginData.ServerId = ClientInfo.ServerId; lock (Mutex) { KuaFuServerInfo kuaFuServerInfo; if (ServerIdServerInfoDict.TryGetValue(huanYingSiYuanFuBenData.ServerId, out kuaFuServerInfo)) { kuaFuServerLoginData.ServerIp = kuaFuServerInfo.Ip; kuaFuServerLoginData.ServerPort = kuaFuServerInfo.Port; } } CoreInterface.GetEventSourceInterface().fireEvent(new KuaFuNotifyEnterGameEvent(kuaFuServerLoginData), SceneType); } } } } break; } } catch (Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); } }