#pragma once #include #include #include // Что уже разложено в папке игры, когда лаунчер запускают впервые. Только // читает файлы: .minecraft не меняется ни при каком исходе. namespace GameDirImport { // Модлоадер, найденный в описании профиля versions//.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 detect(const QString &gameDir); }