diff options
Diffstat (limited to 'launcher/minecraft/mod/tasks/GetModDependenciesTask.h')
-rw-r--r-- | launcher/minecraft/mod/tasks/GetModDependenciesTask.h | 62 |
1 files changed, 39 insertions, 23 deletions
diff --git a/launcher/minecraft/mod/tasks/GetModDependenciesTask.h b/launcher/minecraft/mod/tasks/GetModDependenciesTask.h index 7f7e1fb1..d83d6e27 100644 --- a/launcher/minecraft/mod/tasks/GetModDependenciesTask.h +++ b/launcher/minecraft/mod/tasks/GetModDependenciesTask.h @@ -18,48 +18,64 @@ #pragma once +#include <qlist.h> +#include <qvariant.h> #include <QDir> #include <QEventLoop> +#include <QList> #include <functional> +#include <memory> #include "minecraft/mod/MetadataHandler.h" -#include "minecraft/mod/tasks/LocalModGetAllTask.h" +#include "minecraft/mod/ModFolderModel.h" #include "modplatform/ModIndex.h" +#include "modplatform/ResourceAPI.h" #include "tasks/SequentialTask.h" #include "tasks/Task.h" +#include "ui/pages/modplatform/ModModel.h" -class GetModDependenciesTask : public Task { +class GetModDependenciesTask : public SequentialTask { Q_OBJECT public: using Ptr = shared_qobject_ptr<GetModDependenciesTask>; - using LocalModGetAllTaskPtr = shared_qobject_ptr<LocalModGetAllTask>; - using NewDependecyVersionAPITask = - std::function<Task::Ptr(const ModPlatform::Dependency&, std::function<void(const ModPlatform::IndexedVersion&)>)>; + struct PackDependecny { + ModPlatform::Dependency dependency; + ModPlatform::IndexedPack pack; + ModPlatform::IndexedVersion version; + PackDependecny(){}; + PackDependecny(const ModPlatform::IndexedPack& p, const ModPlatform::IndexedVersion& v) + { + pack = p; + version = v; + } + }; - explicit GetModDependenciesTask(QDir index_dir, QList<ModPlatform::IndexedVersion> selected, NewDependecyVersionAPITask api); + struct Provider { + ModPlatform::ResourceProvider name; + std::shared_ptr<ResourceDownload::ModModel> mod; + std::shared_ptr<ResourceAPI> api; + }; - auto canAbort() const -> bool override { return true; } - auto abort() -> bool override; + explicit GetModDependenciesTask(QObject* parent, + BaseInstance* instance, + ModFolderModel* folder, + QList<std::shared_ptr<PackDependecny>> selected); - auto getDependecies() const -> QList<ModPlatform::IndexedVersion> { return m_dependencies; } + auto getDependecies() const -> QList<std::shared_ptr<PackDependecny>> { return m_pack_dependencies; } protected slots: - //! Entry point for tasks. - void executeTask() override; - - void prepareDependecies(); - void addDependecies(const ModPlatform::IndexedVersion&, int); - QList<ModPlatform::Dependency> getDependenciesForVersions(const QList<ModPlatform::IndexedVersion>&); - QList<ModPlatform::Dependency> getDependenciesForVersion(const ModPlatform::IndexedVersion&); + Task::Ptr prepareDependencyTask(const ModPlatform::Dependency&, const ModPlatform::ResourceProvider, int); + QList<ModPlatform::Dependency> getDependenciesForVersion(const ModPlatform::IndexedVersion&, + const ModPlatform::ResourceProvider providerName); + void prepare(); private: - QList<ModPlatform::IndexedVersion> m_selected; - QList<ModPlatform::IndexedVersion> m_dependencies; - QList<Metadata::ModStruct> m_mods; + QList<std::shared_ptr<PackDependecny>> m_pack_dependencies; + QList<std::shared_ptr<Metadata::ModStruct>> m_mods; + QList<std::shared_ptr<PackDependecny>> m_selected; + QList<Provider> m_providers; - LocalModGetAllTaskPtr m_getAllMods = nullptr; - NewDependecyVersionAPITask m_getDependenciesVersionAPI; - SequentialTask::Ptr m_getNetworkDep; - QEventLoop loop; + Version m_version; + ResourceAPI::ModLoaderTypes m_loaderType; }; |