55 lines
2.0 KiB
C++
55 lines
2.0 KiB
C++
|
|
#pragma once
|
|||
|
|
|
|||
|
|
#include <QString>
|
|||
|
|
#include <QUrl>
|
|||
|
|
|
|||
|
|
#include <optional>
|
|||
|
|
|
|||
|
|
// Модлоадеры, которые лаунчер умеет ставить. Взаимоисключающи: игра
|
|||
|
|
// запускается ровно с одним профилем в <gameDir>/versions.
|
|||
|
|
enum class ModLoader { Forge, Fabric, NeoForge, Quilt };
|
|||
|
|
|
|||
|
|
// Одна сборка модлоадера под конкретную версию игры.
|
|||
|
|
struct LoaderVersionEntry
|
|||
|
|
{
|
|||
|
|
QString loaderVersion; // 47.4.0 | 0.19.3 | 21.1.248
|
|||
|
|
QString gameVersion; // 1.20.1
|
|||
|
|
QString versionId; // предсказанный versions/<id>; у Forge пусто —
|
|||
|
|
// он выясняется после работы установщика
|
|||
|
|
QUrl installerUrl; // только Forge и NeoForge
|
|||
|
|
bool recommended = false;
|
|||
|
|
bool stable = true;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// Ключ для интерфейса, кэша на диске и поля loader в customBuilds.json.
|
|||
|
|
inline QString loaderKey(ModLoader loader)
|
|||
|
|
{
|
|||
|
|
switch (loader) {
|
|||
|
|
case ModLoader::Forge: return QStringLiteral("forge");
|
|||
|
|
case ModLoader::Fabric: return QStringLiteral("fabric");
|
|||
|
|
case ModLoader::NeoForge: return QStringLiteral("neoforge");
|
|||
|
|
case ModLoader::Quilt: return QStringLiteral("quilt");
|
|||
|
|
}
|
|||
|
|
return {};
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
inline QString loaderTitle(ModLoader loader)
|
|||
|
|
{
|
|||
|
|
switch (loader) {
|
|||
|
|
case ModLoader::Forge: return QStringLiteral("Minecraft Forge");
|
|||
|
|
case ModLoader::Fabric: return QStringLiteral("Fabric Loader");
|
|||
|
|
case ModLoader::NeoForge: return QStringLiteral("NeoForge");
|
|||
|
|
case ModLoader::Quilt: return QStringLiteral("Quilt Loader");
|
|||
|
|
}
|
|||
|
|
return {};
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
inline std::optional<ModLoader> loaderFromKey(const QString &key)
|
|||
|
|
{
|
|||
|
|
if (key == QLatin1String("forge")) return ModLoader::Forge;
|
|||
|
|
if (key == QLatin1String("fabric")) return ModLoader::Fabric;
|
|||
|
|
if (key == QLatin1String("neoforge")) return ModLoader::NeoForge;
|
|||
|
|
if (key == QLatin1String("quilt")) return ModLoader::Quilt;
|
|||
|
|
return std::nullopt;
|
|||
|
|
}
|