tests / package-smoke-linux (push) Skipped
tests / package-smoke-windows (push) Skipped
tests / package-smoke-macos (push) Skipped
tests / macos (push) Successful in 1m20s
tests / linux (push) Successful in 2m14s
tests / windows (push) Failing after 23m21s
version number Signed-off-by: galeon <dertiellis@gmail.com>
39 lines
1.7 KiB
C++
39 lines
1.7 KiB
C++
#pragma once
|
|
|
|
#include <QJsonObject>
|
|
#include <QString>
|
|
|
|
#include <optional>
|
|
|
|
// Что уже разложено в папке игры, когда лаунчер запускают впервые. Только
|
|
// читает файлы: .minecraft не меняется ни при каком исходе.
|
|
namespace GameDirImport {
|
|
|
|
// Модлоадер, найденный в описании профиля versions/<id>/<id>.json.
|
|
struct LoaderInfo
|
|
{
|
|
QString key; // "" | forge | fabric | neoforge | quilt
|
|
QString version; // в том же виде, что и в каталоге ModLoaderVersionService
|
|
};
|
|
|
|
// Сборка, которую стоит завести под содержимое папки игры.
|
|
struct Detected
|
|
{
|
|
QString minecraftVersion; // inheritsFrom профиля, а без него — сам id
|
|
QString resolvedVersionId; // id профиля, если он наследует другую версию
|
|
QString loader;
|
|
QString loaderVersion;
|
|
// Откуда взята версия: "launcher_profiles", "versions" или "content" —
|
|
// версии не нашлось, но моды или миры есть. Для тестов и отладки.
|
|
QString source;
|
|
};
|
|
|
|
// Модлоадер по библиотекам профиля, а если по ним не понять — по его id.
|
|
// Незнакомый профиль (OptiFine, LabyMod) даёт пустой key.
|
|
LoaderInfo loaderOf(const QJsonObject &versionJson);
|
|
|
|
// nullopt — в папке нет ни установленных версий, ни модов, миров и настроек игры.
|
|
std::optional<Detected> detect(const QString &gameDir);
|
|
|
|
}
|