WavSubFile.cpp 1.6 KB

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