PrismLauncher/launcher/modplatform/flame/PackManifest.h

69 lines
1.2 KiB
C
Raw Normal View History

#pragma once
#include <QString>
#include <QVector>
#include <QMap>
#include <QUrl>
#include <QJsonObject>
2017-04-22 17:51:04 +01:00
namespace Flame
{
struct File
{
// NOTE: throws JSONValidationError
bool parseFromObject(const QJsonObject& object);
2018-07-15 13:51:05 +01:00
int projectId = 0;
int fileId = 0;
// NOTE: the opposite to 'optional'. This is at the time of writing unused.
bool required = true;
QString hash;
// NOTE: only set on blocked files ! Empty otherwise.
QString websiteUrl;
2018-07-15 13:51:05 +01:00
// our
bool resolved = false;
QString fileName;
QUrl url;
QString targetFolder = QLatin1Literal("mods");
enum class Type
{
Unknown,
Folder,
Ctoc,
SingleFile,
Cmod2,
Modpack,
Mod
} type = Type::Mod;
};
struct Modloader
{
2018-07-15 13:51:05 +01:00
QString id;
bool primary = false;
};
struct Minecraft
{
2018-07-15 13:51:05 +01:00
QString version;
QString libraries;
QVector<Flame::Modloader> modLoaders;
};
struct Manifest
{
2018-07-15 13:51:05 +01:00
QString manifestType;
int manifestVersion = 0;
Flame::Minecraft minecraft;
QString name;
QString version;
QString author;
//File id -> File
QMap<int,Flame::File> files;
2018-07-15 13:51:05 +01:00
QString overrides;
};
2017-04-22 17:51:04 +01:00
void loadManifest(Flame::Manifest & m, const QString &filepath);
}