summaryrefslogtreecommitdiffstats
path: root/libmultimc/include
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2013-07-22 02:01:56 +0200
committerPetr Mrázek <peterix@gmail.com>2013-07-22 02:01:56 +0200
commit18853ca3fa185f5fe5288a1d0c8ed6cf8c678007 (patch)
tree15ad1dbc73531affaab71bf25e772a4ce1fec5bc /libmultimc/include
parente2ee6d6d254285284f07b07cb60409fbda0bf7ad (diff)
downloadMultiMC-18853ca3fa185f5fe5288a1d0c8ed6cf8c678007.tar
MultiMC-18853ca3fa185f5fe5288a1d0c8ed6cf8c678007.tar.gz
MultiMC-18853ca3fa185f5fe5288a1d0c8ed6cf8c678007.tar.lz
MultiMC-18853ca3fa185f5fe5288a1d0c8ed6cf8c678007.tar.xz
MultiMC-18853ca3fa185f5fe5288a1d0c8ed6cf8c678007.zip
Parsing the version files, part I
Diffstat (limited to 'libmultimc/include')
-rw-r--r--libmultimc/include/fullversion.h68
-rw-r--r--libmultimc/include/fullversionfactory.h23
-rw-r--r--libmultimc/include/library.h18
3 files changed, 109 insertions, 0 deletions
diff --git a/libmultimc/include/fullversion.h b/libmultimc/include/fullversion.h
new file mode 100644
index 00000000..b1de02a3
--- /dev/null
+++ b/libmultimc/include/fullversion.h
@@ -0,0 +1,68 @@
+#pragma once
+#include <QString>
+#include <QStringList>
+
+class FullVersion
+{
+public:
+ FullVersion()
+ {
+ minimumLauncherVersion = 0xDEADBEEF;
+ isLegacy = false;
+ }
+ // the ID - determines which jar to use! ACTUALLY IMPORTANT!
+ QString id;
+ // do we actually care about parsing this?
+ QString time;
+ // I don't think we do.
+ QString releaseTime;
+ // eh, not caring - "release" or "snapshot"
+ QString type;
+ /*
+ * DEPRECATED: Old versions of the new vanilla launcher used this
+ * ex: "username_session_version"
+ */
+ QString processArguments;
+ /*
+ * arguments that should be used for launching minecraft
+ *
+ * ex: "--username ${auth_player_name} --session ${auth_session}
+ * --version ${version_name} --gameDir ${game_directory} --assetsDir ${game_assets}"
+ */
+ QString minecraftArguments;
+ /*
+ * the minimum launcher version required by this version ... current is 4 (at point of writing)
+ */
+ int minimumLauncherVersion;
+ /*
+ * The main class to load first
+ */
+ QString mainClass;
+
+ // the list of libs. just the names for now. expand to full-blown strutures!
+ QStringList libraries;
+
+ // is this actually a legacy version? if so, none of the other stuff here will be ever used.
+ // added by FullVersionFactory
+ bool isLegacy;
+
+/*
+FIXME: add support for those rules here? Looks like a pile of quick hacks to me though.
+
+ "rules": [
+ {
+ "action": "allow"
+ },
+ {
+ "action": "disallow",
+ "os": {
+ "name": "osx",
+ "version": "^10\\.5\\.\\d$"
+ }
+ }
+ ],
+ "incompatibilityReason": "There is a bug in LWJGL which makes it incompatible with OSX 10.5.8. Please go to New Profile and use 1.5.2 for now. Sorry!"
+}
+*/
+ // QList<Rule> rules;
+}; \ No newline at end of file
diff --git a/libmultimc/include/fullversionfactory.h b/libmultimc/include/fullversionfactory.h
new file mode 100644
index 00000000..673a6a72
--- /dev/null
+++ b/libmultimc/include/fullversionfactory.h
@@ -0,0 +1,23 @@
+#pragma once
+#include <QtCore>
+
+struct FullVersion;
+
+class FullVersionFactory
+{
+public:
+ enum Error
+ {
+ AllOK, // all parsed OK
+ ParseError, // the file was corrupted somehow
+ UnsupportedVersion // the file was meant for a launcher version we don't support (yet)
+ } m_error;
+ QString error_string;
+
+public:
+ FullVersionFactory();
+ QSharedPointer<FullVersion> parse(QByteArray data);
+private:
+ QSharedPointer<FullVersion> parse4(QJsonObject root, QSharedPointer<FullVersion> product);
+ QStringList legacyWhitelist;
+}; \ No newline at end of file
diff --git a/libmultimc/include/library.h b/libmultimc/include/library.h
new file mode 100644
index 00000000..10ecb9f3
--- /dev/null
+++ b/libmultimc/include/library.h
@@ -0,0 +1,18 @@
+/* Copyright 2013 MultiMC Contributors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+