aboutsummaryrefslogtreecommitdiff
path: root/libs/game_bethesda/src/games/enderal
diff options
context:
space:
mode:
authorSulfurNitride <SulfurNitride@users.noreply.github.com>2026-02-17 23:59:40 -0600
committerSulfurNitride <SulfurNitride@users.noreply.github.com>2026-02-17 23:59:48 -0600
commit480a57cf037a46f176128e6c94aa5616fcf704a3 (patch)
tree35be94099e2669f518c623acdf8fe23ee82e55a8 /libs/game_bethesda/src/games/enderal
parent91e1d7f9f03ab3fd77cee94c1eac2abf89254e50 (diff)
Fix Wine prefix deployment, INI handling, and data directory paths
- Fix data directory path to use ~/.var/app/com.fluorine.manager consistently (was ~/.local/share/fluorine in committed code) - Fix VFS helper path in fuseconnector.cpp to use fluorineDataDir() - Fix localAppFolder() to resolve Wine prefix AppData/Local on Linux instead of returning XDG ~/.local/share - Add localAppName() virtual method for correct AppData folder mapping (Enderal→"enderal", Nehrim→"Oblivion") - Fix mergeTweak() to use direct INI parser instead of QSettings which corrupts backslashes and URL-encodes spaces in keys - Make resolveWineDataDirName() more robust with existence checks and fallback chain (documentsDirectory → gameShortName → gameName) - Add comprehensive debug logging throughout Wine prefix deployment - Fix INI case handling: copy instead of symlink for case-mismatched INIs, ensure both proper-case and lowercase aliases exist - Remove native build script (Flatpak only) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'libs/game_bethesda/src/games/enderal')
-rw-r--r--libs/game_bethesda/src/games/enderal/enderalbsainvalidation.cpp2
-rw-r--r--libs/game_bethesda/src/games/enderal/enderaldataarchives.cpp8
-rw-r--r--libs/game_bethesda/src/games/enderal/gameenderal.cpp24
-rw-r--r--libs/game_bethesda/src/games/enderal/gameenderal.h1
4 files changed, 21 insertions, 14 deletions
diff --git a/libs/game_bethesda/src/games/enderal/enderalbsainvalidation.cpp b/libs/game_bethesda/src/games/enderal/enderalbsainvalidation.cpp
index 5564075..8fb10c6 100644
--- a/libs/game_bethesda/src/games/enderal/enderalbsainvalidation.cpp
+++ b/libs/game_bethesda/src/games/enderal/enderalbsainvalidation.cpp
@@ -2,7 +2,7 @@
EnderalBSAInvalidation::EnderalBSAInvalidation(MOBase::DataArchives* dataArchives,
MOBase::IPluginGame const* game)
- : GamebryoBSAInvalidation(dataArchives, "enderal.ini", game)
+ : GamebryoBSAInvalidation(dataArchives, "Enderal.ini", game)
{}
QString EnderalBSAInvalidation::invalidationBSAName() const
diff --git a/libs/game_bethesda/src/games/enderal/enderaldataarchives.cpp b/libs/game_bethesda/src/games/enderal/enderaldataarchives.cpp
index 3ac4ee0..1a7e22c 100644
--- a/libs/game_bethesda/src/games/enderal/enderaldataarchives.cpp
+++ b/libs/game_bethesda/src/games/enderal/enderaldataarchives.cpp
@@ -16,8 +16,8 @@ QStringList EnderalDataArchives::archives(const MOBase::IProfile* profile) const
QStringList result;
QString iniFile = profile->localSettingsEnabled()
- ? QDir(profile->absolutePath()).absoluteFilePath("enderal.ini")
- : localGameDirectory().absoluteFilePath("enderal.ini");
+ ? QDir(profile->absolutePath()).absoluteFilePath("Enderal.ini")
+ : localGameDirectory().absoluteFilePath("Enderal.ini");
result.append(getArchivesFromKey(iniFile, "SResourceArchiveList"));
result.append(getArchivesFromKey(iniFile, "SResourceArchiveList2"));
@@ -30,8 +30,8 @@ void EnderalDataArchives::writeArchiveList(MOBase::IProfile* profile,
QString list = before.join(", ");
QString iniFile = profile->localSettingsEnabled()
- ? QDir(profile->absolutePath()).absoluteFilePath("enderal.ini")
- : localGameDirectory().absoluteFilePath("enderal.ini");
+ ? QDir(profile->absolutePath()).absoluteFilePath("Enderal.ini")
+ : localGameDirectory().absoluteFilePath("Enderal.ini");
if (list.length() > 255) {
int splitIdx = list.lastIndexOf(",", 256);
setArchivesToKey(iniFile, "SResourceArchiveList", list.mid(0, splitIdx));
diff --git a/libs/game_bethesda/src/games/enderal/gameenderal.cpp b/libs/game_bethesda/src/games/enderal/gameenderal.cpp
index fb4e1d7..959d545 100644
--- a/libs/game_bethesda/src/games/enderal/gameenderal.cpp
+++ b/libs/game_bethesda/src/games/enderal/gameenderal.cpp
@@ -51,7 +51,7 @@ bool GameEnderal::init(IOrganizer* moInfo)
registerFeature(dataArchives);
registerFeature(std::make_shared<EnderalBSAInvalidation>(dataArchives.get(), this));
registerFeature(std::make_shared<GamebryoSaveGameInfo>(this));
- registerFeature(std::make_shared<EnderalLocalSavegames>(this, "enderal.ini"));
+ registerFeature(std::make_shared<EnderalLocalSavegames>(this, "Enderal.ini"));
registerFeature(std::make_shared<EnderalModDataChecker>(this));
registerFeature(std::make_shared<EnderalModDataContent>(moInfo->gameFeatures()));
registerFeature(std::make_shared<EnderalGamePlugins>(moInfo));
@@ -126,16 +126,16 @@ void GameEnderal::initializeProfile(const QDir& path, ProfileSettings settings)
if (settings.testFlag(IPluginGame::CONFIGURATION)) {
if (settings.testFlag(IPluginGame::PREFER_DEFAULTS) ||
- !QFileInfo(myGamesPath() + "/enderal.ini").exists()) {
+ !QFileInfo(myGamesPath() + "/Enderal.ini").exists()) {
// there is no default ini, actually they are going to put them in for us!
- copyToProfile(gameDirectory().absolutePath(), path, "enderal_default.ini",
- "enderal.ini");
- copyToProfile(gameDirectory().absolutePath(), path, "enderalprefs_default.ini",
- "enderalprefs.ini");
+ copyToProfile(gameDirectory().absolutePath(), path, "Enderal_default.ini",
+ "Enderal.ini");
+ copyToProfile(gameDirectory().absolutePath(), path, "EnderalPrefs_default.ini",
+ "EnderalPrefs.ini");
} else {
- copyToProfile(myGamesPath(), path, "enderal.ini");
- copyToProfile(myGamesPath(), path, "enderalprefs.ini");
+ copyToProfile(myGamesPath(), path, "Enderal.ini");
+ copyToProfile(myGamesPath(), path, "EnderalPrefs.ini");
}
}
}
@@ -193,6 +193,12 @@ QString GameEnderal::gameShortName() const
return "Enderal";
}
+QString GameEnderal::localAppName() const
+{
+ // Enderal uses lowercase "enderal" in AppData/Local
+ return "enderal";
+}
+
QString GameEnderal::gameNexusName() const
{
return "enderal";
@@ -215,7 +221,7 @@ QStringList GameEnderal::validShortNames() const
QStringList GameEnderal::iniFiles() const
{
- return {"enderal.ini", "enderalprefs.ini"};
+ return {"Enderal.ini", "EnderalPrefs.ini"};
}
QStringList GameEnderal::DLCPlugins() const
diff --git a/libs/game_bethesda/src/games/enderal/gameenderal.h b/libs/game_bethesda/src/games/enderal/gameenderal.h
index fb0a377..78b8f72 100644
--- a/libs/game_bethesda/src/games/enderal/gameenderal.h
+++ b/libs/game_bethesda/src/games/enderal/gameenderal.h
@@ -30,6 +30,7 @@ public: // IPluginGame interface
virtual QString binaryName() const override;
virtual QString getLauncherName() const override;
virtual QString gameShortName() const override;
+ virtual QString localAppName() const override;
virtual QStringList validShortNames() const override;
virtual QString gameNexusName() const override;
virtual QStringList primarySources() const override;