/// <summary> /// 连接战斗服:战斗服只在需要的时候连接,如匹配,战斗中等 /// </summary> public void ConnectFightServer() { //已经连接了战斗服,直接返回 if (m_connect_state == eFSConnectState.Connected) { return; } Player player = UnitManager.Instance.GetPlayerByIdx(m_char_idx); if (player == null || player.fs_uid == 0) { return; } //判断是否已经有战斗服 ConnAppProc app_server = ServerNetManager.Instance.GetConnApp(player.fs_uid); if (app_server == null || app_server.srv_info.srv_status != eConnAppStatus.CONNECTED) { return; } //如果存在,就当已经连上,因为本身ss已经连上fs { //告诉fs ss2fs.LoginClient msg = PacketPools.Get(ss2fs.msg.LOGIN_CLIENT) as ss2fs.LoginClient; msg.client_uid = player.client_uid; msg.data.Copy(player.unit_attr.player_info); ServerNetManager.Instance.Send2FS(player.fs_uid, msg); //告诉gs分配给玩家的fs ss2gs.NotifyServer gs_msg = PacketPools.Get(ss2gs.msg.NOTIFY_SERVER) as ss2gs.NotifyServer; gs_msg.account_idx = player.account_idx; gs_msg.s_type = eServerType.FIGHT; gs_msg.fs_uid = player.fs_uid; ServerNetManager.Instance.Send(player.client_uid.srv_uid, gs_msg); m_connect_state = eFSConnectState.Connected; } }
/// <summary> /// 进入游戏 /// </summary> private void OnLoginAccount(PacketBase packet) { ss2fs.LoginClient msg = packet as ss2fs.LoginClient; UnitManager.Instance.HandleLogin(msg.client_uid, msg.server_uid, msg.data); Log.Debug("玩家进入游戏:" + msg.data.char_idx); }