NOISSUE Support ATLauncher optional mods

This commit is contained in:
Jamie Mansfield
2021-05-28 15:03:14 +01:00
parent 8179a89103
commit 74311a54cf
10 changed files with 305 additions and 3 deletions

View File

@ -457,16 +457,31 @@ void PackInstallTask::extractConfigs()
void PackInstallTask::downloadMods()
{
qDebug() << "PackInstallTask::installMods: " << QThread::currentThreadId();
QVector<ATLauncher::VersionMod> optionalMods;
for (const auto& mod : m_version.mods) {
if (mod.optional) {
optionalMods.push_back(mod);
}
}
// Select optional mods, if pack contains any
QVector<QString> selectedMods;
if (!optionalMods.isEmpty()) {
setStatus(tr("Selecting optional mods..."));
selectedMods = m_support->chooseOptionalMods(optionalMods);
}
setStatus(tr("Downloading mods..."));
jarmods.clear();
jobPtr.reset(new NetJob(tr("Mod download")));
for(const auto& mod : m_version.mods) {
// skip non-client mods
if (!mod.client) continue;
if(!mod.client) continue;
// skip optional mods for now
if(mod.optional) continue;
// skip optional mods that were not selected
if(mod.optional && !selectedMods.contains(mod.name)) continue;
QString url;
switch(mod.download) {

View File

@ -18,6 +18,11 @@ namespace ATLauncher {
class MULTIMC_LOGIC_EXPORT UserInteractionSupport {
public:
/**
* Requests a user interaction to select which optional mods should be installed.
*/
virtual QVector<QString> chooseOptionalMods(QVector<ATLauncher::VersionMod> mods) = 0;
/**
* Requests a user interaction to select a component version from a given version list
* and constrained to a given Minecraft version.

View File

@ -143,7 +143,10 @@ static void loadVersionMod(ATLauncher::VersionMod & p, QJsonObject & obj) {
p.decompFile = Json::requireString(obj, "decompFile");
}
p.description = Json::ensureString(obj, QString("description"), "");
p.optional = Json::ensureBoolean(obj, QString("optional"), false);
p.recommended = Json::ensureBoolean(obj, QString("recommended"), false);
p.selected = Json::ensureBoolean(obj, QString("selected"), false);
p.client = Json::ensureBoolean(obj, QString("client"), false);
}

View File

@ -86,7 +86,10 @@ struct VersionMod
QString decompType_raw;
QString decompFile;
QString description;
bool optional;
bool recommended;
bool selected;
bool client;
};