// // Created by kikab on 04.06.2018. // #ifndef LOTRO_DAT_LIBRARY_DATPATCHER_H #define LOTRO_DAT_LIBRARY_DATPATCHER_H #include "yaml-cpp/yaml.h" #include "../DatOperationResult.h" extern "C++" { namespace LOTRO_DAT { class DatFile; class SubfileData; class SubFile; class Database; class BinaryData; /*! * \brief Модуль экспорта файлов * \author Gi1dor * \date 30.06.2018 * Класс для изменения файлов в dat контейнере. Позволяет обновлять файлы, сохраняя их оригинальные версии * * \warning Объекты этого класса не должны создаваться отдельно! Созданием и управлением ими занимается класс DatFile */ class DatPatcher { public: DatPatcher() = delete; DatPatcher(const DatPatcher &other) = delete; DatPatcher& operator=(const DatPatcher &other) = delete; ~DatPatcher() = default; explicit DatPatcher(DatFile *datFilePtr); DatOperationResult<> PatchFile(const SubfileData &data, bool single_file = true); DatOperationResult PatchAllDatabase(Database *db); private: DatOperationResult<> ApplyFilePatch(std::shared_ptr file, BinaryData &data); private: DatFile *dat; }; } } #endif //LOTRO_DAT_LIBRARY_DATFILEPATCHER_H