コード例 #1
0
ファイル: ProjectG.cs プロジェクト: luismk/PangProjectG
        public override void HandleTypeClient(ClientPacket packet)
        {
            Response = new PangyaBinaryWriter();

            switch (ServerType)
            {
            case ServerTypeEnum.Unknown:
                break;

            case ServerTypeEnum.Login:
            {
                var packetID = (LoginPacketEnumResponse)packet.Id;

                if (packetID == LoginPacketEnumResponse.PLAYER_CONNECTION)
                {
                    PacketLogin.Handle(this, packetID, packet);
                }
                else if (packetID != LoginPacketEnumResponse.PLAYER_CONNECTION && Login.PangyaVersion == EnumPangyaVersion.US)
                {
                    var packetold = packet;
                    packet   = new ClientPacket(packetold.Message, GetKey);
                    packetID = (LoginPacketEnumResponse)packet.Id;

                    PacketLogin.Handle(this, packetID, packet);
                }
                else if (packetID != LoginPacketEnumResponse.PLAYER_CONNECTION && Login.PangyaVersion == EnumPangyaVersion.TH)
                {
                    var packetold = packet;

                    var packets = packetold.GetSubPackets(packetold.Message, GetKey);
                    if (packets.Count > 1)
                    {
                        for (int i = 0; i < packets.Count; i++)
                        {
                            packet = packets[i];

                            packetID = (LoginPacketEnumResponse)packet.Id;

                            PacketLogin.Handle(this, packetID, packet);
                        }
                    }
                    else if (packets.Count == 1)
                    {
                        packet = packets.First();

                        packetID = (LoginPacketEnumResponse)packet.Id;

                        PacketLogin.Handle(this, packetID, packet);
                    }
                }
            }
            break;

            case ServerTypeEnum.Game:
            {
                var packetID = (GamePacketEnumResponse)packet.Id;

                if (packetID == GamePacketEnumResponse.PLAYER_CONNECTION)
                {
                    PacketGame.Handle(this, packetID, packet);
                }
                else if (packetID != GamePacketEnumResponse.PLAYER_CONNECTION)
                {
                    var packetold = packet;
                    packet   = new ClientPacket(packetold.Message, GetKey);
                    packetID = (GamePacketEnumResponse)packet.Id;

                    PacketGame.Handle(this, packetID, packet);
                }
                Commands.SetPlayer(this);
            }
            break;

            case ServerTypeEnum.Message:
            {
                var packetID = (MessengerResponseEnum)packet.Id;


                PacketMessenger.Handle(this, packetID, packet);
            }
            break;

            default:
                break;
            }
        }