From f60a19e06581669a42000e39a8589b93c92580eb Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Thu, 27 Jun 2024 15:49:41 +1000 Subject: [PATCH] optional sbinit option to disable UGC (workshop mods) --- source/client/StarClientApplication.cpp | 5 +++-- source/game/StarRoot.cpp | 4 ++++ source/game/StarRoot.hpp | 5 +++++ source/game/StarRootLoader.cpp | 1 + 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/source/client/StarClientApplication.cpp b/source/client/StarClientApplication.cpp index 9b53a29..0095a8e 100644 --- a/source/client/StarClientApplication.cpp +++ b/source/client/StarClientApplication.cpp @@ -686,10 +686,11 @@ void ClientApplication::setError(String const& error, std::exception const& e) { void ClientApplication::updateMods(float dt) { m_cinematicOverlay->update(dt); auto ugcService = appController()->userGeneratedContentService(); - if (ugcService) { + if (ugcService && m_root->settings().includeUGC) { + Logger::info("Checking for user generated content..."); if (ugcService->triggerContentDownload()) { StringList modDirectories; - for (auto contentId : ugcService->subscribedContentIds()) { + for (auto& contentId : ugcService->subscribedContentIds()) { if (auto contentDirectory = ugcService->contentDownloadDirectory(contentId)) { Logger::info("Loading mods from user generated content with id '{}' from directory '{}'", contentId, *contentDirectory); modDirectories.append(*contentDirectory); diff --git a/source/game/StarRoot.cpp b/source/game/StarRoot.cpp index a1c43ae..235a1df 100644 --- a/source/game/StarRoot.cpp +++ b/source/game/StarRoot.cpp @@ -570,6 +570,10 @@ CollectionDatabaseConstPtr Root::collectionDatabase() { return loadMember(m_collectionDatabase, m_collectionDatabaseMutex, "CollectionDatabase"); } +Root::Settings& Root::settings() { + return m_settings; +} + StringList Root::scanForAssetSources(StringList const& directories, StringList const& manual) { struct AssetSource { String path; diff --git a/source/game/StarRoot.hpp b/source/game/StarRoot.hpp index 8c71a02..2079a5e 100644 --- a/source/game/StarRoot.hpp +++ b/source/game/StarRoot.hpp @@ -88,6 +88,9 @@ public: // given. bool quiet; + // If true, loads UGC from platform services if available. True by default. + bool includeUGC; + // If given, will write changed configuration to the given file within the // storage directory. Maybe runtimeConfigFile; @@ -180,6 +183,8 @@ public: RadioMessageDatabaseConstPtr radioMessageDatabase(); CollectionDatabaseConstPtr collectionDatabase(); + Settings& settings(); + private: static StringList scanForAssetSources(StringList const& directories, StringList const& manual = {}); template diff --git a/source/game/StarRootLoader.cpp b/source/game/StarRootLoader.cpp index 81328da..bc0bce3 100644 --- a/source/game/StarRootLoader.cpp +++ b/source/game/StarRootLoader.cpp @@ -176,6 +176,7 @@ Root::Settings RootLoader::rootSettingsForOptions(Options const& options) const rootSettings.logDirectory = bootConfig.optString("logDirectory"); rootSettings.logFile = options.parameters.value("logfile").maybeFirst().orMaybe(m_defaults.logFile); rootSettings.logFileBackups = bootConfig.getUInt("logFileBackups", 10); + rootSettings.includeUGC = bootConfig.getBool("includeUGC", true); if (auto ll = options.parameters.value("loglevel").maybeFirst()) rootSettings.logLevel = LogLevelNames.getLeft(*ll);