summaryrefslogtreecommitdiffstats
path: root/logic/InstanceFactory.cpp
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2015-02-01 03:08:25 +0100
committerPetr Mrázek <peterix@gmail.com>2015-04-12 20:57:16 +0200
commit154d19bb74f4c5fc1519aa40cd9dfd20244273a1 (patch)
tree1074077466171fa02ebc50e19ee0fc2257710401 /logic/InstanceFactory.cpp
parentc088d3bef0e18c6cd90db15720841705d53c754d (diff)
downloadMultiMC-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.cpp135
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;
- }
-}