/// <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));
        }
Esempio n. 2
0
        /// <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());
        }
Esempio n. 3
0
        /// <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));
        }
Esempio n. 5
0
        /// <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!" );
        }