aboutsummaryrefslogtreecommitdiff
path: root/launcher/minecraft/mod/tasks/GetModDependenciesTask.cpp
diff options
context:
space:
mode:
authorTrial97 <alexandru.tripon97@gmail.com>2023-09-28 23:06:18 +0300
committerTrial97 <alexandru.tripon97@gmail.com>2023-09-28 23:06:18 +0300
commit4802f6950e45d795303d3bc89d6f2e56293d2618 (patch)
tree3ba73bcdd89f278aaab6826e10c7c5659e5f71b6 /launcher/minecraft/mod/tasks/GetModDependenciesTask.cpp
parent5b7c5607a90cbb6ff78ba140a15d6180842d069b (diff)
parent531b58093eadba6bd856c4e30fb3b9a30dc270ee (diff)
downloadPrismLauncher-4802f6950e45d795303d3bc89d6f2e56293d2618.tar.gz
PrismLauncher-4802f6950e45d795303d3bc89d6f2e56293d2618.tar.bz2
PrismLauncher-4802f6950e45d795303d3bc89d6f2e56293d2618.zip
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feat/acknowledge_release_type
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
Diffstat (limited to 'launcher/minecraft/mod/tasks/GetModDependenciesTask.cpp')
-rw-r--r--launcher/minecraft/mod/tasks/GetModDependenciesTask.cpp29
1 files changed, 29 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