Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions TES3Merge/TES3Merge.ini
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ TextEncodingCode = 1252
; * Have Morrowind's install path in your registry. This only functions on Windows, and will not find OpenMW installations.
; InstallPath =

; The folder in which Merged Objects.esp will be saved.
; If unset, TES3Merge will save Merged Objects.esp to Morrowind's Data Files folder, or a `data-local` folder defined by an openmw.cfg.
; OutputFile =

; Blacklist a file from merging. Set a filename to false to ignore it when merging.
[FileFilters]
; Tamriel_Data.esm = false
Expand Down
33 changes: 30 additions & 3 deletions TES3Merge/Util/Installation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -528,6 +528,21 @@ private void LoadConfiguration(string configDir)
case "resources":
ResourcesDirectory = ParseDataDirectory(configDir, value);
break;
case "replace":
if (value == "content")
GameFiles.Clear();
else if (value == "data")
DataDirectories.Clear();
else if (value == "config")
{
Archives.Clear();
DataDirectories.Clear();
GameFiles.Clear();
subConfigs.Clear();
ResourcesDirectory = null;
DataLocalDirectory = null;
}
break;
}
}

Expand Down Expand Up @@ -604,8 +619,20 @@ public override string GetDefaultOutputDirectory()
if (DataDirectories.Count == 0)
throw new Exception("No data directories defined. No default output directory could be resolved.");

var outputDirIndex = string.IsNullOrEmpty(DataLocalDirectory) ? 0 : DataDirectories.Count - 1;

return DataDirectories[outputDirIndex];
if (!string.IsNullOrEmpty(DataLocalDirectory))
{
// DataLocalDirectory is always added last
return DataDirectories[^1];
}
else if (!string.IsNullOrEmpty(ResourcesDirectory) && DataDirectories.Count > 1)
{
// ResourcesDirectory is inserted at index 0, so skip it
return DataDirectories[1];
}
else
{
// No ResourcesDirectory, so use the first data directory
return DataDirectories[0];
}
}
}
8 changes: 8 additions & 0 deletions TES3Merge/Util/Util.cs
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,14 @@ internal static void LoadConfig()
if (!File.Exists(iniPath))
iniPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TES3Merge.ini");

if (!File.Exists(iniPath))
iniPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "tes3merge", "TES3Merge.ini");

if (!File.Exists(iniPath))
{
throw new Exception("TES3Merge was unable to locate a configuration file in any possible location. Aborting.");
}

Configuration = parser.ReadFile(iniPath);
}

Expand Down
Loading