Files

55 lines
2.0 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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;
}