Skip to content

Commit ec207bd

Browse files
committed
Force saves independent of manipulations for swaps and merges.
1 parent b1a0590 commit ec207bd

File tree

3 files changed

+17
-8
lines changed

3 files changed

+17
-8
lines changed

Penumbra/Mods/Editor/ModMerger.cs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,8 @@ private void MergeIntoOption(IEnumerable<IModDataContainer> mergeOptions, IModDa
189189

190190
_editor.SetFiles(option, redirections, SaveType.None);
191191
_editor.SetFileSwaps(option, swaps, SaveType.None);
192-
_editor.SetManipulations(option, manips, SaveType.ImmediateSync);
192+
_editor.SetManipulations(option, manips, SaveType.None);
193+
_editor.ForceSave(option, SaveType.ImmediateSync);
193194
return;
194195

195196
bool GetFullPath(FullPath input, out FullPath ret)
@@ -263,9 +264,10 @@ public void SplitIntoMod(string modName)
263264
if (mods.Count == 1)
264265
{
265266
var files = CopySubModFiles(mods[0], dir);
266-
_editor.SetFiles(result.Default, files);
267-
_editor.SetFileSwaps(result.Default, mods[0].FileSwaps);
268-
_editor.SetManipulations(result.Default, mods[0].Manipulations);
267+
_editor.SetFiles(result.Default, files, SaveType.None);
268+
_editor.SetFileSwaps(result.Default, mods[0].FileSwaps, SaveType.None);
269+
_editor.SetManipulations(result.Default, mods[0].Manipulations, SaveType.None);
270+
_editor.ForceSave(result.Default);
269271
}
270272
else
271273
{
@@ -277,6 +279,7 @@ public void SplitIntoMod(string modName)
277279
_editor.SetFiles(result.Default, files);
278280
_editor.SetFileSwaps(result.Default, mods[0].FileSwaps);
279281
_editor.SetManipulations(result.Default, mods[0].Manipulations);
282+
_editor.ForceSave(result.Default);
280283
}
281284
else
282285
{
@@ -285,9 +288,10 @@ public void SplitIntoMod(string modName)
285288
var (option, _, _) = _editor.FindOrAddOption(group!, originalOption.GetName());
286289
var folder = Path.Combine(dir.FullName, group!.Name, option!.Name);
287290
var files = CopySubModFiles(originalOption, new DirectoryInfo(folder));
288-
_editor.SetFiles((IModDataContainer)option, files);
289-
_editor.SetFileSwaps((IModDataContainer)option, originalOption.FileSwaps);
290-
_editor.SetManipulations((IModDataContainer)option, originalOption.Manipulations);
291+
_editor.SetFiles((IModDataContainer)option, files, SaveType.None);
292+
_editor.SetFileSwaps((IModDataContainer)option, originalOption.FileSwaps, SaveType.None);
293+
_editor.SetManipulations((IModDataContainer)option, originalOption.Manipulations, SaveType.None);
294+
_editor.ForceSave((IModDataContainer)option);
291295
}
292296
}
293297
}

Penumbra/Mods/ItemSwap/ItemSwapContainer.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ public bool WriteMod(ModManager manager, Mod mod, IModDataContainer container, W
8383

8484
manager.OptionEditor.SetFiles(container, convertedFiles, SaveType.None);
8585
manager.OptionEditor.SetFileSwaps(container, convertedSwaps, SaveType.None);
86-
manager.OptionEditor.SetManipulations(container, convertedManips, SaveType.ImmediateSync);
86+
manager.OptionEditor.SetManipulations(container, convertedManips, SaveType.None);
87+
manager.OptionEditor.ForceSave(container, SaveType.ImmediateSync);
8788
return true;
8889
}
8990
catch (Exception e)

Penumbra/Mods/Manager/OptionEditor/ModGroupEditor.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,10 @@ public void SetFiles(IModDataContainer subMod, IReadOnlyDictionary<Utf8GamePath,
166166
communicator.ModOptionChanged.Invoke(ModOptionChangeType.OptionFilesChanged, (Mod)subMod.Mod, subMod.Group, null, subMod, -1);
167167
}
168168

169+
/// <summary> Forces a file save of the given container's group. </summary>
170+
public void ForceSave(IModDataContainer subMod, SaveType saveType = SaveType.Queue)
171+
=> saveService.Save(saveType, new ModSaveGroup(subMod, Config.ReplaceNonAsciiOnImport));
172+
169173
/// <summary> Add additional file redirections to a given option, keeping already existing ones. Only fires an event if anything is actually added.</summary>
170174
public void AddFiles(IModDataContainer subMod, IReadOnlyDictionary<Utf8GamePath, FullPath> additions)
171175
{

0 commit comments

Comments
 (0)