DatPatcher.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. //
  2. // Created by kikab on 04.06.2018.
  3. //
  4. #ifndef LOTRO_DAT_LIBRARY_DATPATCHER_H
  5. #define LOTRO_DAT_LIBRARY_DATPATCHER_H
  6. #include "yaml-cpp/yaml.h"
  7. #include "../DatOperationResult.h"
  8. extern "C++"
  9. {
  10. namespace LOTRO_DAT {
  11. class DatFile;
  12. class SubfileData;
  13. class SubFile;
  14. class Database;
  15. class BinaryData;
  16. /*!
  17. * \brief Модуль экспорта файлов
  18. * \author Gi1dor
  19. * \date 30.06.2018
  20. * Класс для изменения файлов в dat контейнере. Позволяет обновлять файлы, сохраняя их оригинальные версии
  21. *
  22. * \warning Объекты этого класса не должны создаваться отдельно! Созданием и управлением ими занимается класс DatFile
  23. */
  24. class DatPatcher {
  25. public:
  26. DatPatcher() = delete;
  27. DatPatcher(const DatPatcher &other) = delete;
  28. DatPatcher& operator=(const DatPatcher &other) = delete;
  29. ~DatPatcher() = default;
  30. explicit DatPatcher(DatFile *datFilePtr);
  31. DatOperationResult<> PatchFile(const SubfileData &data, bool single_file = true);
  32. DatOperationResult<int> PatchAllDatabase(Database *db);
  33. private:
  34. DatOperationResult<> ApplyFilePatch(std::shared_ptr<SubFile> file, BinaryData &data);
  35. private:
  36. DatFile *dat;
  37. };
  38. }
  39. }
  40. #endif //LOTRO_DAT_LIBRARY_DATFILEPATCHER_H