/// <summary> /// /// </summary> /// <param name="netState"></param> /// <param name="packetReader"></param> public static void Realm_HandleRegisterRealm(NetState netState, PacketReader packetReader) { RealmExtendData extendData = netState.GetComponent <RealmExtendData>(RealmExtendData.COMPONENT_ID); if (extendData == null) { Debug.WriteLine("Realm_PacketHandlers.Realm_HandleRegisterRealm(...) - extendData == null error!"); return; } if (extendData.IsLoggedIn == true) { Debug.WriteLine("Realm_PacketHandlers.Realm_HandleRegisterRealm(...) - extendData.IsLoggedIn == true error!"); return; } Realm realm = new Realm(); realm.Name = packetReader.ReadUTF8String(); realm.Address = packetReader.ReadUTF8String(); string strIcon = packetReader.ReadUTF8String(); if (Insensitive.Equals(strIcon, "PVP")) { realm.Icon = (uint)RealmIconType.REALMTYPE_PVP; } else if (Insensitive.Equals(strIcon, "RP")) { realm.Icon = (uint)RealmIconType.REALMTYPE_RP; } else if (Insensitive.Equals(strIcon, "RPPVP")) { realm.Icon = (uint)RealmIconType.REALMTYPE_RPPVP; } else { realm.Icon = (uint)RealmIconType.REALMTYPE_NORMAL; } realm.Colour = packetReader.ReadUInt32(); realm.TimeZone = packetReader.ReadUInt32(); realm.Population = packetReader.ReadFloat(); extendData.RequestSession.Serial = RealmHandler.RealmsExclusiveSerial.GetExclusiveSerial(); // Add to the main realm list RealmHandler.AddRealm(extendData.RequestSession.Serial, realm); extendData.IsLoggedIn = true; // Send back response packet. netState.Send(new Realm_RegisterRealmResult(extendData.RequestSession.Serial)); }
/// <summary> /// /// </summary> /// <param name="netState"></param> /// <param name="packetReader"></param> public static void Realm_HandlePing(NetState netState, PacketReader packetReader) { RealmExtendData extendData = netState.GetComponent <RealmExtendData>(RealmExtendData.COMPONENT_ID); if (extendData == null) { Debug.WriteLine("Realm_PacketHandlers.Realm_HandlePing(...) - extendData == null error!"); return; } if (extendData.IsLoggedIn == false) { Debug.WriteLine("Realm_PacketHandlers.Realm_HandlePing(...) - extendData.IsLoggedIn == false error!"); return; } netState.Send(new Realm_Pong()); }
/// <summary> /// /// </summary> /// <param name="newNetState"></param> internal static void RealmInitializeNetState(object sender, NetStateInitEventArgs netStateInit) { if (netStateInit.NetStateInit != null) { // 初始化客户端 RealmExtendData extendData = new RealmExtendData(); netStateInit.NetStateInit.RegisterComponent <RealmExtendData>(RealmExtendData.COMPONENT_ID, extendData); // 获取包的ID netStateInit.NetStateInit.ReceiveBuffer.ThreadEventPacketID += new EventHandler <PacketIdInfoEventArgs>(RealmGetPacketID); // 获取包的长度 netStateInit.NetStateInit.ReceiveBuffer.ThreadEventPacketLength += new EventHandler <PacketLengthInfoEventArgs>(RealmGetPacketLength); // 截获输出的信息包 netStateInit.NetStateInit.EventSendPacket += new EventHandler <NetStateSendPacketEventArgs>(RealmSendPacket); } else { Debug.WriteLine("ProcessNet.Realm_InitializeNetState(...) - newNetState != null && newNetState.ExtendData == null error!"); } }
/// <summary> /// /// </summary> /// <param name="netState"></param> /// <param name="packetReader"></param> public static void Realm_HandleRequestSession(NetState netState, PacketReader packetReader) { RealmExtendData extendData = netState.GetComponent <RealmExtendData>(RealmExtendData.COMPONENT_ID); if (extendData == null) { Debug.WriteLine("Realm_PacketHandlers.Realm_HandleRequestSession(...) - extendData == null error!"); return; } if (extendData.IsLoggedIn == false) { Debug.WriteLine("Realm_PacketHandlers.Realm_HandleRequestSession(...) - extendData.IsLoggedIn == false error!"); return; } uint iSerial = packetReader.ReadUInt32(); string strAccountName = packetReader.ReadUTF8StringSafe(); WowAccount wowAccount = WowAccountHandler.GetAccount(strAccountName); if (wowAccount == null) { netState.Send(new Realm_RequestSessionResultError(iSerial)); return; } SecureRemotePassword srp = SrpHandler.GetSRP(strAccountName); if (srp == null) { netState.Send(new Realm_RequestSessionResultError(iSerial)); return; } netState.Send(new Realm_RequestSessionResult(iSerial, wowAccount, srp)); }
/// <summary> /// /// </summary> /// <param name="newNetState"></param> internal static void RealmInitializeNetState( object sender, NetStateInitEventArgs netStateInit ) { if ( netStateInit.NetStateInit != null ) { // 初始化客户端 RealmExtendData extendData = new RealmExtendData(); netStateInit.NetStateInit.RegisterComponent<RealmExtendData>( RealmExtendData.COMPONENT_ID, extendData ); // 获取包的ID netStateInit.NetStateInit.ReceiveBuffer.ThreadEventPacketID += new EventHandler<PacketIdInfoEventArgs>( RealmGetPacketID ); // 获取包的长度 netStateInit.NetStateInit.ReceiveBuffer.ThreadEventPacketLength += new EventHandler<PacketLengthInfoEventArgs>( RealmGetPacketLength ); // 截获输出的信息包 netStateInit.NetStateInit.EventSendPacket += new EventHandler<NetStateSendPacketEventArgs>( RealmSendPacket ); } else Debug.WriteLine( "ProcessNet.Realm_InitializeNetState(...) - newNetState != null && newNetState.ExtendData == null error!" ); }