From 234f57b8e60fcae35bbfdf206655f4f438b99191 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Wed, 11 Feb 2015 19:56:55 +0100 Subject: [PATCH] NOISSUE Add NullInstance for instances that can't be loaded --- logic/CMakeLists.txt | 1 + logic/InstanceList.cpp | 3 ++- logic/NullInstance.h | 61 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 logic/NullInstance.h diff --git a/logic/CMakeLists.txt b/logic/CMakeLists.txt index cf55695d..08a6f3a8 100644 --- a/logic/CMakeLists.txt +++ b/logic/CMakeLists.txt @@ -13,6 +13,7 @@ SET(LOGIC_SOURCES BaseProcess.cpp BaseInstance.h BaseInstance.cpp + NullInstance.h MMCError.h # WARNING: globals live here diff --git a/logic/InstanceList.cpp b/logic/InstanceList.cpp index 013de31e..a65d9f56 100644 --- a/logic/InstanceList.cpp +++ b/logic/InstanceList.cpp @@ -37,6 +37,7 @@ #include "minecraft/MinecraftVersion.h" #include "settings/INISettingsObject.h" #include "ftb/FTBPlugin.h" +#include "NullInstance.h" const static int GROUP_FILE_FORMAT_VERSION = 1; @@ -454,7 +455,7 @@ InstanceList::loadInstance(InstancePtr &inst, const QString &instDir) } else { - return InstanceList::UnknownLoadError; + inst.reset(new NullInstance(m_globalSettings, instanceSettings, instDir)); } inst->init(); return NoLoadError; diff --git a/logic/NullInstance.h b/logic/NullInstance.h new file mode 100644 index 00000000..cf8c7fce --- /dev/null +++ b/logic/NullInstance.h @@ -0,0 +1,61 @@ +#include "BaseInstance.h" + +class NullInstance: public BaseInstance +{ +public: + NullInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr settings, const QString& rootDir) + :BaseInstance(globalSettings, settings, rootDir) + { + setFlag(BaseInstance::VersionBrokenFlag); + } + virtual ~NullInstance() {}; + virtual bool setIntendedVersionId(QString) override + { + return false; + } + virtual void cleanupAfterRun() override + { + } + virtual QString currentVersionId() const + { + return "Null"; + }; + virtual QString intendedVersionId() const + { + return "Null"; + }; + virtual void init() override + { + }; + virtual QString getStatusbarDescription() override + { + return tr("Unknown instance type"); + }; + virtual bool shouldUpdate() const override + { + return false; + }; + virtual QSet< QString > traits() + { + return {}; + }; + virtual QString instanceConfigFolder() const + { + return instanceRoot(); + }; + virtual BaseProcess* prepareForLaunch(AuthSessionPtr) + { + return nullptr; + } + virtual std::shared_ptr< Task > doUpdate() + { + return nullptr; + } + virtual void setShouldUpdate(bool) + { + }; + virtual std::shared_ptr< BaseVersionList > versionList() const + { + return nullptr; + }; +};