diff options
Diffstat (limited to 'logic/VersionFinal.cpp')
-rw-r--r-- | logic/VersionFinal.cpp | 75 |
1 files changed, 49 insertions, 26 deletions
diff --git a/logic/VersionFinal.cpp b/logic/VersionFinal.cpp index dedf2ce5..18bd360b 100644 --- a/logic/VersionFinal.cpp +++ b/logic/VersionFinal.cpp @@ -21,16 +21,7 @@ #include "OneSixVersionBuilder.h" #include "OneSixInstance.h" - -template <typename A, typename B> QMap<A, B> invert(const QMap<B, A> &in) -{ - QMap<A, B> out; - for (auto it = in.begin(); it != in.end(); ++it) - { - out.insert(it.value(), it.key()); - } - return out; -} +#include <pathutils.h> VersionFinal::VersionFinal(OneSixInstance *instance, QObject *parent) : QAbstractListModel(parent), m_instance(instance) @@ -38,11 +29,10 @@ VersionFinal::VersionFinal(OneSixInstance *instance, QObject *parent) clear(); } -void VersionFinal::reload(const bool onlyVanilla, const QStringList &external) +void VersionFinal::reload(const QStringList &external) { - //FIXME: source of epic failure. beginResetModel(); - OneSixVersionBuilder::build(this, m_instance, onlyVanilla, external); + OneSixVersionBuilder::build(this, m_instance, external); reapply(true); endResetModel(); } @@ -60,6 +50,8 @@ void VersionFinal::clear() mainClass.clear(); libraries.clear(); tweakers.clear(); + jarMods.clear(); + traits.clear(); } bool VersionFinal::canRemove(const int index) const @@ -119,6 +111,11 @@ VersionFilePtr VersionFinal::versionFile(const QString &id) return 0; } +bool VersionFinal::hasJarMods() +{ + return !jarMods.isEmpty(); +} + bool VersionFinal::hasFtbPack() { return versionFile("org.multimc.ftb.pack.json") != nullptr; @@ -129,6 +126,36 @@ bool VersionFinal::removeFtbPack() return remove("org.multimc.ftb.pack.json"); } +bool VersionFinal::isVanilla() +{ + QDir patches(PathCombine(m_instance->instanceRoot(), "patches/")); + return versionFiles.size() > 1 || QFile::exists(PathCombine(m_instance->instanceRoot(), "custom.json")); +} + +bool VersionFinal::revertToVanilla() +{ + beginResetModel(); + auto it = versionFiles.begin(); + while (it != versionFiles.end()) + { + if ((*it)->fileId != "org.multimc.version.json") + { + QFile::remove((*it)->filename); + it = versionFiles.erase(it); + } + else + it++; + } + reapply(true); + endResetModel(); + return true; +} + +bool VersionFinal::usesLegacyCustomJson() +{ + return QFile::exists(PathCombine(m_instance->instanceRoot(), "custom.json")); +} + QList<std::shared_ptr<OneSixLibrary> > VersionFinal::getActiveNormalLibs() { QList<std::shared_ptr<OneSixLibrary> > output; @@ -229,15 +256,6 @@ int VersionFinal::columnCount(const QModelIndex &parent) const return 2; } -bool VersionFinal::isCustom() -{ - return QDir(m_instance->instanceRoot()).exists("custom.json"); -} -bool VersionFinal::revertToBase() -{ - return QDir(m_instance->instanceRoot()).remove("custom.json"); -} - QMap<QString, int> VersionFinal::getExistingOrder() const { @@ -356,8 +374,10 @@ void VersionFinal::finalize() { assets = "legacy"; } - if (minecraftArguments.isEmpty()) + auto finalizeArguments = [&]( QString & minecraftArguments, const QString & processArguments ) -> void { + if (!minecraftArguments.isEmpty()) + return; QString toCompare = processArguments.toLower(); if (toCompare == "legacy") { @@ -370,8 +390,11 @@ void VersionFinal::finalize() else if (toCompare == "username_session_version") { minecraftArguments = "--username ${auth_player_name} " - "--session ${auth_session} " - "--version ${profile_name}"; + "--session ${auth_session} " + "--version ${profile_name}"; } - } + }; + finalizeArguments(vanillaMinecraftArguments, vanillaProcessArguments); + finalizeArguments(minecraftArguments, processArguments); } + |