diff options
author | Sefa Eyeoglu <contact@scrumplex.net> | 2023-09-28 22:03:14 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-28 22:03:14 +0200 |
commit | 531b58093eadba6bd856c4e30fb3b9a30dc270ee (patch) | |
tree | 0600d5a8b50f382012c6bce7c047719e629ad8b6 /launcher/minecraft/mod | |
parent | 2ff9ef062034ec84ac75d6e4d294f2a448e7dfdd (diff) | |
parent | 81a3ba18bc9740d543fe9aa569f74f37ec46c2cc (diff) | |
download | PrismLauncher-531b58093eadba6bd856c4e30fb3b9a30dc270ee.tar.gz PrismLauncher-531b58093eadba6bd856c4e30fb3b9a30dc270ee.tar.bz2 PrismLauncher-531b58093eadba6bd856c4e30fb3b9a30dc270ee.zip |
Merge pull request #1263 from Trial97/develop
Diffstat (limited to 'launcher/minecraft/mod')
-rw-r--r-- | launcher/minecraft/mod/tasks/GetModDependenciesTask.cpp | 29 | ||||
-rw-r--r-- | launcher/minecraft/mod/tasks/GetModDependenciesTask.h | 1 |
2 files changed, 30 insertions, 0 deletions
diff --git a/launcher/minecraft/mod/tasks/GetModDependenciesTask.cpp b/launcher/minecraft/mod/tasks/GetModDependenciesTask.cpp index ee84b1f5..bd1fe940 100644 --- a/launcher/minecraft/mod/tasks/GetModDependenciesTask.cpp +++ b/launcher/minecraft/mod/tasks/GetModDependenciesTask.cpp @@ -251,3 +251,32 @@ void GetModDependenciesTask::removePack(const QVariant addonId) ++it; #endif } + +QHash<QString, QStringList> GetModDependenciesTask::getRequiredBy() +{ + QHash<QString, QStringList> rby; + auto fullList = m_selected + m_pack_dependencies; + for (auto& mod : fullList) { + auto addonId = mod->pack->addonId; + auto provider = mod->pack->provider; + auto version = mod->version.fileId; + auto req = QStringList(); + for (auto& smod : fullList) { + if (provider != smod->pack->provider) + continue; + auto deps = smod->version.dependencies; + if (auto dep = std::find_if(deps.begin(), deps.end(), + [addonId, provider, version](const ModPlatform::Dependency& d) { + return d.type == ModPlatform::DependencyType::REQUIRED && + (provider == ModPlatform::ResourceProvider::MODRINTH && d.addonId.toString().isEmpty() + ? version == d.version + : d.addonId == addonId); + }); + dep != deps.end()) { + req.append(smod->pack->name); + } + } + rby[addonId.toString()] = req; + } + return rby; +}
\ No newline at end of file diff --git a/launcher/minecraft/mod/tasks/GetModDependenciesTask.h b/launcher/minecraft/mod/tasks/GetModDependenciesTask.h index a8b9953d..2580f807 100644 --- a/launcher/minecraft/mod/tasks/GetModDependenciesTask.h +++ b/launcher/minecraft/mod/tasks/GetModDependenciesTask.h @@ -62,6 +62,7 @@ class GetModDependenciesTask : public SequentialTask { QList<std::shared_ptr<PackDependency>> selected); auto getDependecies() const -> QList<std::shared_ptr<PackDependency>> { return m_pack_dependencies; } + QHash<QString, QStringList> getRequiredBy(); protected slots: Task::Ptr prepareDependencyTask(const ModPlatform::Dependency&, const ModPlatform::ResourceProvider, int); |