diff options
author | Petr Mrázek <peterix@gmail.com> | 2015-02-01 03:08:25 +0100 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2015-04-12 20:57:16 +0200 |
commit | 154d19bb74f4c5fc1519aa40cd9dfd20244273a1 (patch) | |
tree | 1074077466171fa02ebc50e19ee0fc2257710401 /logic/InstanceFactory.cpp | |
parent | c088d3bef0e18c6cd90db15720841705d53c754d (diff) | |
download | MultiMC-154d19bb74f4c5fc1519aa40cd9dfd20244273a1.tar MultiMC-154d19bb74f4c5fc1519aa40cd9dfd20244273a1.tar.gz MultiMC-154d19bb74f4c5fc1519aa40cd9dfd20244273a1.tar.lz MultiMC-154d19bb74f4c5fc1519aa40cd9dfd20244273a1.tar.xz MultiMC-154d19bb74f4c5fc1519aa40cd9dfd20244273a1.zip |
SCRATCH eliminate InstanceFactory
Diffstat (limited to 'logic/InstanceFactory.cpp')
-rw-r--r-- | logic/InstanceFactory.cpp | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/logic/InstanceFactory.cpp b/logic/InstanceFactory.cpp deleted file mode 100644 index 2f1748cc..00000000 --- a/logic/InstanceFactory.cpp +++ /dev/null @@ -1,135 +0,0 @@ -/* Copyright 2013-2015 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. - */ - -#include <QDir> -#include <QFileInfo> - -#include "logic/settings/INIFile.h" -#include "logic/settings/INISettingsObject.h" -#include "logic/settings/Setting.h" - -#include <pathutils.h> -#include "logger/QsLog.h" - -#include "logic/InstanceFactory.h" - -#include "logic/BaseInstance.h" -#include "logic/LegacyInstance.h" -#include "logic/OneSixInstance.h" -#include "logic/OneSixInstance.h" -#include "logic/BaseVersion.h" -#include "logic/minecraft/MinecraftVersion.h" - -InstanceFactory InstanceFactory::loader; - -InstanceFactory::InstanceFactory() : QObject(NULL) -{ -} - -InstanceFactory::InstLoadError InstanceFactory::loadInstance(InstancePtr &inst, - const QString &instDir) -{ - auto m_settings = new INISettingsObject(PathCombine(instDir, "instance.cfg")); - - m_settings->registerSetting("InstanceType", "Legacy"); - - QString inst_type = m_settings->get("InstanceType").toString(); - - // FIXME: replace with a map lookup, where instance classes register their types - if (inst_type == "OneSix" || inst_type == "Nostalgia") - { - inst.reset(new OneSixInstance(instDir, m_settings)); - } - else if (inst_type == "Legacy") - { - inst.reset(new LegacyInstance(instDir, m_settings)); - } - else - { - return InstanceFactory::UnknownLoadError; - } - inst->init(); - return NoLoadError; -} - -InstanceFactory::InstCreateError -InstanceFactory::createInstance(InstancePtr &inst, BaseVersionPtr version, const QString &instDir) -{ - QDir rootDir(instDir); - - QLOG_DEBUG() << instDir.toUtf8(); - if (!rootDir.exists() && !rootDir.mkpath(".")) - { - QLOG_ERROR() << "Can't create instance folder" << instDir; - return InstanceFactory::CantCreateDir; - } - - if (!version) - { - QLOG_ERROR() << "Can't create instance for non-existing MC version"; - return InstanceFactory::NoSuchVersion; - } - - auto m_settings = new INISettingsObject(PathCombine(instDir, "instance.cfg")); - m_settings->registerSetting("InstanceType", "Legacy"); - - auto minecraftVersion = std::dynamic_pointer_cast<MinecraftVersion>(version); - if(minecraftVersion) - { - auto mcVer = std::dynamic_pointer_cast<MinecraftVersion>(version); - m_settings->set("InstanceType", "OneSix"); - inst.reset(new OneSixInstance(instDir, m_settings)); - inst->setIntendedVersionId(version->descriptor()); - inst->init(); - return InstanceFactory::NoCreateError; - } - delete m_settings; - return InstanceFactory::NoSuchVersion; -} - -InstanceFactory::InstCreateError InstanceFactory::copyInstance(InstancePtr &newInstance, - InstancePtr &oldInstance, - const QString &instDir) -{ - QDir rootDir(instDir); - - QLOG_DEBUG() << instDir.toUtf8(); - if (!copyPath(oldInstance->instanceRoot(), instDir)) - { - rootDir.removeRecursively(); - return InstanceFactory::CantCreateDir; - } - - INISettingsObject settings_obj(PathCombine(instDir, "instance.cfg")); - settings_obj.registerSetting("InstanceType", "Legacy"); - QString inst_type = settings_obj.get("InstanceType").toString(); - - oldInstance->copy(instDir); - - auto error = loadInstance(newInstance, instDir); - - switch (error) - { - case NoLoadError: - return NoCreateError; - case NotAnInstance: - rootDir.removeRecursively(); - return CantCreateDir; - default: - case UnknownLoadError: - rootDir.removeRecursively(); - return UnknownCreateError; - } -} |