Skip to content

Commit 250c403

Browse files
committed
Improve root directory behavior and AddMods.
1 parent b3f8762 commit 250c403

File tree

3 files changed

+13
-9
lines changed

3 files changed

+13
-9
lines changed

Penumbra/Api/Api/ModsApi.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,9 @@ public PenumbraApiEc AddMod(string modDirectory)
7575
if (!dir.Exists)
7676
return ApiHelpers.Return(PenumbraApiEc.FileMissing, args);
7777

78-
if (dir.Parent == null || Path.GetFullPath(_modManager.BasePath.FullName) != Path.GetFullPath(dir.Parent.FullName))
78+
if (dir.Parent == null
79+
|| Path.TrimEndingDirectorySeparator(Path.GetFullPath(_modManager.BasePath.FullName))
80+
!= Path.TrimEndingDirectorySeparator(Path.GetFullPath(dir.Parent.FullName)))
7981
return ApiHelpers.Return(PenumbraApiEc.InvalidArgument, args);
8082

8183
_modManager.AddMod(dir);

Penumbra/Mods/Manager/ModManager.cs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,15 @@ public ModManager(Configuration config, CommunicatorService communicator, ModDat
4747
DataEditor = dataEditor;
4848
OptionEditor = optionEditor;
4949
Creator = creator;
50-
SetBaseDirectory(config.ModDirectory, true);
50+
SetBaseDirectory(config.ModDirectory, true, out _);
5151
_communicator.ModPathChanged.Subscribe(OnModPathChange, ModPathChanged.Priority.ModManager);
5252
DiscoverMods();
5353
}
5454

5555
/// <summary> Change the mod base directory and discover available mods. </summary>
56-
public void DiscoverMods(string newDir)
56+
public void DiscoverMods(string newDir, out string resultNewDir)
5757
{
58-
SetBaseDirectory(newDir, false);
58+
SetBaseDirectory(newDir, false, out resultNewDir);
5959
DiscoverMods();
6060
}
6161

@@ -264,8 +264,9 @@ public void Dispose()
264264
/// If its not the first time, check if it is the same directory as before.
265265
/// Also checks if the directory is available and tries to create it if it is not.
266266
/// </summary>
267-
private void SetBaseDirectory(string newPath, bool firstTime)
267+
private void SetBaseDirectory(string newPath, bool firstTime, out string resultNewDir)
268268
{
269+
resultNewDir = newPath;
269270
if (!firstTime && string.Equals(newPath, _config.ModDirectory, StringComparison.Ordinal))
270271
return;
271272

@@ -278,7 +279,7 @@ private void SetBaseDirectory(string newPath, bool firstTime)
278279
}
279280
else
280281
{
281-
var newDir = new DirectoryInfo(newPath);
282+
var newDir = new DirectoryInfo(Path.TrimEndingDirectorySeparator(newPath));
282283
if (!newDir.Exists)
283284
try
284285
{
@@ -290,8 +291,9 @@ private void SetBaseDirectory(string newPath, bool firstTime)
290291
Penumbra.Log.Error($"Could not create specified mod directory {newDir.FullName}:\n{e}");
291292
}
292293

293-
BasePath = newDir;
294-
Valid = Directory.Exists(newDir.FullName);
294+
BasePath = newDir;
295+
Valid = Directory.Exists(newDir.FullName);
296+
resultNewDir = BasePath.FullName;
295297
if (!firstTime && _config.ModDirectory != BasePath.FullName)
296298
TriggerModDirectoryChange(BasePath.FullName, Valid);
297299
}

Penumbra/UI/Tabs/SettingsTab.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ private void DrawRootFolder()
269269
if (_config.ModDirectory != _newModDirectory
270270
&& _newModDirectory.Length != 0
271271
&& DrawPressEnterWarning(_newModDirectory, _config.ModDirectory, pos, save, selected))
272-
_modManager.DiscoverMods(_newModDirectory);
272+
_modManager.DiscoverMods(_newModDirectory, out _newModDirectory);
273273
}
274274

275275
/// <summary> Draw the Open Directory and Rediscovery buttons.</summary>

0 commit comments

Comments
 (0)