Multiple advanced editors

This commit is contained in:
Exter-N 2025-10-19 17:20:49 +02:00
parent 3f48cd6910
commit c24796a9d8
31 changed files with 293 additions and 68 deletions

View file

@ -4,7 +4,7 @@ using Penumbra.GameData.Files;
namespace Penumbra.Mods.Editor;
public partial class MdlMaterialEditor(ModFileCollection files) : Luna.IService
public partial class MdlMaterialEditor(ModFileCollection files)
{
[GeneratedRegex(@"/mt_c(?'RaceCode'\d{4})b0001_(?'Suffix'.*?)\.mtrl", RegexOptions.ExplicitCapture | RegexOptions.NonBacktracking)]
private static partial Regex MaterialRegex();

View file

@ -13,7 +13,7 @@ public class ModEditor(
ModSwapEditor swapEditor,
MdlMaterialEditor mdlMaterialEditor,
FileCompactor compactor)
: IDisposable, Luna.IService
: IDisposable
{
public readonly ModNormalizer ModNormalizer = modNormalizer;
public readonly ModMetaEditor MetaEditor = metaEditor;

View file

@ -0,0 +1,28 @@
using Luna;
using Penumbra.Meta;
using Penumbra.Mods.Manager;
using Penumbra.Mods.Manager.OptionEditor;
using Penumbra.Services;
namespace Penumbra.Mods.Editor;
public class ModEditorFactory(
ModNormalizer modNormalizer,
ModGroupEditor groupEditor,
MetaFileManager metaFileManager,
ModManager modManager,
CommunicatorService communicator,
DuplicateManager duplicates,
FileCompactor compactor) : IService
{
public ModEditor Create()
{
var metaEditor = new ModMetaEditor(groupEditor, metaFileManager);
var files = new ModFileCollection();
var fileEditor = new ModFileEditor(files, modManager, communicator);
var swapEditor = new ModSwapEditor(modManager);
var mdlMaterialEditor = new MdlMaterialEditor(files);
return new(modNormalizer, metaEditor, files, fileEditor, duplicates, swapEditor, mdlMaterialEditor, compactor);
}
}

View file

@ -4,7 +4,7 @@ using Penumbra.String.Classes;
namespace Penumbra.Mods.Editor;
public class ModFileCollection : IDisposable, Luna.IService
public class ModFileCollection : IDisposable
{
private readonly List<FileRegistry> _available = [];
private readonly List<FileRegistry> _mtrl = [];

View file

@ -6,7 +6,7 @@ using Penumbra.String.Classes;
namespace Penumbra.Mods.Editor;
public class ModFileEditor(ModFileCollection files, ModManager modManager, CommunicatorService communicator) : Luna.IService
public class ModFileEditor(ModFileCollection files, ModManager modManager, CommunicatorService communicator)
{
public bool Changes { get; private set; }

View file

@ -13,7 +13,7 @@ namespace Penumbra.Mods.Editor;
public class ModMetaEditor(
ModGroupEditor groupEditor,
MetaFileManager metaFileManager) : MetaDictionary, IService
MetaFileManager metaFileManager) : MetaDictionary
{
public sealed class OtherOptionData : HashSet<string>
{

View file

@ -3,7 +3,7 @@ using Penumbra.Mods.SubMods;
using Penumbra.String.Classes;
using Penumbra.Util;
public class ModSwapEditor(ModManager modManager) : Luna.IService
public class ModSwapEditor(ModManager modManager)
{
private readonly Dictionary<Utf8GamePath, FullPath> _swaps = [];

View file

@ -6,7 +6,13 @@ using Penumbra.Services;
namespace Penumbra.Mods.Manager;
public class ModImportManager(ModManager modManager, Configuration config, ModEditor modEditor, MigrationManager migrationManager) : IDisposable, Luna.IService
public class ModImportManager(
ModManager modManager,
Configuration config,
DuplicateManager duplicates,
ModNormalizer modNormalizer,
MigrationManager migrationManager,
FileCompactor compactor) : IDisposable, Luna.IService
{
private readonly ConcurrentQueue<string[]> _modsToUnpack = new();
@ -42,7 +48,8 @@ public class ModImportManager(ModManager modManager, Configuration config, ModEd
if (files.Length == 0)
return;
_import = new TexToolsImporter(files.Length, files, AddNewMod, config, modEditor, modManager, modEditor.Compactor, migrationManager);
_import = new TexToolsImporter(files.Length, files, AddNewMod, config, duplicates, modNormalizer, modManager, compactor,
migrationManager);
}
public bool Importing