UnknownSubfile.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. //
  2. // Created by Иван_Архипов on 24.11.2017.
  3. //
  4. #include "Subfiles/UnknownSubfile.h"
  5. #include "BinaryData.h"
  6. #include "DatFile.h"
  7. #include "SubfileData.h"
  8. #include "EasyLogging++/easylogging++.h"
  9. namespace LOTRO_DAT {
  10. UnknownSubfile::UnknownSubfile() = default;
  11. UnknownSubfile::UnknownSubfile(DatFile *dat, long long dictionary_offset, long long unknown1,
  12. long long file_id, long long file_offset, long long file_size,
  13. long long timestamp, long long version, long long block_size, long long unknown2)
  14. : Subfile(dat, dictionary_offset, unknown1, file_id, file_offset, file_size,
  15. timestamp, version, block_size, unknown2) {
  16. }
  17. FILE_TYPE UnknownSubfile::FileType() const {
  18. return UNKNOWN;
  19. }
  20. std::string UnknownSubfile::Extension() const {
  21. return std::string(".unknown");
  22. }
  23. SubfileData UnknownSubfile::PrepareForExport(const BinaryData &file_data) {
  24. if (file_data.Empty()) {
  25. return SubfileData();
  26. }
  27. SubfileData result;
  28. result.binary_data = file_data;
  29. result.options["fid"] = file_id();
  30. result.options["ext"] = Extension();
  31. return result;
  32. }
  33. BinaryData UnknownSubfile::MakeForImport(const BinaryData &, const SubfileData &data) {
  34. if (!data.options["ext"] || data.options["ext"].as<std::string>() != Extension() ||
  35. !data.options["fid"] || data.options["fid"].as<long long>() != file_id()) {
  36. LOG(ERROR) << "invalid options data!";
  37. return BinaryData(0);
  38. }
  39. return data.binary_data;
  40. }
  41. };