diff --git a/launcher/modplatform/atlauncher/ATLPackManifest.cpp b/launcher/modplatform/atlauncher/ATLPackManifest.cpp index fdd06087..f8f7c2f4 100644 --- a/launcher/modplatform/atlauncher/ATLPackManifest.cpp +++ b/launcher/modplatform/atlauncher/ATLPackManifest.cpp @@ -178,6 +178,7 @@ static void loadVersionMod(ATLauncher::VersionMod & p, QJsonObject & obj) { p.depends.append(Json::requireValueString(depends)); } } + p.colour = Json::ensureString(obj, QString("colour"), ""); p.warning = Json::ensureString(obj, QString("warning"), ""); p.client = Json::ensureBoolean(obj, QString("client"), false); @@ -252,6 +253,14 @@ void ATLauncher::loadVersion(PackVersion & v, QJsonObject & obj) loadVersionConfigs(v.configs, configsObj); } + if(obj.contains("colours")) { + auto colourObj = Json::requireObject(obj, "colours"); + + for (const auto &key : colourObj.keys()) { + v.colours[key] = Json::requireValueString(colourObj.value(key), "colour"); + } + } + if(obj.contains("warnings")) { auto warningsObj = Json::requireObject(obj, "warnings"); diff --git a/launcher/modplatform/atlauncher/ATLPackManifest.h b/launcher/modplatform/atlauncher/ATLPackManifest.h index b6536908..4efa4d38 100644 --- a/launcher/modplatform/atlauncher/ATLPackManifest.h +++ b/launcher/modplatform/atlauncher/ATLPackManifest.h @@ -110,6 +110,7 @@ struct VersionMod bool library; QString group; QVector depends; + QString colour; QString warning; bool client; @@ -155,6 +156,7 @@ struct PackVersion QVector mods; VersionConfigs configs; + QMap colours; QMap warnings; VersionMessages messages; }; diff --git a/launcher/ui/pages/modplatform/atlauncher/AtlOptionalModDialog.cpp b/launcher/ui/pages/modplatform/atlauncher/AtlOptionalModDialog.cpp index 153097eb..c0aaf450 100644 --- a/launcher/ui/pages/modplatform/atlauncher/AtlOptionalModDialog.cpp +++ b/launcher/ui/pages/modplatform/atlauncher/AtlOptionalModDialog.cpp @@ -73,6 +73,11 @@ QVariant AtlOptionalModListModel::data(const QModelIndex &index, int role) const return mod.description; } } + else if (role == Qt::ForegroundRole) { + if (!mod.colour.isEmpty() && m_version.colours.contains(mod.colour)) { + return QColor(QString("#%1").arg(m_version.colours[mod.colour])); + } + } else if (role == Qt::CheckStateRole) { if (index.column() == EnabledColumn) { return m_selection[mod.name] ? Qt::Checked : Qt::Unchecked;