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; } }