From 791221e923586bb717396ecf18bd13e57034df99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Tue, 27 Jan 2015 22:31:07 +0100 Subject: NOISSUE Refactors and moving of things --- logic/InstanceFactory.cpp | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) (limited to 'logic/InstanceFactory.cpp') diff --git a/logic/InstanceFactory.cpp b/logic/InstanceFactory.cpp index 0462aec0..857d3a09 100644 --- a/logic/InstanceFactory.cpp +++ b/logic/InstanceFactory.cpp @@ -27,12 +27,13 @@ #include "logic/BaseInstance.h" #include "logic/LegacyInstance.h" -#include "logic/LegacyFTBInstance.h" #include "logic/OneSixInstance.h" -#include "logic/OneSixFTBInstance.h" #include "logic/OneSixInstance.h" #include "logic/BaseVersion.h" #include "logic/minecraft/MinecraftVersion.h" +#include "logic/ftb/LegacyFTBInstance.h" +#include "logic/ftb/OneSixFTBInstance.h" +#include "logic/ftb/FTBVersion.h" InstanceFactory InstanceFactory::loader; @@ -74,8 +75,8 @@ InstanceFactory::InstLoadError InstanceFactory::loadInstance(InstancePtr &inst, return NoLoadError; } -InstanceFactory::InstCreateError InstanceFactory::createInstance(InstancePtr &inst, BaseVersionPtr version, - const QString &instDir, const InstanceFactory::InstType type) +InstanceFactory::InstCreateError +InstanceFactory::createInstance(InstancePtr &inst, BaseVersionPtr version, const QString &instDir) { QDir rootDir(instDir); @@ -85,8 +86,8 @@ InstanceFactory::InstCreateError InstanceFactory::createInstance(InstancePtr &in QLOG_ERROR() << "Can't create instance folder" << instDir; return InstanceFactory::CantCreateDir; } - auto mcVer = std::dynamic_pointer_cast(version); - if (!mcVer) + + if (!version) { QLOG_ERROR() << "Can't create instance for non-existing MC version"; return InstanceFactory::NoSuchVersion; @@ -95,37 +96,37 @@ InstanceFactory::InstCreateError InstanceFactory::createInstance(InstancePtr &in auto m_settings = new INISettingsObject(PathCombine(instDir, "instance.cfg")); m_settings->registerSetting("InstanceType", "Legacy"); - if (type == NormalInst) + auto minecraftVersion = std::dynamic_pointer_cast(version); + if(minecraftVersion) { + auto mcVer = std::dynamic_pointer_cast(version); m_settings->set("InstanceType", "OneSix"); inst.reset(new OneSixInstance(instDir, m_settings)); inst->setIntendedVersionId(version->descriptor()); + inst->init(); + return InstanceFactory::NoCreateError; } - else if (type == FTBInstance) + auto ftbVersion = std::dynamic_pointer_cast(version); + if(ftbVersion) { - if(mcVer->usesLegacyLauncher()) + auto mcversion = ftbVersion->getMinecraftVersion(); + if (mcversion->usesLegacyLauncher()) { m_settings->set("InstanceType", "LegacyFTB"); inst.reset(new LegacyFTBInstance(instDir, m_settings)); - inst->setIntendedVersionId(version->descriptor()); + inst->setIntendedVersionId(mcversion->descriptor()); } else { m_settings->set("InstanceType", "OneSixFTB"); inst.reset(new OneSixFTBInstance(instDir, m_settings)); - inst->setIntendedVersionId(version->descriptor()); + inst->setIntendedVersionId(mcversion->descriptor()); + inst->init(); } + return InstanceFactory::NoCreateError; } - else - { - delete m_settings; - return InstanceFactory::NoSuchVersion; - } - - inst->init(); - - // FIXME: really, how do you even know? - return InstanceFactory::NoCreateError; + delete m_settings; + return InstanceFactory::NoSuchVersion; } InstanceFactory::InstCreateError InstanceFactory::copyInstance(InstancePtr &newInstance, -- cgit v1.2.3