Switch mostly to Luna Services.

This commit is contained in:
Ottermandias 2025-09-08 14:38:02 +02:00
parent 97c8d82b33
commit 3e4e3022d8
200 changed files with 348 additions and 481 deletions

4
.gitmodules vendored
View file

@ -14,3 +14,7 @@
path = Penumbra.GameData
url = https://github.com/Ottermandias/Penumbra.GameData.git
branch = main
[submodule "Luna"]
path = Luna
url = git@github.com:Ottermandias/Luna.git
branch = main

1
Luna Submodule

@ -0,0 +1 @@
Subproject commit ecbf3e0e8543a81111c71b98ed108b3c87810837

@ -1 +1 @@
Subproject commit 27893a85adb57a301dd93fd2c7d318bfd4c12a0f
Subproject commit e50fa7044e35742e57cc694e7fb36a2fc225a661

View file

@ -55,6 +55,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "structs", "structs", "{B03F
schemas\structs\option.json = schemas\structs\option.json
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Luna", "Luna\Luna\Luna.csproj", "{DEA936D7-1386-55A1-7451-E0C240F56E9D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Luna.Generators", "Luna\Luna.Generators\Luna.Generators.csproj", "{744CE38E-DCA8-C17D-7B02-741F36243CF6}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
@ -85,6 +89,14 @@ Global
{EE834491-A98F-4395-BE0D-6861AE5AD953}.Debug|x64.Build.0 = Debug|x64
{EE834491-A98F-4395-BE0D-6861AE5AD953}.Release|x64.ActiveCfg = Release|x64
{EE834491-A98F-4395-BE0D-6861AE5AD953}.Release|x64.Build.0 = Release|x64
{DEA936D7-1386-55A1-7451-E0C240F56E9D}.Debug|x64.ActiveCfg = Debug|x64
{DEA936D7-1386-55A1-7451-E0C240F56E9D}.Debug|x64.Build.0 = Debug|x64
{DEA936D7-1386-55A1-7451-E0C240F56E9D}.Release|x64.ActiveCfg = Release|x64
{DEA936D7-1386-55A1-7451-E0C240F56E9D}.Release|x64.Build.0 = Release|x64
{744CE38E-DCA8-C17D-7B02-741F36243CF6}.Debug|x64.ActiveCfg = Debug|x64
{744CE38E-DCA8-C17D-7B02-741F36243CF6}.Debug|x64.Build.0 = Debug|x64
{744CE38E-DCA8-C17D-7B02-741F36243CF6}.Release|x64.ActiveCfg = Release|x64
{744CE38E-DCA8-C17D-7B02-741F36243CF6}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View file

@ -1,5 +1,4 @@
using OtterGui.Log;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Collections;
using Penumbra.Collections.Manager;
@ -13,7 +12,7 @@ public class ApiHelpers(
CollectionManager collectionManager,
ObjectManager objects,
CollectionResolver collectionResolver,
ActorManager actors) : IApiService
ActorManager actors) : Luna.IApiService
{
/// <summary> Return the associated identifier for an object given by its index. </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)]

View file

@ -1,4 +1,3 @@
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Collections;
using Penumbra.Collections.Manager;
@ -6,7 +5,7 @@ using Penumbra.Mods;
namespace Penumbra.Api.Api;
public class CollectionApi(CollectionManager collections, ApiHelpers helpers) : IPenumbraApiCollection, IApiService
public class CollectionApi(CollectionManager collections, ApiHelpers helpers) : IPenumbraApiCollection, Luna.IApiService
{
public Dictionary<Guid, string> GetCollections()
=> collections.Storage.ToDictionary(c => c.Identity.Id, c => c.Identity.Name);

View file

@ -1,10 +1,9 @@
using OtterGui.Services;
using Penumbra.Import.Textures;
using TextureType = Penumbra.Api.Enums.TextureType;
namespace Penumbra.Api.Api;
public class EditingApi(TextureManager textureManager) : IPenumbraApiEditing, IApiService
public class EditingApi(TextureManager textureManager) : IPenumbraApiEditing, Luna.IApiService
{
public Task ConvertTextureFile(string inputFile, string outputFile, TextureType textureType, bool mipMaps)
=> textureType switch

View file

@ -1,5 +1,4 @@
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Collections;
using Penumbra.Interop.Hooks.ResourceLoading;
@ -10,7 +9,7 @@ using Penumbra.String.Classes;
namespace Penumbra.Api.Api;
public class GameStateApi : IPenumbraApiGameState, IApiService, IDisposable
public class GameStateApi : IPenumbraApiGameState, Luna.IApiService, IDisposable
{
private readonly CommunicatorService _communicator;
private readonly CollectionResolver _collectionResolver;

View file

@ -2,7 +2,6 @@ using Dalamud.Plugin.Services;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using OtterGui;
using OtterGui.Services;
using Penumbra.Collections;
using Penumbra.Collections.Cache;
using Penumbra.GameData.Files.AtchStructs;
@ -14,7 +13,7 @@ using Penumbra.Meta.Manipulations;
namespace Penumbra.Api.Api;
public class MetaApi(IFramework framework, CollectionResolver collectionResolver, ApiHelpers helpers)
: IPenumbraApiMeta, IApiService
: IPenumbraApiMeta, Luna.IApiService
{
public string GetPlayerMetaManipulations()
{

View file

@ -1,5 +1,4 @@
using OtterGui.Extensions;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Api.Helpers;
using Penumbra.Collections;
@ -17,7 +16,7 @@ using Penumbra.Services;
namespace Penumbra.Api.Api;
public class ModSettingsApi : IPenumbraApiModSettings, IApiService, IDisposable
public class ModSettingsApi : IPenumbraApiModSettings, Luna.IApiService, IDisposable
{
private readonly CollectionResolver _collectionResolver;
private readonly ModManager _modManager;

View file

@ -1,6 +1,5 @@
using Newtonsoft.Json.Linq;
using OtterGui.Compression;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Communication;
using Penumbra.Mods;
@ -9,7 +8,7 @@ using Penumbra.Services;
namespace Penumbra.Api.Api;
public class ModsApi : IPenumbraApiMods, IApiService, IDisposable
public class ModsApi : IPenumbraApiMods, Luna.IApiService, IDisposable
{
private readonly CommunicatorService _communicator;
private readonly ModManager _modManager;

View file

@ -1,5 +1,3 @@
using OtterGui.Services;
namespace Penumbra.Api.Api;
public class PenumbraApi(
@ -14,7 +12,7 @@ public class PenumbraApi(
ResolveApi resolve,
ResourceTreeApi resourceTree,
TemporaryApi temporary,
UiApi ui) : IDisposable, IApiService, IPenumbraApi
UiApi ui) : IDisposable, Luna.IApiService, IPenumbraApi
{
public const int BreakingVersion = 5;
public const int FeatureVersion = 12;

View file

@ -1,13 +1,12 @@
using System.Collections.Frozen;
using Newtonsoft.Json;
using OtterGui.Services;
using Penumbra.Communication;
using Penumbra.Mods;
using Penumbra.Services;
namespace Penumbra.Api.Api;
public class PluginStateApi(Configuration config, CommunicatorService communicator) : IPenumbraApiPluginState, IApiService
public class PluginStateApi(Configuration config, CommunicatorService communicator) : IPenumbraApiPluginState, Luna.IApiService
{
public string GetModDirectory()
=> config.ModDirectory;

View file

@ -1,12 +1,11 @@
using Dalamud.Game.ClientState.Objects.Types;
using Dalamud.Plugin.Services;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Interop.Services;
namespace Penumbra.Api.Api;
public class RedrawApi(RedrawService redrawService, IFramework framework) : IPenumbraApiRedraw, IApiService
public class RedrawApi(RedrawService redrawService, IFramework framework) : IPenumbraApiRedraw, Luna.IApiService
{
public void RedrawObject(int gameObjectIndex, RedrawType setting)
{

View file

@ -1,5 +1,4 @@
using Dalamud.Plugin.Services;
using OtterGui.Services;
using Penumbra.Collections;
using Penumbra.Collections.Manager;
using Penumbra.Interop.PathResolving;
@ -14,7 +13,7 @@ public class ResolveApi(
Configuration config,
CollectionResolver collectionResolver,
ApiHelpers helpers,
IFramework framework) : IPenumbraApiResolve, IApiService
IFramework framework) : IPenumbraApiResolve, Luna.IApiService
{
public string ResolveDefaultPath(string gamePath)
=> ResolvePath(gamePath, modManager, collectionManager.Active.Default);

View file

@ -1,6 +1,5 @@
using Dalamud.Game.ClientState.Objects.Types;
using Newtonsoft.Json.Linq;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Api.Helpers;
using Penumbra.GameData.Interop;
@ -8,7 +7,7 @@ using Penumbra.Interop.ResourceTree;
namespace Penumbra.Api.Api;
public class ResourceTreeApi(ResourceTreeFactory resourceTreeFactory, ObjectManager objects) : IPenumbraApiResourceTree, IApiService
public class ResourceTreeApi(ResourceTreeFactory resourceTreeFactory, ObjectManager objects) : IPenumbraApiResourceTree, Luna.IApiService
{
public Dictionary<string, HashSet<string>>?[] GetGameObjectResourcePaths(params ushort[] gameObjects)
{

View file

@ -1,5 +1,4 @@
using OtterGui.Log;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Collections;
using Penumbra.Collections.Manager;
@ -18,7 +17,7 @@ public class TemporaryApi(
CollectionManager collectionManager,
TempModManager tempMods,
ApiHelpers apiHelpers,
ModManager modManager) : IPenumbraApiTemporary, IApiService
ModManager modManager) : IPenumbraApiTemporary, Luna.IApiService
{
public (PenumbraApiEc, Guid) CreateTemporaryCollection(string identity, string name)
{

View file

@ -1,4 +1,3 @@
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Communication;
using Penumbra.GameData.Data;
@ -8,7 +7,7 @@ using Penumbra.UI;
namespace Penumbra.Api.Api;
public class UiApi : IPenumbraApiUi, IApiService, IDisposable
public class UiApi : IPenumbraApiUi, Luna.IApiService, IDisposable
{
private readonly CommunicatorService _communicator;
private readonly ConfigWindow _configWindow;

View file

@ -1,6 +1,5 @@
using Dalamud.Interface;
using Dalamud.Plugin.Services;
using OtterGui.Services;
using Penumbra.Collections;
using Penumbra.Collections.Manager;
using Penumbra.Communication;
@ -10,7 +9,7 @@ using Penumbra.String.Classes;
namespace Penumbra.Api;
public class DalamudSubstitutionProvider : IDisposable, IApiService
public class DalamudSubstitutionProvider : IDisposable, Luna.IApiService
{
private readonly ITextureSubstitutionProvider _substitution;
private readonly IUiBuilder _uiBuilder;

View file

@ -2,13 +2,12 @@ using Dalamud.Plugin.Services;
using EmbedIO;
using EmbedIO.Routing;
using EmbedIO.WebApi;
using OtterGui.Services;
using Penumbra.Api.Api;
using Penumbra.Api.Enums;
namespace Penumbra.Api;
public class HttpApi : IDisposable, IApiService
public class HttpApi : IDisposable, Luna.IApiService
{
private partial class Controller : WebApiController
{

View file

@ -1,12 +1,11 @@
using Dalamud.Plugin;
using OtterGui.Log;
using OtterGui.Services;
using Penumbra.Api.Api;
using Serilog.Events;
namespace Penumbra.Api;
public sealed class IpcLaunchingProvider : IApiService
public sealed class IpcLaunchingProvider : Luna.IApiService
{
public IpcLaunchingProvider(IDalamudPluginInterface pi, Logger log)
{

View file

@ -1,5 +1,4 @@
using Dalamud.Plugin;
using OtterGui.Services;
using Penumbra.Api.Api;
using Penumbra.Api.Helpers;
using Penumbra.Communication;
@ -7,7 +6,7 @@ using CharacterUtility = Penumbra.Interop.Services.CharacterUtility;
namespace Penumbra.Api;
public sealed class IpcProviders : IDisposable, IApiService
public sealed class IpcProviders : IDisposable, Luna.IApiService
{
private readonly List<IDisposable> _providers;

View file

@ -4,7 +4,6 @@ using Dalamud.Interface.Utility;
using Dalamud.Plugin;
using OtterGui;
using OtterGui.Raii;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Api.IpcSubscribers;
using Penumbra.Collections.Manager;
@ -13,7 +12,7 @@ using ImGuiClip = OtterGui.ImGuiClip;
namespace Penumbra.Api.IpcTester;
public class CollectionsIpcTester(IDalamudPluginInterface pi) : IUiService
public class CollectionsIpcTester(IDalamudPluginInterface pi) : Luna.IUiService
{
private int _objectIdx;
private string _collectionIdString = string.Empty;

View file

@ -2,13 +2,12 @@ using Dalamud.Bindings.ImGui;
using Dalamud.Plugin;
using OtterGui;
using OtterGui.Raii;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Api.IpcSubscribers;
namespace Penumbra.Api.IpcTester;
public class EditingIpcTester(IDalamudPluginInterface pi) : IUiService
public class EditingIpcTester(IDalamudPluginInterface pi) : Luna.IUiService
{
private string _inputPath = string.Empty;
private string _inputPath2 = string.Empty;

View file

@ -2,7 +2,6 @@ using Dalamud.Bindings.ImGui;
using Dalamud.Interface;
using Dalamud.Plugin;
using OtterGui.Raii;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Api.Helpers;
using Penumbra.Api.IpcSubscribers;
@ -10,7 +9,7 @@ using Penumbra.String;
namespace Penumbra.Api.IpcTester;
public class GameStateIpcTester : IUiService, IDisposable
public class GameStateIpcTester : Luna.IUiService, IDisposable
{
private readonly IDalamudPluginInterface _pi;
public readonly EventSubscriber<nint, Guid, nint, nint, nint> CharacterBaseCreating;

View file

@ -1,7 +1,5 @@
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.System.Framework;
using Dalamud.Bindings.ImGui;
using OtterGui.Services;
using Penumbra.Api.Api;
namespace Penumbra.Api.IpcTester;
@ -21,7 +19,7 @@ public class IpcTester(
EditingIpcTester editingIpcTester,
TemporaryIpcTester temporaryIpcTester,
ResourceTreeIpcTester resourceTreeIpcTester,
IFramework framework) : IUiService
IFramework framework) : Luna.IUiService
{
private readonly IpcProviders _ipcProviders = ipcProviders;
private DateTime _lastUpdate;

View file

@ -1,7 +1,6 @@
using Dalamud.Bindings.ImGui;
using Dalamud.Plugin;
using OtterGui.Raii;
using OtterGui.Services;
using OtterGui.Text;
using Penumbra.Api.Api;
using Penumbra.Api.IpcSubscribers;
@ -9,7 +8,7 @@ using Penumbra.Meta.Manipulations;
namespace Penumbra.Api.IpcTester;
public class MetaIpcTester(IDalamudPluginInterface pi) : IUiService
public class MetaIpcTester(IDalamudPluginInterface pi) : Luna.IUiService
{
private int _gameObjectIndex;
private string _metaBase64 = string.Empty;

View file

@ -2,7 +2,6 @@ using Dalamud.Bindings.ImGui;
using Dalamud.Plugin;
using OtterGui;
using OtterGui.Raii;
using OtterGui.Services;
using OtterGui.Text;
using Penumbra.Api.Enums;
using Penumbra.Api.Helpers;
@ -11,7 +10,7 @@ using Penumbra.UI;
namespace Penumbra.Api.IpcTester;
public class ModSettingsIpcTester : IUiService, IDisposable
public class ModSettingsIpcTester : Luna.IUiService, IDisposable
{
private readonly IDalamudPluginInterface _pi;
public readonly EventSubscriber<ModSettingChange, Guid, string, bool> SettingChanged;

View file

@ -2,7 +2,6 @@ using Dalamud.Bindings.ImGui;
using Dalamud.Interface.Utility;
using Dalamud.Plugin;
using OtterGui.Raii;
using OtterGui.Services;
using OtterGui.Text;
using Penumbra.Api.Enums;
using Penumbra.Api.Helpers;
@ -10,7 +9,7 @@ using Penumbra.Api.IpcSubscribers;
namespace Penumbra.Api.IpcTester;
public class ModsIpcTester : IUiService, IDisposable
public class ModsIpcTester : Luna.IUiService, IDisposable
{
private readonly IDalamudPluginInterface _pi;

View file

@ -4,14 +4,13 @@ using Dalamud.Plugin;
using Dalamud.Bindings.ImGui;
using OtterGui;
using OtterGui.Raii;
using OtterGui.Services;
using OtterGui.Text;
using Penumbra.Api.Helpers;
using Penumbra.Api.IpcSubscribers;
namespace Penumbra.Api.IpcTester;
public class PluginStateIpcTester : IUiService, IDisposable
public class PluginStateIpcTester : Luna.IUiService, IDisposable
{
private readonly IDalamudPluginInterface _pi;
public readonly EventSubscriber<string, bool> ModDirectoryChanged;

View file

@ -1,9 +1,6 @@
using Dalamud.Plugin;
using Dalamud.Plugin.Services;
using Dalamud.Bindings.ImGui;
using OtterGui.Raii;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Api.Helpers;
using Penumbra.Api.IpcSubscribers;
using Penumbra.GameData.Interop;
@ -11,7 +8,7 @@ using Penumbra.UI;
namespace Penumbra.Api.IpcTester;
public class RedrawingIpcTester : IUiService, IDisposable
public class RedrawingIpcTester : Luna.IUiService, IDisposable
{
private readonly IDalamudPluginInterface _pi;
private readonly ObjectManager _objects;

View file

@ -1,13 +1,12 @@
using Dalamud.Plugin;
using Dalamud.Bindings.ImGui;
using OtterGui.Raii;
using OtterGui.Services;
using Penumbra.Api.IpcSubscribers;
using Penumbra.String.Classes;
namespace Penumbra.Api.IpcTester;
public class ResolveIpcTester(IDalamudPluginInterface pi) : IUiService
public class ResolveIpcTester(IDalamudPluginInterface pi) : Luna.IUiService
{
private string _currentResolvePath = string.Empty;
private string _currentReversePath = string.Empty;

View file

@ -6,7 +6,6 @@ using Dalamud.Plugin;
using OtterGui;
using OtterGui.Extensions;
using OtterGui.Raii;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Api.Helpers;
using Penumbra.Api.IpcSubscribers;
@ -16,7 +15,7 @@ using Penumbra.GameData.Structs;
namespace Penumbra.Api.IpcTester;
public class ResourceTreeIpcTester(IDalamudPluginInterface pi, ObjectManager objects) : IUiService
public class ResourceTreeIpcTester(IDalamudPluginInterface pi, ObjectManager objects) : Luna.IUiService
{
private readonly Stopwatch _stopwatch = new();

View file

@ -4,7 +4,6 @@ using Dalamud.Bindings.ImGui;
using OtterGui;
using OtterGui.Extensions;
using OtterGui.Raii;
using OtterGui.Services;
using OtterGui.Text;
using Penumbra.Api.Api;
using Penumbra.Api.Enums;
@ -24,7 +23,7 @@ public class TemporaryIpcTester(
TempCollectionManager tempCollections,
SaveService saveService,
Configuration config)
: IUiService
: Luna.IUiService
{
public Guid LastCreatedCollectionId = Guid.Empty;

View file

@ -1,14 +1,13 @@
using Dalamud.Plugin;
using Dalamud.Bindings.ImGui;
using OtterGui.Raii;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Api.Helpers;
using Penumbra.Api.IpcSubscribers;
namespace Penumbra.Api.IpcTester;
public class UiIpcTester : IUiService, IDisposable
public class UiIpcTester : Luna.IUiService, IDisposable
{
private readonly IDalamudPluginInterface _pi;
public readonly EventSubscriber<string, float, float> PreSettingsTabBar;

View file

@ -1,4 +1,3 @@
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Collections;
using Penumbra.Meta.Manipulations;
@ -19,7 +18,7 @@ public enum RedirectResult
FilteredGamePath = 3,
}
public class TempModManager : IDisposable, IService
public class TempModManager : IDisposable, Luna.IService
{
private readonly CommunicatorService _communicator;

View file

@ -1,6 +1,5 @@
using Dalamud.Plugin.Services;
using OtterGui.Classes;
using OtterGui.Services;
using Penumbra.Api;
using Penumbra.Api.Enums;
using Penumbra.Collections.Manager;
@ -18,7 +17,7 @@ using Penumbra.String.Classes;
namespace Penumbra.Collections.Cache;
public class CollectionCacheManager : IDisposable, IService
public class CollectionCacheManager : IDisposable, Luna.IService
{
private readonly FrameworkManager _framework;
private readonly CommunicatorService _communicator;

View file

@ -1,12 +1,11 @@
using OtterGui.Classes;
using OtterGui.Services;
using Penumbra.GameData.Structs;
using Penumbra.Meta.Manipulations;
using Penumbra.Mods.Editor;
namespace Penumbra.Collections.Cache;
public class GlobalEqpCache : ReadWriteDictionary<GlobalEqpManipulation, IMod>, IService
public class GlobalEqpCache : ReadWriteDictionary<GlobalEqpManipulation, IMod>, Luna.IService
{
private readonly HashSet<PrimaryId> _doNotHideEarrings = [];
private readonly HashSet<PrimaryId> _doNotHideNecklace = [];

View file

@ -1,12 +1,11 @@
using Dalamud.Plugin.Services;
using OtterGui.Services;
using Penumbra.Collections.Manager;
using Penumbra.GameData.Interop;
using Penumbra.Interop.PathResolving;
namespace Penumbra.Collections;
public sealed class CollectionAutoSelector : IService, IDisposable
public sealed class CollectionAutoSelector : Luna.IService, IDisposable
{
private readonly Configuration _config;
private readonly ActiveCollections _collections;

View file

@ -3,7 +3,6 @@ using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using OtterGui.Classes;
using OtterGui.Extensions;
using OtterGui.Services;
using Penumbra.Communication;
using Penumbra.GameData.Actors;
using Penumbra.GameData.Enums;
@ -12,7 +11,7 @@ using Penumbra.UI;
namespace Penumbra.Collections.Manager;
public class ActiveCollectionData : IService
public class ActiveCollectionData : Luna.IService
{
public ModCollection Current { get; internal set; } = ModCollection.Empty;
public ModCollection Default { get; internal set; } = ModCollection.Empty;
@ -21,7 +20,7 @@ public class ActiveCollectionData : IService
public readonly ModCollection?[] SpecialCollections = new ModCollection?[Enum.GetValues<Api.Enums.ApiCollectionType>().Length - 3];
}
public class ActiveCollections : ISavable, IDisposable, IService
public class ActiveCollections : ISavable, IDisposable, Luna.IService
{
public const int Version = 2;

View file

@ -1,5 +1,4 @@
using OtterGui.Extensions;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Mods;
using Penumbra.Mods.Manager;
@ -8,7 +7,7 @@ using Penumbra.Services;
namespace Penumbra.Collections.Manager;
public class CollectionEditor(SaveService saveService, CommunicatorService communicator, ModStorage modStorage) : IService
public class CollectionEditor(SaveService saveService, CommunicatorService communicator, ModStorage modStorage) : Luna.IService
{
/// <summary> Enable or disable the mod inheritance of mod idx. </summary>
public bool SetModInheritance(ModCollection collection, Mod mod, bool inherit)

View file

@ -1,4 +1,3 @@
using OtterGui.Services;
using Penumbra.Collections.Cache;
namespace Penumbra.Collections.Manager;
@ -9,7 +8,7 @@ public class CollectionManager(
InheritanceManager inheritances,
CollectionCacheManager caches,
TempCollectionManager temp,
CollectionEditor editor) : IService
CollectionEditor editor) : Luna.IService
{
public readonly CollectionStorage Storage = storage;
public readonly ActiveCollections Active = active;

View file

@ -1,7 +1,6 @@
using Dalamud.Interface.ImGuiNotification;
using OtterGui.Classes;
using OtterGui.Extensions;
using OtterGui.Services;
using Penumbra.Communication;
using Penumbra.Mods;
using Penumbra.Mods.Editor;
@ -23,7 +22,7 @@ public readonly record struct LocalCollectionId(int Id) : IAdditionOperators<Loc
=> new(left.Id + right);
}
public class CollectionStorage : IReadOnlyList<ModCollection>, IDisposable, IService
public class CollectionStorage : IReadOnlyList<ModCollection>, IDisposable, Luna.IService
{
private readonly CommunicatorService _communicator;
private readonly SaveService _saveService;

View file

@ -1,7 +1,6 @@
using Dalamud.Interface.ImGuiNotification;
using OtterGui.Classes;
using OtterGui.Extensions;
using OtterGui.Services;
using Penumbra.Communication;
using Penumbra.Mods.Manager;
using Penumbra.Services;
@ -13,7 +12,7 @@ namespace Penumbra.Collections.Manager;
/// This is transitive, so a collection A inheriting from B also inherits from everything B inherits.
/// Circular dependencies are resolved by distinctness.
/// </summary>
public class InheritanceManager : IDisposable, IService
public class InheritanceManager : IDisposable, Luna.IService
{
public enum ValidInheritance
{

View file

@ -1,5 +1,4 @@
using OtterGui.Extensions;
using OtterGui.Services;
using Penumbra.Api;
using Penumbra.Communication;
using Penumbra.GameData.Actors;
@ -9,7 +8,7 @@ using Penumbra.String;
namespace Penumbra.Collections.Manager;
public class TempCollectionManager : IDisposable, IService
public class TempCollectionManager : IDisposable, Luna.IService
{
public int GlobalChangeCounter { get; private set; }
public readonly IndividualCollections Collections;

View file

@ -3,7 +3,6 @@ using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Plugin.Services;
using Dalamud.Bindings.ImGui;
using OtterGui.Classes;
using OtterGui.Services;
using Penumbra.Api.Api;
using Penumbra.Api.Enums;
using Penumbra.Collections;
@ -17,7 +16,7 @@ using Penumbra.UI.Knowledge;
namespace Penumbra;
public class CommandHandler : IDisposable, IApiService
public class CommandHandler : IDisposable, Luna.IApiService
{
private const string CommandName = "/penumbra";

View file

@ -4,7 +4,6 @@ using Newtonsoft.Json;
using OtterGui.Classes;
using OtterGui.Extensions;
using OtterGui.Filesystem;
using OtterGui.Services;
using OtterGui.Widgets;
using Penumbra.Import.Structs;
using Penumbra.Interop.Services;
@ -28,7 +27,7 @@ public record PcpSettings
}
[Serializable]
public class Configuration : IPluginConfiguration, ISavable, IService
public class Configuration : IPluginConfiguration, ISavable, Luna.IService
{
[JsonIgnore]
private readonly SaveService _saveService;

View file

@ -1,8 +1,6 @@
using Dalamud.Interface.ImGuiNotification;
using Newtonsoft.Json;
using OtterGui.Classes;
using OtterGui.FileSystem.Selector;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Communication;
using Penumbra.Enums;
@ -16,7 +14,7 @@ using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs;
namespace Penumbra;
public class EphemeralConfig : ISavable, IDisposable, IService
public class EphemeralConfig : ISavable, IDisposable, Luna.IService
{
[JsonIgnore]
private readonly SaveService _saveService;

View file

@ -1,7 +1,6 @@
using Dalamud.Plugin.Services;
using Lumina.Data.Parsing;
using OtterGui.Extensions;
using OtterGui.Services;
using OtterGui.Tasks;
using Penumbra.Collections.Manager;
using Penumbra.GameData;
@ -25,7 +24,7 @@ using Schema2 = SharpGLTF.Schema2;
using LuminaMaterial = Lumina.Models.Materials.Material;
public sealed class ModelManager(IFramework framework, MetaFileManager metaFileManager, ActiveCollections collections, GamePathParser parser)
: SingleTaskQueue, IDisposable, IService
: SingleTaskQueue, IDisposable, Luna.IService
{
private readonly IFramework _framework = framework;

View file

@ -51,7 +51,7 @@ public partial struct MetaFileInfo
public MetaFileInfo(GamePathParser parser, string fileName)
{
// Set the primary type from the gamePath start.
PrimaryType = parser.PathToObjectType(fileName);
PrimaryType = GamePathParser.PathToObjectType(fileName);
PrimaryId = 0;
SecondaryType = BodySlot.Unknown;
SecondaryId = 0;

View file

@ -4,7 +4,6 @@ using Dalamud.Interface.Textures.TextureWraps;
using Dalamud.Plugin.Services;
using Lumina.Data.Files;
using OtterGui.Log;
using OtterGui.Services;
using OtterGui.Tasks;
using OtterTex;
using SharpDX.Direct3D11;
@ -18,7 +17,7 @@ using Image = SixLabors.ImageSharp.Image;
namespace Penumbra.Import.Textures;
public sealed class TextureManager(IDataManager gameData, Logger logger, ITextureProvider textureProvider, IUiBuilder uiBuilder)
: SingleTaskQueue, IDisposable, IService
: SingleTaskQueue, IDisposable, Luna.IService
{
private readonly Logger _logger = logger;

View file

@ -1,11 +1,10 @@
using Dalamud.Plugin.Services;
using Dalamud.Utility.Signatures;
using OtterGui.Services;
using Penumbra.GameData;
namespace Penumbra.Interop;
public sealed unsafe class CharacterBaseVTables : IService
public sealed unsafe class CharacterBaseVTables : Luna.IService
{
[Signature(Sigs.HumanVTable, ScanType = ScanType.StaticAddress)]
public readonly nint* HumanVTable = null!;

View file

@ -1,5 +1,4 @@
using FFXIVClientStructs.FFXIV.Client.Game.Object;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Collections;
using Penumbra.Interop.PathResolving;
@ -7,7 +6,7 @@ using Penumbra.String.Classes;
namespace Penumbra.Interop;
public class GameState : IService
public class GameState : Luna.IService
{
#region Last Game Object

View file

@ -1,11 +1,11 @@
using Dalamud.Hooking;
using OtterGui.Services;
using Luna;
using Penumbra.Interop.Structs;
namespace Penumbra.Interop.Hooks;
#if DEBUG
public sealed unsafe class DebugHook : IHookService
public sealed unsafe class DebugHook : Luna.IHookService
{
public const string Signature = "";

View file

@ -1,11 +1,10 @@
using Dalamud.Hooking;
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;
using OtterGui.Classes;
using OtterGui.Services;
namespace Penumbra.Interop.Hooks.Objects;
public sealed unsafe class CharacterBaseDestructor : EventWrapperPtr<CharacterBase, CharacterBaseDestructor.Priority>, IHookService
public sealed unsafe class CharacterBaseDestructor : EventWrapperPtr<CharacterBase, CharacterBaseDestructor.Priority>, Luna.IHookService
{
public enum Priority
{
@ -16,7 +15,7 @@ public sealed unsafe class CharacterBaseDestructor : EventWrapperPtr<CharacterBa
MtrlTab = -1000,
}
public CharacterBaseDestructor(HookManager hooks)
public CharacterBaseDestructor(Luna.HookManager hooks)
: base("Destroy CharacterBase")
=> _task = hooks.CreateHook<Delegate>(Name, Address, Detour, !HookOverrides.Instance.Objects.CharacterBaseDestructor);

View file

@ -1,12 +1,11 @@
using Dalamud.Hooking;
using FFXIVClientStructs.FFXIV.Client.Game.Character;
using OtterGui.Classes;
using OtterGui.Services;
using Penumbra.GameData;
namespace Penumbra.Interop.Hooks.Objects;
public sealed unsafe class CharacterDestructor : EventWrapperPtr<Character, CharacterDestructor.Priority>, IHookService
public sealed unsafe class CharacterDestructor : EventWrapperPtr<Character, CharacterDestructor.Priority>, Luna.IHookService
{
public enum Priority
{
@ -20,7 +19,7 @@ public sealed unsafe class CharacterDestructor : EventWrapperPtr<Character, Char
DrawObjectState = 0,
}
public CharacterDestructor(HookManager hooks)
public CharacterDestructor(Luna.HookManager hooks)
: base("Character Destructor")
=> _task = hooks.CreateHook<Delegate>(Name, Sigs.CharacterDestructor, Detour, !HookOverrides.Instance.Objects.CharacterDestructor);

View file

@ -1,14 +1,13 @@
using Dalamud.Hooking;
using FFXIVClientStructs.FFXIV.Client.Game.Character;
using OtterGui.Classes;
using OtterGui.Services;
using Penumbra.GameData;
using Penumbra.GameData.Enums;
using Penumbra.GameData.Interop;
namespace Penumbra.Interop.Hooks.Objects;
public sealed unsafe class ConstructCutsceneCharacter : EventWrapperPtr<Character, ConstructCutsceneCharacter.Priority>, IHookService
public sealed unsafe class ConstructCutsceneCharacter : EventWrapperPtr<Character, ConstructCutsceneCharacter.Priority>, Luna.IHookService
{
private readonly GameState _gameState;
private readonly ObjectManager _objects;
@ -19,7 +18,7 @@ public sealed unsafe class ConstructCutsceneCharacter : EventWrapperPtr<Characte
CutsceneService = 0,
}
public ConstructCutsceneCharacter(GameState gameState, HookManager hooks, ObjectManager objects)
public ConstructCutsceneCharacter(GameState gameState, Luna.HookManager hooks, ObjectManager objects)
: base("ConstructCutsceneCharacter")
{
_gameState = gameState;

View file

@ -1,11 +1,10 @@
using Dalamud.Hooking;
using FFXIVClientStructs.FFXIV.Client.Game.Character;
using OtterGui.Classes;
using OtterGui.Services;
namespace Penumbra.Interop.Hooks.Objects;
public sealed unsafe class CopyCharacter : EventWrapperPtr<Character, Character, CopyCharacter.Priority>, IHookService
public sealed unsafe class CopyCharacter : EventWrapperPtr<Character, Character, CopyCharacter.Priority>, Luna.IHookService
{
public enum Priority
{
@ -13,7 +12,7 @@ public sealed unsafe class CopyCharacter : EventWrapperPtr<Character, Character,
CutsceneService = 0,
}
public CopyCharacter(HookManager hooks)
public CopyCharacter(Luna.HookManager hooks)
: base("Copy Character")
=> _task = hooks.CreateHook<Delegate>(Name, Address, Detour, !HookOverrides.Instance.Objects.CopyCharacter);

View file

@ -1,12 +1,11 @@
using Dalamud.Hooking;
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;
using OtterGui.Classes;
using OtterGui.Services;
using Penumbra.GameData.Structs;
namespace Penumbra.Interop.Hooks.Objects;
public sealed unsafe class CreateCharacterBase : EventWrapperPtr<ModelCharaId, CustomizeArray, CharacterArmor, CreateCharacterBase.Priority>, IHookService
public sealed unsafe class CreateCharacterBase : EventWrapperPtr<ModelCharaId, CustomizeArray, CharacterArmor, CreateCharacterBase.Priority>, Luna.IHookService
{
public enum Priority
{
@ -14,7 +13,7 @@ public sealed unsafe class CreateCharacterBase : EventWrapperPtr<ModelCharaId, C
MetaState = 0,
}
public CreateCharacterBase(HookManager hooks)
public CreateCharacterBase(Luna.HookManager hooks)
: base("Create CharacterBase")
=> _task = hooks.CreateHook<Delegate>(Name, Address, Detour, !HookOverrides.Instance.Objects.CreateCharacterBase);

View file

@ -9,7 +9,7 @@ namespace Penumbra.Interop.Hooks.Objects;
/// EnableDraw is what creates DrawObjects for gameObjects,
/// so we always keep track of the current GameObject to be able to link it to the DrawObject.
/// </summary>
public sealed unsafe class EnableDraw : IHookService
public sealed unsafe class EnableDraw : Luna.IHookService
{
private readonly Task<Hook<Delegate>> _task;
private readonly GameState _state;

View file

@ -1,12 +1,11 @@
using Dalamud.Hooking;
using FFXIVClientStructs.FFXIV.Client.Game.Character;
using OtterGui.Classes;
using OtterGui.Services;
using Penumbra.GameData.Structs;
namespace Penumbra.Interop.Hooks.Objects;
public sealed unsafe class WeaponReload : EventWrapperPtr<DrawDataContainer, Character, CharacterWeapon, WeaponReload.Priority>, IHookService
public sealed unsafe class WeaponReload : EventWrapperPtr<DrawDataContainer, Character, CharacterWeapon, WeaponReload.Priority>, Luna.IHookService
{
public enum Priority
{
@ -14,7 +13,7 @@ public sealed unsafe class WeaponReload : EventWrapperPtr<DrawDataContainer, Cha
DrawObjectState = 0,
}
public WeaponReload(HookManager hooks)
public WeaponReload(Luna.HookManager hooks)
: base("Reload Weapon")
=> _task = hooks.CreateHook<Delegate>(Name, Address, Detour, !HookOverrides.Instance.Objects.WeaponReload);

View file

@ -1,7 +1,6 @@
using Dalamud.Hooking;
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;
using OtterGui.Classes;
using OtterGui.Services;
using Penumbra.Collections;
using Penumbra.GameData;
using Penumbra.GameData.Interop;
@ -18,7 +17,7 @@ namespace Penumbra.Interop.Hooks.PostProcessing;
/// <item>Parameter is the collection associated with the game object. </item>
/// <item>Parameter is the slot that was recomputed. If this is Unknown, it is a general new update call. </item>
/// </list> </summary>
public sealed unsafe class AttributeHook : EventWrapper<Actor, Model, ModCollection, AttributeHook.Priority>, IHookService
public sealed unsafe class AttributeHook : EventWrapper<Actor, Model, ModCollection, AttributeHook.Priority>, Luna.IHookService
{
public enum Priority
{
@ -29,7 +28,7 @@ public sealed unsafe class AttributeHook : EventWrapper<Actor, Model, ModCollect
private readonly CollectionResolver _resolver;
private readonly Configuration _config;
public AttributeHook(HookManager hooks, Configuration config, CollectionResolver resolver)
public AttributeHook(Luna.HookManager hooks, Configuration config, CollectionResolver resolver)
: base("Update Model Attributes")
{
_config = config;

View file

@ -2,7 +2,6 @@ using Dalamud.Hooking;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;
using FFXIVClientStructs.FFXIV.Client.System.Resource;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Interop.Hooks.ResourceLoading;
using Penumbra.Interop.PathResolving;
@ -13,7 +12,7 @@ using CharacterUtility = Penumbra.Interop.Services.CharacterUtility;
namespace Penumbra.Interop.Hooks.PostProcessing;
public sealed unsafe class PreBoneDeformerReplacer : IDisposable, IRequiredService
public sealed unsafe class PreBoneDeformerReplacer : IDisposable, Luna.IRequiredService
{
public static readonly Utf8GamePath PreBoneDeformerPath =
Utf8GamePath.FromSpan("chara/xls/boneDeformer/human.pbd"u8, MetaDataComputation.All, out var p) ? p : Utf8GamePath.Empty;
@ -30,7 +29,7 @@ public sealed unsafe class PreBoneDeformerReplacer : IDisposable, IRequiredServi
private readonly HumanSetupScalingHook _humanSetupScalingHook;
public PreBoneDeformerReplacer(CharacterUtility utility, CollectionResolver collectionResolver, ResourceLoader resourceLoader,
HookManager hooks, IFramework framework, CharacterBaseVTables vTables, HumanSetupScalingHook humanSetupScalingHook)
Luna.HookManager hooks, IFramework framework, CharacterBaseVTables vTables, HumanSetupScalingHook humanSetupScalingHook)
{
_utility = utility;
_collectionResolver = collectionResolver;

View file

@ -2,17 +2,15 @@ using System.Collections.Immutable;
using Dalamud.Hooking;
using Dalamud.Plugin;
using Dalamud.Plugin.Services;
using Dalamud.Utility.Signatures;
using FFXIVClientStructs.FFXIV.Client.Graphics.Kernel;
using FFXIVClientStructs.FFXIV.Client.Graphics.Render;
using OtterGui.Services;
using Penumbra.GameData;
using Penumbra.Interop.Hooks.ResourceLoading;
using Penumbra.Services;
namespace Penumbra.Interop.Hooks.PostProcessing;
public unsafe class RenderTargetHdrEnabler : IService, IDisposable
public unsafe class RenderTargetHdrEnabler : Luna.IService, IDisposable
{
/// <remarks> This array must be sorted by CreationOrder ascending. </remarks>
private static readonly ImmutableArray<ForcedTextureConfig> ForcedTextureConfigs =

View file

@ -4,7 +4,6 @@ using FFXIVClientStructs.FFXIV.Client.Graphics.Render;
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;
using FFXIVClientStructs.FFXIV.Client.System.Resource.Handle;
using OtterGui.Classes;
using OtterGui.Services;
using Penumbra.Communication;
using Penumbra.GameData;
using Penumbra.GameData.Files.MaterialStructs;
@ -18,7 +17,7 @@ using ModelRenderer = Penumbra.Interop.Services.ModelRenderer;
namespace Penumbra.Interop.Hooks.PostProcessing;
public sealed unsafe class ShaderReplacementFixer : IDisposable, IRequiredService
public sealed unsafe class ShaderReplacementFixer : IDisposable, Luna.IRequiredService
{
public static ReadOnlySpan<byte> SkinShpkName
=> "skin.shpk"u8;
@ -107,7 +106,7 @@ public sealed unsafe class ShaderReplacementFixer : IDisposable, IRequiredServic
=> _hairMaskState.MaterialCount;
public ShaderReplacementFixer(ResourceHandleDestructor resourceHandleDestructor, CharacterUtility utility, ModelRenderer modelRenderer,
CommunicatorService communicator, HookManager hooks, CharacterBaseVTables vTables, HumanSetupScalingHook humanSetupScalingHook)
CommunicatorService communicator, Luna.HookManager hooks, CharacterBaseVTables vTables, HumanSetupScalingHook humanSetupScalingHook)
{
_resourceHandleDestructor = resourceHandleDestructor;
_communicator = communicator;

View file

@ -1,6 +1,5 @@
using Dalamud.Hooking;
using Dalamud.Plugin.Services;
using OtterGui.Services;
using Penumbra.String;
using Penumbra.String.Classes;
using Penumbra.String.Functions;
@ -12,7 +11,7 @@ namespace Penumbra.Interop.Hooks.ResourceLoading;
/// we use the fixed size buffers of their formats to only store pointers to the actual path instead.
/// Then we translate the stored pointer to the path in CreateFileW, if the prefix matches.
/// </summary>
public unsafe class CreateFileWHook : IDisposable, IRequiredService
public unsafe class CreateFileWHook : IDisposable, Luna.IRequiredService
{
public const int Size = 28;

View file

@ -1,14 +1,13 @@
using Dalamud.Hooking;
using Dalamud.Plugin.Services;
using Dalamud.Utility.Signatures;
using OtterGui.Services;
using Penumbra.GameData;
using Penumbra.Interop.Structs;
using Penumbra.Util;
namespace Penumbra.Interop.Hooks.ResourceLoading;
public unsafe class FileReadService : IDisposable, IRequiredService
public unsafe class FileReadService : IDisposable, Luna.IRequiredService
{
public FileReadService(PerformanceTracker performance, ResourceManagerService resourceManager, IGameInteropProvider interop)
{

View file

@ -1,13 +1,12 @@
using System.IO.MemoryMappedFiles;
using Iced.Intel;
using OtterGui.Services;
using PeNet;
using Decoder = Iced.Intel.Decoder;
namespace Penumbra.Interop.Hooks.ResourceLoading;
// A good chunk of this was blatantly stolen from Dalamud's SigScanner 'cause Winter could not be faffed, Winter will definitely not rewrite it later
public unsafe class PeSigScanner : IDisposable, IService
public unsafe class PeSigScanner : IDisposable, Luna.IService
{
private readonly MemoryMappedFile _file;
private readonly MemoryMappedViewAccessor _textSection;

View file

@ -1,5 +1,4 @@
using FFXIVClientStructs.FFXIV.Client.System.Resource;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Collections;
using Penumbra.Interop.Hooks.Resources;
@ -12,7 +11,7 @@ using FileMode = Penumbra.Interop.Structs.FileMode;
namespace Penumbra.Interop.Hooks.ResourceLoading;
public unsafe class ResourceLoader : IDisposable, IService
public unsafe class ResourceLoader : IDisposable, Luna.IService
{
private readonly ResourceService _resources;
private readonly FileReadService _fileReadService;

View file

@ -4,13 +4,12 @@ using FFXIVClientStructs.FFXIV.Client.System.Resource;
using FFXIVClientStructs.FFXIV.Client.System.Resource.Handle;
using FFXIVClientStructs.Interop;
using FFXIVClientStructs.STD;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.GameData;
namespace Penumbra.Interop.Hooks.ResourceLoading;
public unsafe class ResourceManagerService : IRequiredService
public unsafe class ResourceManagerService : Luna.IRequiredService
{
public ResourceManagerService(IGameInteropProvider interop)
=> interop.InitializeFromAttributes(this);

View file

@ -1,9 +1,7 @@
using Dalamud.Hooking;
using Dalamud.Interface.Windowing;
using Dalamud.Plugin.Services;
using Dalamud.Utility.Signatures;
using FFXIVClientStructs.FFXIV.Client.System.Resource;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.GameData;
using Penumbra.Interop.SafeHandles;
@ -15,7 +13,7 @@ using CSResourceHandle = FFXIVClientStructs.FFXIV.Client.System.Resource.Handle.
namespace Penumbra.Interop.Hooks.ResourceLoading;
public unsafe class ResourceService : IDisposable, IRequiredService
public unsafe class ResourceService : IDisposable, Luna.IRequiredService
{
private readonly PerformanceTracker _performance;
private readonly ResourceManagerService _resourceManager;

View file

@ -1,7 +1,6 @@
using Dalamud.Hooking;
using Dalamud.Plugin.Services;
using Dalamud.Utility.Signatures;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.GameData;
using Penumbra.Interop.Structs;
@ -11,7 +10,7 @@ using TextureResourceHandle = Penumbra.Interop.Structs.TextureResourceHandle;
namespace Penumbra.Interop.Hooks.ResourceLoading;
public unsafe class RsfService : IDisposable, IRequiredService
public unsafe class RsfService : IDisposable, Luna.IRequiredService
{
/// <summary>
/// We need to be able to obtain the requested LoD level.

View file

@ -1,9 +1,8 @@
using OtterGui.Services;
using Penumbra.Interop.PathResolving;
namespace Penumbra.Interop.Hooks.Resources;
public sealed unsafe class ResolvePathHooks(HookManager hooks, CharacterBaseVTables vTables, PathState pathState) : IDisposable, IRequiredService
public sealed unsafe class ResolvePathHooks(Luna.HookManager hooks, CharacterBaseVTables vTables, PathState pathState) : IDisposable, Luna.IRequiredService
{
// @formatter:off
private readonly ResolvePathHooksBase _human = new("Human", hooks, pathState, vTables.HumanVTable, ResolvePathHooksBase.Type.Human);

View file

@ -1,13 +1,10 @@
using System.Text.Unicode;
using Dalamud.Hooking;
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;
using OtterGui.Services;
using Penumbra.Collections;
using Penumbra.GameData.Enums;
using Penumbra.GameData.Structs;
using Penumbra.Interop.PathResolving;
using Penumbra.Interop.Processing;
using static FFXIVClientStructs.FFXIV.Client.Game.Character.ActionEffectHandler;
namespace Penumbra.Interop.Hooks.Resources;
@ -50,7 +47,7 @@ public sealed unsafe class ResolvePathHooksBase : IDisposable
private readonly PathState _parent;
public ResolvePathHooksBase(string name, HookManager hooks, PathState parent, nint* vTable, Type type)
public ResolvePathHooksBase(string name, Luna.HookManager hooks, PathState parent, nint* vTable, Type type)
{
_parent = parent;
// @formatter:off
@ -329,7 +326,7 @@ public sealed unsafe class ResolvePathHooksBase : IDisposable
[MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)]
[return: NotNullIfNotNull(nameof(other))]
private static Hook<T>? Create<T>(string name, HookManager hooks, nint address, Type type, T? other, T human) where T : Delegate
private static Hook<T>? Create<T>(string name, Luna.HookManager hooks, nint address, Type type, T? other, T human) where T : Delegate
{
var del = type switch
{
@ -343,7 +340,7 @@ public sealed unsafe class ResolvePathHooksBase : IDisposable
}
[MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)]
private static Hook<T> Create<T>(string name, HookManager hooks, nint address, T del) where T : Delegate
private static Hook<T> Create<T>(string name, Luna.HookManager hooks, nint address, T del) where T : Delegate
=> hooks.CreateHook(name, address, del).Result;

View file

@ -1,13 +1,12 @@
using Dalamud.Hooking;
using OtterGui.Classes;
using OtterGui.Services;
using Penumbra.GameData;
using Penumbra.Interop.Structs;
using Penumbra.UI.ResourceWatcher;
namespace Penumbra.Interop.Hooks.Resources;
public sealed unsafe class ResourceHandleDestructor : EventWrapperPtr<ResourceHandle, ResourceHandleDestructor.Priority>, IHookService
public sealed unsafe class ResourceHandleDestructor : EventWrapperPtr<ResourceHandle, ResourceHandleDestructor.Priority>, Luna.IHookService
{
public enum Priority
{
@ -24,7 +23,7 @@ public sealed unsafe class ResourceHandleDestructor : EventWrapperPtr<ResourceHa
ResourceWatcher,
}
public ResourceHandleDestructor(HookManager hooks)
public ResourceHandleDestructor(Luna.HookManager hooks)
: base("Destroy ResourceHandle")
=> _task = hooks.CreateHook<Delegate>(Name, Sigs.ResourceHandleDestructor, Detour,
!HookOverrides.Instance.Resources.ResourceHandleDestructor);

View file

@ -2,7 +2,6 @@ using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;
using FFXIVClientStructs.FFXIV.Client.UI.Agent;
using OtterGui.Extensions;
using OtterGui.Services;
using Penumbra.Collections;
using Penumbra.Collections.Manager;
using Penumbra.GameData.Actors;
@ -31,7 +30,7 @@ public sealed unsafe class CollectionResolver(
TempCollectionManager tempCollections,
DrawObjectState drawObjectState,
HumanModelList humanModels)
: IService
: Luna.IService
{
/// <summary>
/// Get the collection applying to the current player character

View file

@ -1,7 +1,6 @@
using Dalamud.Game.ClientState.Objects.Types;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game.Character;
using OtterGui.Services;
using Penumbra.GameData.Enums;
using Penumbra.GameData.Interop;
using Penumbra.Interop.Hooks.Objects;
@ -9,7 +8,7 @@ using Penumbra.String;
namespace Penumbra.Interop.PathResolving;
public sealed class CutsceneService : IRequiredService, IDisposable
public sealed class CutsceneService : Luna.IRequiredService, IDisposable
{
public const int CutsceneStartIdx = (int)ScreenActor.CutsceneStart;
public const int CutsceneEndIdx = (int)ScreenActor.CutsceneEnd;

View file

@ -1,7 +1,6 @@
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game.Character;
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;
using OtterGui.Services;
using Penumbra.GameData.Interop;
using Object = FFXIVClientStructs.FFXIV.Client.Graphics.Scene.Object;
using Penumbra.GameData.Structs;
@ -9,7 +8,7 @@ using Penumbra.Interop.Hooks.Objects;
namespace Penumbra.Interop.PathResolving;
public sealed class DrawObjectState : IDisposable, IReadOnlyDictionary<Model, (Actor, ObjectIndex, bool)>, IService
public sealed class DrawObjectState : IDisposable, IReadOnlyDictionary<Model, (Actor, ObjectIndex, bool)>, Luna.IService
{
private readonly ObjectManager _objects;
private readonly CreateCharacterBase _createCharacterBase;

View file

@ -1,7 +1,6 @@
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game.Character;
using FFXIVClientStructs.FFXIV.Client.Game.Object;
using OtterGui.Services;
using Penumbra.Collections;
using Penumbra.Collections.Manager;
using Penumbra.Communication;
@ -12,7 +11,7 @@ using Penumbra.Services;
namespace Penumbra.Interop.PathResolving;
public unsafe class IdentifiedCollectionCache : IDisposable, IEnumerable<(nint Address, ActorIdentifier Identifier, ModCollection Collection)>,
IService
Luna.IService
{
private readonly CommunicatorService _communicator;
private readonly CharacterDestructor _characterDestructor;

View file

@ -1,6 +1,5 @@
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;
using OtterGui.Classes;
using OtterGui.Services;
using Penumbra.Collections;
using Penumbra.Api.Enums;
using Penumbra.GameData.Structs;
@ -35,7 +34,7 @@ namespace Penumbra.Interop.PathResolving;
// ChangeCustomize and RspSetupCharacter, which is hooked here, as well as Character.CalculateHeight.
// GMP Entries seem to be only used by "48 8B ?? 53 55 57 48 83 ?? ?? 48 8B", which is SetupVisor.
public sealed unsafe class MetaState : IDisposable, IService
public sealed unsafe class MetaState : IDisposable, Luna.IService
{
public readonly Configuration Config;
private readonly CommunicatorService _communicator;

View file

@ -1,5 +1,4 @@
using FFXIVClientStructs.FFXIV.Client.System.Resource;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Collections;
using Penumbra.Collections.Manager;
@ -10,7 +9,7 @@ using Penumbra.Util;
namespace Penumbra.Interop.PathResolving;
public class PathResolver : IDisposable, IService
public class PathResolver : IDisposable, Luna.IService
{
private readonly PerformanceTracker _performance;
private readonly Configuration _config;

View file

@ -1,4 +1,3 @@
using OtterGui.Services;
using Penumbra.Collections;
using Penumbra.Interop.Services;
using Penumbra.String;
@ -6,7 +5,7 @@ using Penumbra.String;
namespace Penumbra.Interop.PathResolving;
public sealed class PathState(CollectionResolver collectionResolver, MetaState metaState, CharacterUtility characterUtility)
: IDisposable, IService
: IDisposable, Luna.IService
{
public readonly CollectionResolver CollectionResolver = collectionResolver;
public readonly MetaState MetaState = metaState;

View file

@ -1,4 +1,3 @@
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Collections;
using Penumbra.Interop.Hooks.ResourceLoading;
@ -13,7 +12,7 @@ namespace Penumbra.Interop.PathResolving;
/// Those are loaded synchronously.
/// Thus, we need to ensure the correct files are loaded when a material is loaded.
/// </summary>
public sealed unsafe class SubfileHelper : IDisposable, IReadOnlyCollection<KeyValuePair<nint, ResolveData>>, IService
public sealed unsafe class SubfileHelper : IDisposable, IReadOnlyCollection<KeyValuePair<nint, ResolveData>>, Luna.IService
{
private readonly GameState _gameState;
private readonly ResourceLoader _loader;

View file

@ -1,5 +1,4 @@
using System.Collections.Frozen;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Interop.Hooks.ResourceLoading;
using Penumbra.Interop.Structs;
@ -8,18 +7,18 @@ using Penumbra.String.Classes;
namespace Penumbra.Interop.Processing;
public interface IFilePostProcessor : IService
public interface IFilePostProcessor : Luna.IService
{
public ResourceType Type { get; }
public unsafe void PostProcess(ResourceHandle* resource, CiByteString originalGamePath, ReadOnlySpan<byte> additionalData);
}
public unsafe class FilePostProcessService : IRequiredService, IDisposable
public unsafe class FilePostProcessService : Luna.IRequiredService, IDisposable
{
private readonly ResourceLoader _resourceLoader;
private readonly FrozenDictionary<ResourceType, IFilePostProcessor> _processors;
public FilePostProcessService(ResourceLoader resourceLoader, ServiceManager services)
public FilePostProcessService(ResourceLoader resourceLoader, Luna.ServiceManager services)
{
_resourceLoader = resourceLoader;
_processors = services.GetServicesImplementing<IFilePostProcessor>().ToFrozenDictionary(s => s.Type, s => s);

View file

@ -1,5 +1,4 @@
using System.Collections.Frozen;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.Collections;
using Penumbra.String;
@ -7,18 +6,18 @@ using Penumbra.String.Classes;
namespace Penumbra.Interop.Processing;
public interface IPathPreProcessor : IService
public interface IPathPreProcessor : Luna.IService
{
public ResourceType Type { get; }
public FullPath? PreProcess(ResolveData resolveData, CiByteString path, Utf8GamePath originalGamePath, bool nonDefault, FullPath? resolved);
}
public class GamePathPreProcessService : IService
public class GamePathPreProcessService : Luna.IService
{
private readonly FrozenDictionary<ResourceType, IPathPreProcessor> _processors;
public GamePathPreProcessService(ServiceManager services)
public GamePathPreProcessService(Luna.ServiceManager services)
{
_processors = services.GetServicesImplementing<IPathPreProcessor>().ToFrozenDictionary(s => s.Type, s => s);
}

View file

@ -1,7 +1,6 @@
using Dalamud.Game.ClientState.Objects.Types;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game.Object;
using OtterGui.Services;
using Penumbra.Api.Enums;
using Penumbra.GameData.Actors;
using Penumbra.GameData.Data;
@ -24,7 +23,7 @@ public class ResourceTreeFactory(
ActorManager actors,
PathState pathState,
IFramework framework,
ModManager modManager) : IService
ModManager modManager) : Luna.IService
{
private static readonly string ParentDirectoryPrefix = $"..{Path.DirectorySeparatorChar}";

View file

@ -1,13 +1,12 @@
using Dalamud.Plugin.Services;
using Dalamud.Utility.Signatures;
using OtterGui.Services;
using Penumbra.Communication;
using Penumbra.GameData;
using Penumbra.Interop.Structs;
namespace Penumbra.Interop.Services;
public unsafe class CharacterUtility : IDisposable, IRequiredService
public unsafe class CharacterUtility : IDisposable, Luna.IRequiredService
{
public record struct InternalIndex(int Value);

View file

@ -1,8 +1,6 @@
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.System.Framework;
using FFXIVClientStructs.FFXIV.Component.GUI;
using OtterGui.Services;
using Penumbra.GameData;
namespace Penumbra.Interop.Services;
@ -10,7 +8,7 @@ namespace Penumbra.Interop.Services;
/// Handle font reloading via game functions.
/// May cause a interface flicker while reloading.
/// </summary>
public unsafe class FontReloader : IService
public unsafe class FontReloader : Luna.IService
{
public bool Valid
=> _reloadFontsFunc != null;

View file

@ -1,12 +1,11 @@
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Graphics.Render;
using FFXIVClientStructs.FFXIV.Client.System.Resource.Handle;
using OtterGui.Services;
using ModelRendererData = FFXIVClientStructs.FFXIV.Client.Graphics.Render.ModelRenderer;
namespace Penumbra.Interop.Services;
public unsafe class ModelRenderer : IDisposable, IRequiredService
public unsafe class ModelRenderer : IDisposable, Luna.IRequiredService
{
public bool Ready { get; private set; }

View file

@ -6,7 +6,6 @@ using Dalamud.Game.ClientState.Objects.Types;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game;
using FFXIVClientStructs.FFXIV.Client.Game.Character;
using OtterGui.Services;
using Penumbra.Api;
using Penumbra.Api.Enums;
using Penumbra.Communication;
@ -20,7 +19,7 @@ using Character = FFXIVClientStructs.FFXIV.Client.Game.Character.Character;
namespace Penumbra.Interop.Services;
public unsafe partial class RedrawService : IService
public unsafe partial class RedrawService : Luna.IService
{
public const int GPosePlayerIdx = 201;
public const int GPoseSlots = 42;

View file

@ -1,11 +1,10 @@
using Dalamud.Plugin.Services;
using Dalamud.Utility.Signatures;
using OtterGui.Services;
using Penumbra.GameData;
namespace Penumbra.Interop.Services;
public unsafe class ResidentResourceManager : IService
public unsafe class ResidentResourceManager : Luna.IService
{
// A static pointer to the resident resource manager address.
[Signature(Sigs.ResidentResourceManager, ScanType = ScanType.StaticAddress)]

View file

@ -3,7 +3,6 @@ using Dalamud.Plugin.Services;
using Dalamud.Utility.Signatures;
using FFXIVClientStructs.FFXIV.Client.System.Scheduler.Resource;
using Lumina.Excel.Sheets;
using OtterGui.Services;
using Penumbra.Collections;
using Penumbra.Communication;
using Penumbra.GameData;
@ -14,7 +13,7 @@ using Penumbra.String.Classes;
namespace Penumbra.Interop.Services;
public unsafe class SchedulerResourceManagementService : IService, IDisposable
public unsafe class SchedulerResourceManagementService : Luna.IService, IDisposable
{
private static readonly CiByteString TmbExtension = new(".tmb"u8, MetaDataComputation.All);
private static readonly CiByteString FolderPrefix = new("chara/action/"u8, MetaDataComputation.All);

View file

@ -1,6 +1,5 @@
using Dalamud.Bindings.ImGui;
using FFXIVClientStructs.FFXIV.Client.Graphics.Kernel;
using OtterGui.Services;
using SharpDX.Direct3D;
using SharpDX.Direct3D11;
@ -9,7 +8,7 @@ namespace Penumbra.Interop.Services;
/// <summary>
/// Creates ImGui handles over slices of array textures, and manages their lifetime.
/// </summary>
public sealed unsafe class TextureArraySlicer : IUiService, IDisposable
public sealed unsafe class TextureArraySlicer : Luna.IUiService, IDisposable
{
private const uint InitialTimeToLive = 2;

View file

@ -1,12 +1,11 @@
using System.Collections.Frozen;
using Dalamud.Plugin.Services;
using OtterGui.Services;
using Penumbra.GameData.Enums;
using Penumbra.GameData.Files;
namespace Penumbra.Interop.Hooks.Meta;
namespace Penumbra.Meta;
public sealed unsafe class AtchManager : IService
public sealed unsafe class AtchManager : Luna.IService
{
private static readonly IReadOnlyList<GenderRace> GenderRaces =
[

View file

@ -1,8 +1,6 @@
using Dalamud.Memory;
using Dalamud.Plugin.Services;
using Dalamud.Utility.Signatures;
using FFXIVClientStructs.FFXIV.Client.System.Memory;
using OtterGui.Services;
using Penumbra.GameData;
using Penumbra.Interop.Structs;
using Penumbra.String.Functions;
@ -42,7 +40,7 @@ public sealed class MarshalAllocator : IFileAllocator
}
}
public sealed unsafe class XivFileAllocator : IFileAllocator, IService
public sealed unsafe class XivFileAllocator : IFileAllocator, Luna.IService
{
/// <summary>
/// Allocate in the games space for file storage.
@ -73,7 +71,7 @@ public sealed unsafe class XivFileAllocator : IFileAllocator, IService
}
}
public sealed unsafe class XivDefaultAllocator : IFileAllocator, IService
public sealed unsafe class XivDefaultAllocator : IFileAllocator, Luna.IService
{
public T* Allocate<T>(int length, int alignment = 1) where T : unmanaged
{

View file

@ -1,6 +1,5 @@
using Dalamud.Plugin.Services;
using OtterGui.Compression;
using OtterGui.Services;
using Penumbra.Collections;
using Penumbra.Collections.Manager;
using Penumbra.GameData.Data;
@ -15,7 +14,7 @@ using ResidentResourceManager = Penumbra.Interop.Services.ResidentResourceManage
namespace Penumbra.Meta;
public class MetaFileManager : IService
public class MetaFileManager : Luna.IService
{
internal readonly Configuration Config;
internal readonly CharacterUtility CharacterUtility;

View file

@ -1,4 +1,3 @@
using OtterGui.Services;
using Penumbra.Collections;
using Penumbra.Collections.Cache;
using Penumbra.GameData.Enums;
@ -9,7 +8,7 @@ using Penumbra.Meta.Manipulations;
namespace Penumbra.Meta;
public unsafe class ShapeAttributeManager : IRequiredService, IDisposable
public unsafe class ShapeAttributeManager : Luna.IRequiredService, IDisposable
{
public const int NumSlots = 14;
public const int ModelSlotSize = 18;

View file

@ -1,5 +1,4 @@
using OtterGui.Classes;
using OtterGui.Services;
using Penumbra.Mods.Groups;
using Penumbra.Mods.Manager;
using Penumbra.Mods.SubMods;
@ -8,7 +7,7 @@ using Penumbra.String.Classes;
namespace Penumbra.Mods.Editor;
public class DuplicateManager(ModManager modManager, SaveService saveService, Configuration config) : IService
public class DuplicateManager(ModManager modManager, SaveService saveService, Configuration config) : Luna.IService
{
private readonly SHA256 _hasher = SHA256.Create();
private readonly List<(FullPath[] Paths, long Size, byte[] Hash)> _duplicates = [];

View file

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

View file

@ -1,5 +1,4 @@
using OtterGui.Compression;
using OtterGui.Services;
using Penumbra.Mods.Groups;
using Penumbra.Mods.SubMods;
@ -14,7 +13,7 @@ public class ModEditor(
ModSwapEditor swapEditor,
MdlMaterialEditor mdlMaterialEditor,
FileCompactor compactor)
: IDisposable, IService
: IDisposable, Luna.IService
{
public readonly ModNormalizer ModNormalizer = modNormalizer;
public readonly ModMetaEditor MetaEditor = metaEditor;

Some files were not shown because too many files have changed in this diff Show more