From bf7b07050873770bd0b2ed5d73965b5a88d7a351 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sun, 8 Jun 2014 20:11:09 +0200 Subject: Show texture/resource packs when appropriate. --- logic/BaseInstance.h | 14 ++++++++++++++ logic/LegacyInstance.cpp | 3 ++- logic/LegacyInstance.h | 5 +++++ logic/OneSixInstance.cpp | 29 ++++++++++++++++++++--------- logic/OneSixInstance.h | 6 ++++-- 5 files changed, 45 insertions(+), 12 deletions(-) (limited to 'logic') diff --git a/logic/BaseInstance.h b/logic/BaseInstance.h index bdd2f1be..2eba1fff 100644 --- a/logic/BaseInstance.h +++ b/logic/BaseInstance.h @@ -25,6 +25,7 @@ #include "logic/BaseVersionList.h" #include "logic/auth/MojangAccount.h" +class ModList; class QDialog; class QDir; class Task; @@ -110,6 +111,19 @@ public: virtual bool shouldUpdate() const = 0; virtual void setShouldUpdate(bool val) = 0; + ////// Mod Lists ////// + virtual std::shared_ptr resourcePackList() + { + return nullptr; + } + virtual std::shared_ptr texturePackList() + { + return nullptr; + } + + /// Traits. Normally inside the version, depends on instance implementation. + virtual QSet traits() = 0; + /// Get the curent base jar of this instance. By default, it's the /// versions/$version/$version.jar QString baseJar() const; diff --git a/logic/LegacyInstance.cpp b/logic/LegacyInstance.cpp index 8603022a..15332c41 100644 --- a/logic/LegacyInstance.cpp +++ b/logic/LegacyInstance.cpp @@ -31,6 +31,7 @@ #include "gui/pages/LegacyUpgradePage.h" #include "gui/pages/ModFolderPage.h" #include "gui/pages/LegacyJarModPage.h" +#include LegacyInstance::LegacyInstance(const QString &rootDir, SettingsObject *settings, QObject *parent) @@ -50,7 +51,7 @@ QList LegacyInstance::getPages() values.append(new LegacyJarModPage(this)); values.append(new ModFolderPage(loaderModList(), "mods", "centralmods", tr("Loader Mods"))); values.append(new ModFolderPage(coreModList(), "coremods", "viewfolder", tr("Core Mods"))); - values.append(new ModFolderPage(texturePackList(), "texturepacks", "viewfolder", tr("Texture Packs"))); + values.append(new TexturePackPage(this)); return values; } diff --git a/logic/LegacyInstance.h b/logic/LegacyInstance.h index 82dd4fee..d367b990 100644 --- a/logic/LegacyInstance.h +++ b/logic/LegacyInstance.h @@ -80,6 +80,11 @@ public: return false; } + virtual QSet traits() + { + return {"legacy-instance", "texturepacks"}; + }; + virtual bool shouldUpdate() const override; virtual void setShouldUpdate(bool val) override; virtual std::shared_ptr doUpdate() override; diff --git a/logic/OneSixInstance.cpp b/logic/OneSixInstance.cpp index 58781c15..d306470c 100644 --- a/logic/OneSixInstance.cpp +++ b/logic/OneSixInstance.cpp @@ -32,6 +32,8 @@ #include "gui/pagedialog/PageDialog.h" #include "gui/pages/VersionPage.h" #include +#include +#include OneSixInstance::OneSixInstance(const QString &rootDir, SettingsObject *settings, QObject *parent) @@ -60,8 +62,8 @@ QList OneSixInstance::getPages() values.append(new VersionPage(this)); values.append(new ModFolderPage(loaderModList(), "mods", "centralmods", tr("Loader Mods"))); values.append(new ModFolderPage(coreModList(), "coremods", "viewfolder", tr("Core Mods"))); - values.append(new ModFolderPage(resourcePackList(), "resourcepacks", "viewfolder", tr("Resource Packs"))); - values.append(new ModFolderPage(texturePackList(), "texturepacks", "viewfolder", tr("Texture Packs"))); + values.append(new ResourcePackPage(this)); + values.append(new TexturePackPage(this)); return values; } @@ -70,6 +72,17 @@ QString OneSixInstance::dialogTitle() return tr("Edit Instance (%1)").arg(name()); } +QSet OneSixInstance::traits() +{ + auto version = getFullVersion(); + if (!version) + { + return {"version-incomplete"}; + } + else + return version->traits; +} + std::shared_ptr OneSixInstance::doUpdate() { return std::shared_ptr(new OneSixUpdate(this)); @@ -234,11 +247,11 @@ bool OneSixInstance::prepareForLaunch(AuthSessionPtr session, QString &launchScr } launchScript += "cp " + versionsPath().absoluteFilePath(minecraftjarpath) + "\n"; } - if(!version->mainClass.isEmpty()) + if (!version->mainClass.isEmpty()) { launchScript += "mainClass " + version->mainClass + "\n"; } - if(!version->appletClass.isEmpty()) + if (!version->appletClass.isEmpty()) { launchScript += "appletClass " + version->appletClass + "\n"; } @@ -261,7 +274,7 @@ bool OneSixInstance::prepareForLaunch(AuthSessionPtr session, QString &launchScr launchScript += "windowTitle " + windowTitle() + "\n"; launchScript += "windowParams " + windowParams + "\n"; } - + // legacy auth { launchScript += "userName " + session->player_name + "\n"; @@ -278,7 +291,7 @@ bool OneSixInstance::prepareForLaunch(AuthSessionPtr session, QString &launchScr } launchScript += "natives " + natives_dir.absolutePath() + "\n"; } - + // traits. including legacyLaunch and others ;) for (auto trait : version->traits) { @@ -398,9 +411,8 @@ void OneSixInstance::reloadVersion() d->m_flags.remove(VersionBrokenFlag); emit versionReloaded(); } - catch (VersionIncomplete & error) + catch (VersionIncomplete &error) { - } catch (MMCError &error) { @@ -532,7 +544,6 @@ QString OneSixInstance::texturePacksDir() const return PathCombine(minecraftRoot(), "texturepacks"); } - QString OneSixInstance::instanceConfigFolder() const { return PathCombine(minecraftRoot(), "config"); diff --git a/logic/OneSixInstance.h b/logic/OneSixInstance.h index fa98ccf0..405cfe97 100644 --- a/logic/OneSixInstance.h +++ b/logic/OneSixInstance.h @@ -38,9 +38,11 @@ public: ////// Mod Lists ////// std::shared_ptr loaderModList(); std::shared_ptr coreModList(); - std::shared_ptr resourcePackList(); - std::shared_ptr texturePackList(); + std::shared_ptr resourcePackList() override; + std::shared_ptr texturePackList() override; + virtual QSet traits(); + ////// Directories and files ////// QString jarModsDir() const; QString resourcePacksDir() const; -- cgit v1.2.3