diff --git a/src/game_starfield_en.ts b/src/game_starfield_en.ts index 38326b0..3113ee9 100644 --- a/src/game_starfield_en.ts +++ b/src/game_starfield_en.ts @@ -4,95 +4,50 @@ GameStarfield - + Starfield Support Plugin - + Adds support for the game Starfield. - + Show a warning when ESP plugins are enabled in the load order. - Show a warning when light plugins are enabled in the load order. - - - - - Show a warning when overlay-flagged plugins ar enabled in the load order. - - - - Show a warning when plugins.txt management is invalid. - - Bypass check for Plugins.txt Enabler. This may be useful if you use the ASI loader. - - - - + As of this release LOOT Starfield support is minimal to nonexistant. Toggle this to enable it anyway. - + You have active ESP plugins in Starfield - - You have active ESL plugins in Starfield - - - - - You have active overlay plugins - - - - + sTestFile entries are present - - Plugins.txt Enabler missing - - - - + <p>ESP plugins are not ideal for Starfield. In addition to being unable to sort them alongside ESM or master-flagged plugins, certain record references are always kept loaded by the game. This consumes unnecessary resources and limits the game's ability to load what it needs.</p><p>Ideally, plugins should be saved as ESM files upon release. It can also be released as an ESL plugin, however there are additional concerns with the way light plugins are currently handled and should only be used when absolutely certain about what you're doing.</p><p>Notably, xEdit does not currently support saving ESP files.</p><h4>Current ESPs:</h4><p>%1</p> - - <p>Light plugins work differently in Starfield. They use a different base form ID compared with standard plugin files.</p><p>What this means is that you can't just change a standard plugin to a light plugin at will, it can and will break any dependent plugin. If you do so, be absolutely certain no other plugins use that plugin as a master.</p><p>Notably, xEdit does not currently support saving or loading ESL files under these conditions.<p><h4>Current ESLs:</h4><p>%1</p> - - - - - <p>Overlay-flagged plugins are not currently recommended. In theory, they should allow you to update existing records without utilizing additional load order slots. Unfortunately, it appears that the game still allocates the slots as if these were standard plugins. Therefore, at the moment there is no real use for this plugin flag.</p><p>Notably, xEdit does not currently support saving or loading overlay-flagged files under these conditions.</p><h4>Current Overlays:</h4><p>%1</p> - - - - + <p>You have plugin managment enabled but you still have sTestFile settings in your StarfieldCustom.ini. These must be removed or the game will not read the plugins.txt file. Management is still disabled.</p> - - - <p>You have plugin management turned on but do not have the Plugins.txt Enabler SFSE plugin installed. Plugin file management for Starfield will not work without this SFSE plugin.</p> - - StarfieldModDataContent diff --git a/src/gamestarfield.cpp b/src/gamestarfield.cpp index 77781ca..27aca4b 100644 --- a/src/gamestarfield.cpp +++ b/src/gamestarfield.cpp @@ -41,12 +41,11 @@ bool GameStarfield::init(IOrganizer* moInfo) return false; } - auto dataArchives = - std::make_shared(myGamesPath(), gameDirectory()); + auto dataArchives = std::make_shared(this); registerFeature(std::make_shared(this)); registerFeature(dataArchives); registerFeature( - std::make_shared(myGamesPath(), "StarfieldCustom.ini")); + std::make_shared(this, "StarfieldCustom.ini")); registerFeature(std::make_shared(this)); registerFeature( std::make_shared(m_Organizer->gameFeatures())); diff --git a/src/starfielddataarchives.cpp b/src/starfielddataarchives.cpp index 175550a..d7eadae 100644 --- a/src/starfielddataarchives.cpp +++ b/src/starfielddataarchives.cpp @@ -3,11 +3,6 @@ #include "iprofile.h" #include -StarfieldDataArchives::StarfieldDataArchives(const QDir& myGamesDir, - const QDir& gamePath) - : GamebryoDataArchives(myGamesDir), m_GamePath(gamePath.absolutePath()) -{} - QStringList StarfieldDataArchives::vanillaArchives() const { return {"Starfield - Animations.ba2", @@ -71,11 +66,11 @@ QStringList StarfieldDataArchives::archives(const MOBase::IProfile* profile) con { QStringList result; - QString defaultIniFile = m_GamePath.absoluteFilePath("Starfield.ini"); + QString defaultIniFile = gameDirectory().absoluteFilePath("Starfield.ini"); QString customIniFile = profile->localSettingsEnabled() ? QDir(profile->absolutePath()).absoluteFilePath("StarfieldCustom.ini") - : m_LocalGameDir.absoluteFilePath("StarfieldCustom.ini"); + : localGameDirectory().absoluteFilePath("StarfieldCustom.ini"); QStringList archiveSettings = {"SResourceArchiveList", "sResourceIndexFileList", "SResourceArchiveMemoryCacheList", "sResourceStartUpArchiveList", diff --git a/src/starfielddataarchives.h b/src/starfielddataarchives.h index f889c00..c83943f 100644 --- a/src/starfielddataarchives.h +++ b/src/starfielddataarchives.h @@ -1,23 +1,18 @@ #ifndef STARFIELDDATAARCHIVES_H #define STARFIELDDATAARCHIVES_H -#include "gamebryodataarchives.h" - -namespace MOBase -{ -class IProfile; -} - #include #include +#include "gamebryodataarchives.h" + +class GameGamebryo; + class StarfieldDataArchives : public GamebryoDataArchives { - public: - StarfieldDataArchives(const QDir& myGamesDir, const QDir& gamePath); + using GamebryoDataArchives::GamebryoDataArchives; -public: virtual QStringList vanillaArchives() const override; virtual QStringList archives(const MOBase::IProfile* profile) const override; virtual void addArchive(MOBase::IProfile* profile, int index, @@ -25,9 +20,6 @@ class StarfieldDataArchives : public GamebryoDataArchives virtual void removeArchive(MOBase::IProfile* profile, const QString& archiveName) override; -protected: - const QDir m_GamePath; - private: virtual void writeArchiveList(MOBase::IProfile* profile, const QStringList& before) override;