mirror of
https://github.com/xivdev/Penumbra.git
synced 2025-12-12 18:27:24 +01:00
57 lines
2.1 KiB
C#
57 lines
2.1 KiB
C#
using Luna;
|
|
using OtterGui.Filesystem;
|
|
using Penumbra.Communication;
|
|
using Penumbra.Mods.Groups;
|
|
using Penumbra.Mods.Settings;
|
|
using Penumbra.Mods.SubMods;
|
|
using Penumbra.Services;
|
|
|
|
namespace Penumbra.Mods.Manager.OptionEditor;
|
|
|
|
public sealed class SingleModGroupEditor(CommunicatorService communicator, SaveService saveService, Configuration config)
|
|
: ModOptionEditor<SingleModGroup, SingleSubMod>(communicator, saveService, config), IService
|
|
{
|
|
public void ChangeToMulti(SingleModGroup group)
|
|
{
|
|
var idx = group.GetIndex();
|
|
var multiGroup = group.ConvertToMulti();
|
|
group.Mod.Groups[idx] = multiGroup;
|
|
SaveService.QueueSave(new ModSaveGroup(multiGroup, Config.ReplaceNonAsciiOnImport));
|
|
Communicator.ModOptionChanged.Invoke(new ModOptionChanged.Arguments(ModOptionChangeType.GroupTypeChanged, multiGroup.Mod, multiGroup, null, null, -1));
|
|
}
|
|
|
|
protected override SingleModGroup CreateGroup(Mod mod, string newName, ModPriority priority, SaveType saveType = SaveType.ImmediateSync)
|
|
=> new(mod)
|
|
{
|
|
Name = newName,
|
|
Priority = priority,
|
|
};
|
|
|
|
protected override SingleSubMod CloneOption(SingleModGroup group, IModOption option)
|
|
{
|
|
var newOption = new SingleSubMod(group)
|
|
{
|
|
Name = option.Name,
|
|
Description = option.Description,
|
|
};
|
|
if (option is IModDataContainer data)
|
|
SubMod.Clone(data, newOption);
|
|
group.OptionData.Add(newOption);
|
|
return newOption;
|
|
}
|
|
|
|
protected override void RemoveOption(SingleModGroup group, int optionIndex)
|
|
{
|
|
group.OptionData.RemoveAt(optionIndex);
|
|
group.DefaultSettings = group.DefaultSettings.RemoveSingle(optionIndex);
|
|
}
|
|
|
|
protected override bool MoveOption(SingleModGroup group, int optionIdxFrom, int optionIdxTo)
|
|
{
|
|
if (!Extensions.Move(group.OptionData, ref optionIdxFrom, ref optionIdxTo))
|
|
return false;
|
|
|
|
group.DefaultSettings = group.DefaultSettings.MoveSingle(optionIdxFrom, optionIdxTo);
|
|
return true;
|
|
}
|
|
}
|