From b6d455a02bd338e9dc0faa09d4d8177ecd8d569a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sun, 10 Apr 2016 15:53:05 +0200 Subject: NOISSUE reorganize and document libraries --- api/logic/minecraft/VersionFile.h | 195 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 195 insertions(+) create mode 100644 api/logic/minecraft/VersionFile.h (limited to 'api/logic/minecraft/VersionFile.h') diff --git a/api/logic/minecraft/VersionFile.h b/api/logic/minecraft/VersionFile.h new file mode 100644 index 00000000..1b692f0f --- /dev/null +++ b/api/logic/minecraft/VersionFile.h @@ -0,0 +1,195 @@ +#pragma once + +#include +#include +#include +#include + +#include +#include "minecraft/OpSys.h" +#include "minecraft/Rule.h" +#include "ProfilePatch.h" +#include "Library.h" +#include "JarMod.h" + +class MinecraftProfile; +class VersionFile; +struct MojangDownloadInfo; +struct MojangAssetIndexInfo; + +typedef std::shared_ptr VersionFilePtr; +class VersionFile : public ProfilePatch +{ + friend class MojangVersionFormat; + friend class OneSixVersionFormat; +public: /* methods */ + virtual void applyTo(MinecraftProfile *profile) override; + virtual bool isMinecraftVersion() override; + virtual bool hasJarMods() override; + virtual int getOrder() override + { + return order; + } + virtual void setOrder(int order) override + { + this->order = order; + } + virtual QList getJarMods() override + { + return jarMods; + } + virtual QString getID() override + { + return fileId; + } + virtual QString getName() override + { + return name; + } + virtual QString getVersion() override + { + return version; + } + virtual QString getFilename() override + { + return filename; + } + virtual QDateTime getReleaseDateTime() override + { + return m_releaseTime; + } + VersionSource getVersionSource() override + { + return Local; + } + + std::shared_ptr getVersionFile() override + { + return std::dynamic_pointer_cast(shared_from_this()); + } + + virtual bool isCustom() override + { + return !m_isVanilla; + }; + virtual bool isCustomizable() override + { + return m_isCustomizable; + } + virtual bool isRemovable() override + { + return m_isRemovable; + } + virtual bool isRevertible() override + { + return m_isRevertible; + } + virtual bool isMoveable() override + { + return m_isMovable; + } + virtual bool isEditable() override + { + return isCustom(); + } + virtual bool isVersionChangeable() override + { + return false; + } + + void setVanilla (bool state) + { + m_isVanilla = state; + } + void setRemovable (bool state) + { + m_isRemovable = state; + } + void setRevertible (bool state) + { + m_isRevertible = state; + } + void setCustomizable (bool state) + { + m_isCustomizable = state; + } + void setMovable (bool state) + { + m_isMovable = state; + } + + +public: /* data */ + /// MultiMC: order hint for this version file if no explicit order is set + int order = 0; + + // Flags for UI and version file manipulation in general + bool m_isVanilla = false; + bool m_isRemovable = false; + bool m_isRevertible = false; + bool m_isCustomizable = false; + bool m_isMovable = false; + + /// MultiMC: filename of the file this was loaded from + QString filename; + + /// MultiMC: human readable name of this package + QString name; + + /// MultiMC: package ID of this package + QString fileId; + + /// MultiMC: version of this package + QString version; + + /// MultiMC: dependency on a Minecraft version + QString dependsOnMinecraftVersion; + + /// Mojang: used to version the Mojang version format + int minimumLauncherVersion = -1; + + /// Mojang: version of Minecraft this is + QString minecraftVersion; + + /// Mojang: class to launch Minecraft with + QString mainClass; + + /// MultiMC: DEPRECATED class to launch legacy Minecraft with (ambed in a custom window) + QString appletClass; + + /// Mojang: Minecraft launch arguments (may contain placeholders for variable substitution) + QString minecraftArguments; + + /// Mojang: type of the Minecraft version + QString type; + + /// Mojang: the time this version was actually released by Mojang + QDateTime m_releaseTime; + + /// Mojang: the time this version was last updated by Mojang + QDateTime m_updateTime; + + /// Mojang: DEPRECATED asset group to be used with Minecraft + QString assets; + + /// MultiMC: list of tweaker mod arguments for launchwrapper + QStringList addTweakers; + + /// Mojang: list of libraries to add to the version + QList libraries; + + /// MultiMC: list of attached traits of this version file - used to enable features + QSet traits; + + /// MultiMC: list of jar mods added to this version + QList jarMods; + +public: + // Mojang: list of 'downloads' - client jar, server jar, windows server exe, maybe more. + QMap > mojangDownloads; + + // Mojang: extended asset index download information + std::shared_ptr mojangAssetIndex; +}; + + -- cgit v1.2.3