diff options
author | Petr Mrázek <peterix@gmail.com> | 2014-03-01 23:06:47 +0100 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2014-03-01 23:06:47 +0100 |
commit | 7c24bcc83476dcbdd7f7acbe14ecef4398962689 (patch) | |
tree | 4ab7e7020927d05274f079c3045bd572c218fa21 /logic/VersionFile.h | |
parent | 7dfd6aa051c582e26125e17e1d6eed5e675e1027 (diff) | |
download | MultiMC-7c24bcc83476dcbdd7f7acbe14ecef4398962689.tar MultiMC-7c24bcc83476dcbdd7f7acbe14ecef4398962689.tar.gz MultiMC-7c24bcc83476dcbdd7f7acbe14ecef4398962689.tar.lz MultiMC-7c24bcc83476dcbdd7f7acbe14ecef4398962689.tar.xz MultiMC-7c24bcc83476dcbdd7f7acbe14ecef4398962689.zip |
Reorganize the version-related code.
Diffstat (limited to 'logic/VersionFile.h')
-rw-r--r-- | logic/VersionFile.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/logic/VersionFile.h b/logic/VersionFile.h new file mode 100644 index 00000000..04694999 --- /dev/null +++ b/logic/VersionFile.h @@ -0,0 +1,90 @@ +#pragma once + +#include <QString> +#include <QStringList> +#include <memory> +#include "logic/OpSys.h" +#include "logic/OneSixRule.h" +class VersionFinal; + +struct VersionFile +{ + int order; + QString name; + QString fileId; + QString version; + // TODO use the mcVersion to determine if a version file should be removed on update + QString mcVersion; + QString filename; + // TODO requirements + // QMap<QString, QString> requirements; + QString id; + QString mainClass; + QString overwriteMinecraftArguments; + QString addMinecraftArguments; + QString removeMinecraftArguments; + QString processArguments; + QString type; + QString releaseTime; + QString time; + QString assets; + int minimumLauncherVersion = -1; + + bool shouldOverwriteTweakers = false; + QStringList overwriteTweakers; + QStringList addTweakers; + QStringList removeTweakers; + + struct Library + { + QString name; + QString url; + QString hint; + QString absoluteUrl; + bool applyExcludes = false; + QStringList excludes; + bool applyNatives = false; + QList<QPair<OpSys, QString>> natives; + bool applyRules = false; + QList<std::shared_ptr<Rule>> rules; + + // user for '+' libraries + enum InsertType + { + Apply, + Append, + Prepend, + Replace + }; + InsertType insertType = Append; + QString insertData; + enum DependType + { + Soft, + Hard + }; + DependType dependType = Soft; + + static Library fromJson(const QJsonObject &libObj, const QString &filename, + bool &isError); + }; + bool shouldOverwriteLibs = false; + QList<Library> overwriteLibs; + QList<Library> addLibs; + QList<QString> removeLibs; + + enum ApplyError + { + LauncherVersionError, + OtherError, + NoApplyError + }; + + static VersionFile fromJson(const QJsonDocument &doc, const QString &filename, + const bool requireOrder, bool &isError, + const bool isFTB = false); + + static std::shared_ptr<OneSixLibrary> createLibrary(const Library &lib); + int findLibrary(QList<std::shared_ptr<OneSixLibrary>> haystack, const QString &needle); + ApplyError applyTo(VersionFinal *version); +};
\ No newline at end of file |