new builds menu and modloaders implementation
This commit is contained in:
+54
@@ -0,0 +1,54 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user