#ifndef LEGACYAPP_H #define LEGACYAPP_H #include #include #include #include #include #include #include class PatchInstaller : public QObject { Q_OBJECT public: struct Status { }; public: static PatchInstaller& instance() { static PatchInstaller instance_; return instance_; } bool initialised(); ~PatchInstaller(); // TODO: bool NotPatched(); private: enum Category : int { E_TEXTS_COMMON = 100, E_TEXTS_ITEMS = 101, E_TEXTS_EMOTES = 102, E_TEXTS_VIDEOS_REFS = 103, E_MAPS_COMMON = 200, E_TEXTURES_COMMON = 201, E_AUDIOS_COMMON = 300, E_FONTS_COMMON = 400 }; enum RESOURCE_FILE_TYPE : int { E_CLIENT_LOCAL = 0, E_CLIENT_GENERAL = 1 }; explicit PatchInstaller(QObject *parent = nullptr); bool datPathIsRelevant(); void deinit(); void installPatch(QString patch_name, QString database_path, RESOURCE_FILE_TYPE dat_file); public slots: void init(); void startGame(bool freeze_updates); signals: void operationStarted(QString operation_name, QVector args = {}); void errorOccured(QString operation_name, QVector args = {}, QString message = "No error message provided"); void operationFinished(QString operation_name, QVector args = {}, bool successful = true); void statusChanged(Status status); private: LOTRO_DAT::DatFile* client_local_file_; LOTRO_DAT::DatFile* client_general_file_; }; #endif // LEGACYAPP_H