summaryrefslogtreecommitdiffstats
path: root/logic/minecraft/MojangVersionFormat.cpp
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2016-02-28 19:01:54 +0100
committerPetr Mrázek <peterix@gmail.com>2016-02-28 19:01:54 +0100
commit9497b7e96cfac6e60a53fe05c0ca945ecc839533 (patch)
treea7b129de1109995e4416304e0e873af44bcca5ee /logic/minecraft/MojangVersionFormat.cpp
parenta0b47aee5ba8d96e5ceec12798be9f63a16dbcd5 (diff)
downloadMultiMC-9497b7e96cfac6e60a53fe05c0ca945ecc839533.tar
MultiMC-9497b7e96cfac6e60a53fe05c0ca945ecc839533.tar.gz
MultiMC-9497b7e96cfac6e60a53fe05c0ca945ecc839533.tar.lz
MultiMC-9497b7e96cfac6e60a53fe05c0ca945ecc839533.tar.xz
MultiMC-9497b7e96cfac6e60a53fe05c0ca945ecc839533.zip
NOISSUE even more version file refactors
There is no end to them in sight
Diffstat (limited to 'logic/minecraft/MojangVersionFormat.cpp')
-rw-r--r--logic/minecraft/MojangVersionFormat.cpp64
1 files changed, 62 insertions, 2 deletions
diff --git a/logic/minecraft/MojangVersionFormat.cpp b/logic/minecraft/MojangVersionFormat.cpp
index 7427156b..70a005c7 100644
--- a/logic/minecraft/MojangVersionFormat.cpp
+++ b/logic/minecraft/MojangVersionFormat.cpp
@@ -1,4 +1,7 @@
#include "MojangVersionFormat.h"
+#include "onesix/OneSixVersionFormat.h"
+#include "MinecraftVersion.h"
+#include "VersionBuildError.h"
#include "Json.h"
using namespace Json;
@@ -14,7 +17,7 @@ static void readString(const QJsonObject &root, const QString &key, QString &var
}
}
-VersionFilePtr MojangVersionFormat::fromJson(const QJsonDocument &doc, const QString &filename)
+VersionFilePtr MojangVersionFormat::versionFileFromJson(const QJsonDocument &doc, const QString &filename)
{
VersionFilePtr out(new VersionFile());
if (doc.isEmpty() || doc.isNull())
@@ -63,9 +66,66 @@ VersionFilePtr MojangVersionFormat::fromJson(const QJsonDocument &doc, const QSt
{
auto libObj = requireObject(libVal);
- auto lib = RawLibrary::fromJson(libObj, filename);
+ auto lib = OneSixVersionFormat::libraryFromJson(libObj, filename);
out->overwriteLibs.append(lib);
}
}
return out;
}
+/*
+static QJsonDocument versionFileToJson(VersionFilePtr patch)
+{
+ QJsonObject root;
+ writeString(root, "id", patch->id);
+ writeString(root, "mainClass", patch->mainClass);
+ writeString(root, "processArguments", patch->processArguments);
+ writeString(root, "minecraftArguments", patch->overwriteMinecraftArguments);
+ writeString(root, "type", patch->type);
+ writeString(root, "assets", patch->assets);
+ writeString(root, "releaseTime", patch->m_releaseTimeString);
+ writeString(root, "time", patch->m_updateTimeString);
+
+ if (!patch->addLibs.isEmpty())
+ {
+ QJsonArray array;
+ for (auto value: patch->addLibs)
+ {
+ array.append(OneSixVersionFormat::libraryToJson(value.get()));
+ }
+ root.insert("libraries", array);
+ }
+ // write the contents to a json document.
+ {
+ QJsonDocument out;
+ out.setObject(root);
+ return out;
+ }
+}
+
+static QJsonDocument minecraftVersionToJson(MinecraftVersionPtr patch)
+{
+ if(patch->m_versionSource == Local && patch->getVersionFile())
+ {
+ return MojangVersionFormat::profilePatchToJson(patch->getVersionFile());
+ }
+ else
+ {
+ throw VersionIncomplete(QObject::tr("Can't write incomplete/builtin Minecraft version %1").arg(patch->name()));
+ }
+}
+
+QJsonDocument MojangVersionFormat::profilePatchToJson(const ProfilePatchPtr &patch)
+{
+ auto vfile = std::dynamic_pointer_cast<VersionFile>(patch);
+ if(vfile)
+ {
+ return versionFileToJson(vfile);
+ }
+ auto mversion = std::dynamic_pointer_cast<MinecraftVersion>(patch);
+ if(mversion)
+ {
+ return minecraftVersionToJson(mversion);
+ }
+ throw VersionIncomplete(QObject::tr("Unhandled object type while processing %1").arg(patch->getPatchName()));
+}
+*/