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 path = Penumbra.GameData
url = https://github.com/Ottermandias/Penumbra.GameData.git url = https://github.com/Ottermandias/Penumbra.GameData.git
branch = main 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 schemas\structs\option.json = schemas\structs\option.json
EndProjectSection EndProjectSection
EndProject 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 Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64 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}.Debug|x64.Build.0 = Debug|x64
{EE834491-A98F-4395-BE0D-6861AE5AD953}.Release|x64.ActiveCfg = Release|x64 {EE834491-A98F-4395-BE0D-6861AE5AD953}.Release|x64.ActiveCfg = Release|x64
{EE834491-A98F-4395-BE0D-6861AE5AD953}.Release|x64.Build.0 = 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 EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View file

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

View file

@ -1,4 +1,3 @@
using OtterGui.Services;
using Penumbra.Api.Enums; using Penumbra.Api.Enums;
using Penumbra.Collections; using Penumbra.Collections;
using Penumbra.Collections.Manager; using Penumbra.Collections.Manager;
@ -6,7 +5,7 @@ using Penumbra.Mods;
namespace Penumbra.Api.Api; 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() public Dictionary<Guid, string> GetCollections()
=> collections.Storage.ToDictionary(c => c.Identity.Id, c => c.Identity.Name); => 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 Penumbra.Import.Textures;
using TextureType = Penumbra.Api.Enums.TextureType; using TextureType = Penumbra.Api.Enums.TextureType;
namespace Penumbra.Api.Api; 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) public Task ConvertTextureFile(string inputFile, string outputFile, TextureType textureType, bool mipMaps)
=> textureType switch => textureType switch

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,13 +1,12 @@
using System.Collections.Frozen; using System.Collections.Frozen;
using Newtonsoft.Json; using Newtonsoft.Json;
using OtterGui.Services;
using Penumbra.Communication; using Penumbra.Communication;
using Penumbra.Mods; using Penumbra.Mods;
using Penumbra.Services; using Penumbra.Services;
namespace Penumbra.Api.Api; 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() public string GetModDirectory()
=> config.ModDirectory; => config.ModDirectory;

View file

@ -1,12 +1,11 @@
using Dalamud.Game.ClientState.Objects.Types; using Dalamud.Game.ClientState.Objects.Types;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using OtterGui.Services;
using Penumbra.Api.Enums; using Penumbra.Api.Enums;
using Penumbra.Interop.Services; using Penumbra.Interop.Services;
namespace Penumbra.Api.Api; 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) public void RedrawObject(int gameObjectIndex, RedrawType setting)
{ {

View file

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

View file

@ -1,6 +1,5 @@
using Dalamud.Game.ClientState.Objects.Types; using Dalamud.Game.ClientState.Objects.Types;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using OtterGui.Services;
using Penumbra.Api.Enums; using Penumbra.Api.Enums;
using Penumbra.Api.Helpers; using Penumbra.Api.Helpers;
using Penumbra.GameData.Interop; using Penumbra.GameData.Interop;
@ -8,7 +7,7 @@ using Penumbra.Interop.ResourceTree;
namespace Penumbra.Api.Api; 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) public Dictionary<string, HashSet<string>>?[] GetGameObjectResourcePaths(params ushort[] gameObjects)
{ {

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -6,7 +6,6 @@ using Dalamud.Plugin;
using OtterGui; using OtterGui;
using OtterGui.Extensions; using OtterGui.Extensions;
using OtterGui.Raii; using OtterGui.Raii;
using OtterGui.Services;
using Penumbra.Api.Enums; using Penumbra.Api.Enums;
using Penumbra.Api.Helpers; using Penumbra.Api.Helpers;
using Penumbra.Api.IpcSubscribers; using Penumbra.Api.IpcSubscribers;
@ -16,7 +15,7 @@ using Penumbra.GameData.Structs;
namespace Penumbra.Api.IpcTester; 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(); private readonly Stopwatch _stopwatch = new();

View file

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

View file

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

View file

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

View file

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

View file

@ -1,12 +1,11 @@
using OtterGui.Classes; using OtterGui.Classes;
using OtterGui.Services;
using Penumbra.GameData.Structs; using Penumbra.GameData.Structs;
using Penumbra.Meta.Manipulations; using Penumbra.Meta.Manipulations;
using Penumbra.Mods.Editor; using Penumbra.Mods.Editor;
namespace Penumbra.Collections.Cache; 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> _doNotHideEarrings = [];
private readonly HashSet<PrimaryId> _doNotHideNecklace = []; private readonly HashSet<PrimaryId> _doNotHideNecklace = [];

View file

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

View file

@ -3,7 +3,6 @@ using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using OtterGui.Classes; using OtterGui.Classes;
using OtterGui.Extensions; using OtterGui.Extensions;
using OtterGui.Services;
using Penumbra.Communication; using Penumbra.Communication;
using Penumbra.GameData.Actors; using Penumbra.GameData.Actors;
using Penumbra.GameData.Enums; using Penumbra.GameData.Enums;
@ -12,7 +11,7 @@ using Penumbra.UI;
namespace Penumbra.Collections.Manager; namespace Penumbra.Collections.Manager;
public class ActiveCollectionData : IService public class ActiveCollectionData : Luna.IService
{ {
public ModCollection Current { get; internal set; } = ModCollection.Empty; public ModCollection Current { get; internal set; } = ModCollection.Empty;
public ModCollection Default { 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 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; public const int Version = 2;

View file

@ -1,5 +1,4 @@
using OtterGui.Extensions; using OtterGui.Extensions;
using OtterGui.Services;
using Penumbra.Api.Enums; using Penumbra.Api.Enums;
using Penumbra.Mods; using Penumbra.Mods;
using Penumbra.Mods.Manager; using Penumbra.Mods.Manager;
@ -8,7 +7,7 @@ using Penumbra.Services;
namespace Penumbra.Collections.Manager; 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> /// <summary> Enable or disable the mod inheritance of mod idx. </summary>
public bool SetModInheritance(ModCollection collection, Mod mod, bool inherit) public bool SetModInheritance(ModCollection collection, Mod mod, bool inherit)

View file

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

View file

@ -1,7 +1,6 @@
using Dalamud.Interface.ImGuiNotification; using Dalamud.Interface.ImGuiNotification;
using OtterGui.Classes; using OtterGui.Classes;
using OtterGui.Extensions; using OtterGui.Extensions;
using OtterGui.Services;
using Penumbra.Communication; using Penumbra.Communication;
using Penumbra.Mods; using Penumbra.Mods;
using Penumbra.Mods.Editor; using Penumbra.Mods.Editor;
@ -23,7 +22,7 @@ public readonly record struct LocalCollectionId(int Id) : IAdditionOperators<Loc
=> new(left.Id + right); => 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 CommunicatorService _communicator;
private readonly SaveService _saveService; private readonly SaveService _saveService;

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,12 +1,11 @@
using Dalamud.Hooking; using Dalamud.Hooking;
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene; using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;
using OtterGui.Classes; using OtterGui.Classes;
using OtterGui.Services;
using Penumbra.GameData.Structs; using Penumbra.GameData.Structs;
namespace Penumbra.Interop.Hooks.Objects; 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 public enum Priority
{ {
@ -14,7 +13,7 @@ public sealed unsafe class CreateCharacterBase : EventWrapperPtr<ModelCharaId, C
MetaState = 0, MetaState = 0,
} }
public CreateCharacterBase(HookManager hooks) public CreateCharacterBase(Luna.HookManager hooks)
: base("Create CharacterBase") : base("Create CharacterBase")
=> _task = hooks.CreateHook<Delegate>(Name, Address, Detour, !HookOverrides.Instance.Objects.CreateCharacterBase); => _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, /// 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. /// so we always keep track of the current GameObject to be able to link it to the DrawObject.
/// </summary> /// </summary>
public sealed unsafe class EnableDraw : IHookService public sealed unsafe class EnableDraw : Luna.IHookService
{ {
private readonly Task<Hook<Delegate>> _task; private readonly Task<Hook<Delegate>> _task;
private readonly GameState _state; private readonly GameState _state;

View file

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

View file

@ -1,7 +1,6 @@
using Dalamud.Hooking; using Dalamud.Hooking;
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene; using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;
using OtterGui.Classes; using OtterGui.Classes;
using OtterGui.Services;
using Penumbra.Collections; using Penumbra.Collections;
using Penumbra.GameData; using Penumbra.GameData;
using Penumbra.GameData.Interop; 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 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> /// <item>Parameter is the slot that was recomputed. If this is Unknown, it is a general new update call. </item>
/// </list> </summary> /// </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 public enum Priority
{ {
@ -29,7 +28,7 @@ public sealed unsafe class AttributeHook : EventWrapper<Actor, Model, ModCollect
private readonly CollectionResolver _resolver; private readonly CollectionResolver _resolver;
private readonly Configuration _config; 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") : base("Update Model Attributes")
{ {
_config = config; _config = config;

View file

@ -2,7 +2,6 @@ using Dalamud.Hooking;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene; using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;
using FFXIVClientStructs.FFXIV.Client.System.Resource; using FFXIVClientStructs.FFXIV.Client.System.Resource;
using OtterGui.Services;
using Penumbra.Api.Enums; using Penumbra.Api.Enums;
using Penumbra.Interop.Hooks.ResourceLoading; using Penumbra.Interop.Hooks.ResourceLoading;
using Penumbra.Interop.PathResolving; using Penumbra.Interop.PathResolving;
@ -13,7 +12,7 @@ using CharacterUtility = Penumbra.Interop.Services.CharacterUtility;
namespace Penumbra.Interop.Hooks.PostProcessing; 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 = public static readonly Utf8GamePath PreBoneDeformerPath =
Utf8GamePath.FromSpan("chara/xls/boneDeformer/human.pbd"u8, MetaDataComputation.All, out var p) ? p : Utf8GamePath.Empty; 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; private readonly HumanSetupScalingHook _humanSetupScalingHook;
public PreBoneDeformerReplacer(CharacterUtility utility, CollectionResolver collectionResolver, ResourceLoader resourceLoader, 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; _utility = utility;
_collectionResolver = collectionResolver; _collectionResolver = collectionResolver;

View file

@ -2,17 +2,15 @@ using System.Collections.Immutable;
using Dalamud.Hooking; using Dalamud.Hooking;
using Dalamud.Plugin; using Dalamud.Plugin;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using Dalamud.Utility.Signatures;
using FFXIVClientStructs.FFXIV.Client.Graphics.Kernel; using FFXIVClientStructs.FFXIV.Client.Graphics.Kernel;
using FFXIVClientStructs.FFXIV.Client.Graphics.Render; using FFXIVClientStructs.FFXIV.Client.Graphics.Render;
using OtterGui.Services;
using Penumbra.GameData; using Penumbra.GameData;
using Penumbra.Interop.Hooks.ResourceLoading; using Penumbra.Interop.Hooks.ResourceLoading;
using Penumbra.Services; using Penumbra.Services;
namespace Penumbra.Interop.Hooks.PostProcessing; 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> /// <remarks> This array must be sorted by CreationOrder ascending. </remarks>
private static readonly ImmutableArray<ForcedTextureConfig> ForcedTextureConfigs = 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.Graphics.Scene;
using FFXIVClientStructs.FFXIV.Client.System.Resource.Handle; using FFXIVClientStructs.FFXIV.Client.System.Resource.Handle;
using OtterGui.Classes; using OtterGui.Classes;
using OtterGui.Services;
using Penumbra.Communication; using Penumbra.Communication;
using Penumbra.GameData; using Penumbra.GameData;
using Penumbra.GameData.Files.MaterialStructs; using Penumbra.GameData.Files.MaterialStructs;
@ -18,7 +17,7 @@ using ModelRenderer = Penumbra.Interop.Services.ModelRenderer;
namespace Penumbra.Interop.Hooks.PostProcessing; 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 public static ReadOnlySpan<byte> SkinShpkName
=> "skin.shpk"u8; => "skin.shpk"u8;
@ -107,7 +106,7 @@ public sealed unsafe class ShaderReplacementFixer : IDisposable, IRequiredServic
=> _hairMaskState.MaterialCount; => _hairMaskState.MaterialCount;
public ShaderReplacementFixer(ResourceHandleDestructor resourceHandleDestructor, CharacterUtility utility, ModelRenderer modelRenderer, 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; _resourceHandleDestructor = resourceHandleDestructor;
_communicator = communicator; _communicator = communicator;

View file

@ -1,6 +1,5 @@
using Dalamud.Hooking; using Dalamud.Hooking;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using OtterGui.Services;
using Penumbra.String; using Penumbra.String;
using Penumbra.String.Classes; using Penumbra.String.Classes;
using Penumbra.String.Functions; 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. /// 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. /// Then we translate the stored pointer to the path in CreateFileW, if the prefix matches.
/// </summary> /// </summary>
public unsafe class CreateFileWHook : IDisposable, IRequiredService public unsafe class CreateFileWHook : IDisposable, Luna.IRequiredService
{ {
public const int Size = 28; public const int Size = 28;

View file

@ -1,14 +1,13 @@
using Dalamud.Hooking; using Dalamud.Hooking;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using Dalamud.Utility.Signatures; using Dalamud.Utility.Signatures;
using OtterGui.Services;
using Penumbra.GameData; using Penumbra.GameData;
using Penumbra.Interop.Structs; using Penumbra.Interop.Structs;
using Penumbra.Util; using Penumbra.Util;
namespace Penumbra.Interop.Hooks.ResourceLoading; 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) public FileReadService(PerformanceTracker performance, ResourceManagerService resourceManager, IGameInteropProvider interop)
{ {

View file

@ -1,13 +1,12 @@
using System.IO.MemoryMappedFiles; using System.IO.MemoryMappedFiles;
using Iced.Intel; using Iced.Intel;
using OtterGui.Services;
using PeNet; using PeNet;
using Decoder = Iced.Intel.Decoder; using Decoder = Iced.Intel.Decoder;
namespace Penumbra.Interop.Hooks.ResourceLoading; 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 // 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 MemoryMappedFile _file;
private readonly MemoryMappedViewAccessor _textSection; private readonly MemoryMappedViewAccessor _textSection;

View file

@ -1,5 +1,4 @@
using FFXIVClientStructs.FFXIV.Client.System.Resource; using FFXIVClientStructs.FFXIV.Client.System.Resource;
using OtterGui.Services;
using Penumbra.Api.Enums; using Penumbra.Api.Enums;
using Penumbra.Collections; using Penumbra.Collections;
using Penumbra.Interop.Hooks.Resources; using Penumbra.Interop.Hooks.Resources;
@ -12,7 +11,7 @@ using FileMode = Penumbra.Interop.Structs.FileMode;
namespace Penumbra.Interop.Hooks.ResourceLoading; namespace Penumbra.Interop.Hooks.ResourceLoading;
public unsafe class ResourceLoader : IDisposable, IService public unsafe class ResourceLoader : IDisposable, Luna.IService
{ {
private readonly ResourceService _resources; private readonly ResourceService _resources;
private readonly FileReadService _fileReadService; 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.FFXIV.Client.System.Resource.Handle;
using FFXIVClientStructs.Interop; using FFXIVClientStructs.Interop;
using FFXIVClientStructs.STD; using FFXIVClientStructs.STD;
using OtterGui.Services;
using Penumbra.Api.Enums; using Penumbra.Api.Enums;
using Penumbra.GameData; using Penumbra.GameData;
namespace Penumbra.Interop.Hooks.ResourceLoading; namespace Penumbra.Interop.Hooks.ResourceLoading;
public unsafe class ResourceManagerService : IRequiredService public unsafe class ResourceManagerService : Luna.IRequiredService
{ {
public ResourceManagerService(IGameInteropProvider interop) public ResourceManagerService(IGameInteropProvider interop)
=> interop.InitializeFromAttributes(this); => interop.InitializeFromAttributes(this);

View file

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

View file

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

View file

@ -1,9 +1,8 @@
using OtterGui.Services;
using Penumbra.Interop.PathResolving; using Penumbra.Interop.PathResolving;
namespace Penumbra.Interop.Hooks.Resources; 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 // @formatter:off
private readonly ResolvePathHooksBase _human = new("Human", hooks, pathState, vTables.HumanVTable, ResolvePathHooksBase.Type.Human); private readonly ResolvePathHooksBase _human = new("Human", hooks, pathState, vTables.HumanVTable, ResolvePathHooksBase.Type.Human);

View file

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

View file

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

View file

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

View file

@ -1,7 +1,6 @@
using Dalamud.Game.ClientState.Objects.Types; using Dalamud.Game.ClientState.Objects.Types;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game.Character; using FFXIVClientStructs.FFXIV.Client.Game.Character;
using OtterGui.Services;
using Penumbra.GameData.Enums; using Penumbra.GameData.Enums;
using Penumbra.GameData.Interop; using Penumbra.GameData.Interop;
using Penumbra.Interop.Hooks.Objects; using Penumbra.Interop.Hooks.Objects;
@ -9,7 +8,7 @@ using Penumbra.String;
namespace Penumbra.Interop.PathResolving; 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 CutsceneStartIdx = (int)ScreenActor.CutsceneStart;
public const int CutsceneEndIdx = (int)ScreenActor.CutsceneEnd; public const int CutsceneEndIdx = (int)ScreenActor.CutsceneEnd;

View file

@ -1,7 +1,6 @@
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game.Character; using FFXIVClientStructs.FFXIV.Client.Game.Character;
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene; using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;
using OtterGui.Services;
using Penumbra.GameData.Interop; using Penumbra.GameData.Interop;
using Object = FFXIVClientStructs.FFXIV.Client.Graphics.Scene.Object; using Object = FFXIVClientStructs.FFXIV.Client.Graphics.Scene.Object;
using Penumbra.GameData.Structs; using Penumbra.GameData.Structs;
@ -9,7 +8,7 @@ using Penumbra.Interop.Hooks.Objects;
namespace Penumbra.Interop.PathResolving; 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 ObjectManager _objects;
private readonly CreateCharacterBase _createCharacterBase; private readonly CreateCharacterBase _createCharacterBase;

View file

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

View file

@ -1,6 +1,5 @@
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene; using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;
using OtterGui.Classes; using OtterGui.Classes;
using OtterGui.Services;
using Penumbra.Collections; using Penumbra.Collections;
using Penumbra.Api.Enums; using Penumbra.Api.Enums;
using Penumbra.GameData.Structs; using Penumbra.GameData.Structs;
@ -35,7 +34,7 @@ namespace Penumbra.Interop.PathResolving;
// ChangeCustomize and RspSetupCharacter, which is hooked here, as well as Character.CalculateHeight. // 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. // 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; public readonly Configuration Config;
private readonly CommunicatorService _communicator; private readonly CommunicatorService _communicator;

View file

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

View file

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

View file

@ -1,4 +1,3 @@
using OtterGui.Services;
using Penumbra.Api.Enums; using Penumbra.Api.Enums;
using Penumbra.Collections; using Penumbra.Collections;
using Penumbra.Interop.Hooks.ResourceLoading; using Penumbra.Interop.Hooks.ResourceLoading;
@ -13,7 +12,7 @@ namespace Penumbra.Interop.PathResolving;
/// Those are loaded synchronously. /// Those are loaded synchronously.
/// Thus, we need to ensure the correct files are loaded when a material is loaded. /// Thus, we need to ensure the correct files are loaded when a material is loaded.
/// </summary> /// </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 GameState _gameState;
private readonly ResourceLoader _loader; private readonly ResourceLoader _loader;

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -6,7 +6,6 @@ using Dalamud.Game.ClientState.Objects.Types;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game; using FFXIVClientStructs.FFXIV.Client.Game;
using FFXIVClientStructs.FFXIV.Client.Game.Character; using FFXIVClientStructs.FFXIV.Client.Game.Character;
using OtterGui.Services;
using Penumbra.Api; using Penumbra.Api;
using Penumbra.Api.Enums; using Penumbra.Api.Enums;
using Penumbra.Communication; using Penumbra.Communication;
@ -20,7 +19,7 @@ using Character = FFXIVClientStructs.FFXIV.Client.Game.Character.Character;
namespace Penumbra.Interop.Services; 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 GPosePlayerIdx = 201;
public const int GPoseSlots = 42; public const int GPoseSlots = 42;

View file

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

View file

@ -3,7 +3,6 @@ using Dalamud.Plugin.Services;
using Dalamud.Utility.Signatures; using Dalamud.Utility.Signatures;
using FFXIVClientStructs.FFXIV.Client.System.Scheduler.Resource; using FFXIVClientStructs.FFXIV.Client.System.Scheduler.Resource;
using Lumina.Excel.Sheets; using Lumina.Excel.Sheets;
using OtterGui.Services;
using Penumbra.Collections; using Penumbra.Collections;
using Penumbra.Communication; using Penumbra.Communication;
using Penumbra.GameData; using Penumbra.GameData;
@ -14,7 +13,7 @@ using Penumbra.String.Classes;
namespace Penumbra.Interop.Services; 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 TmbExtension = new(".tmb"u8, MetaDataComputation.All);
private static readonly CiByteString FolderPrefix = new("chara/action/"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 Dalamud.Bindings.ImGui;
using FFXIVClientStructs.FFXIV.Client.Graphics.Kernel; using FFXIVClientStructs.FFXIV.Client.Graphics.Kernel;
using OtterGui.Services;
using SharpDX.Direct3D; using SharpDX.Direct3D;
using SharpDX.Direct3D11; using SharpDX.Direct3D11;
@ -9,7 +8,7 @@ namespace Penumbra.Interop.Services;
/// <summary> /// <summary>
/// Creates ImGui handles over slices of array textures, and manages their lifetime. /// Creates ImGui handles over slices of array textures, and manages their lifetime.
/// </summary> /// </summary>
public sealed unsafe class TextureArraySlicer : IUiService, IDisposable public sealed unsafe class TextureArraySlicer : Luna.IUiService, IDisposable
{ {
private const uint InitialTimeToLive = 2; private const uint InitialTimeToLive = 2;

View file

@ -1,12 +1,11 @@
using System.Collections.Frozen; using System.Collections.Frozen;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using OtterGui.Services;
using Penumbra.GameData.Enums; using Penumbra.GameData.Enums;
using Penumbra.GameData.Files; 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 = private static readonly IReadOnlyList<GenderRace> GenderRaces =
[ [

View file

@ -1,8 +1,6 @@
using Dalamud.Memory;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using Dalamud.Utility.Signatures; using Dalamud.Utility.Signatures;
using FFXIVClientStructs.FFXIV.Client.System.Memory; using FFXIVClientStructs.FFXIV.Client.System.Memory;
using OtterGui.Services;
using Penumbra.GameData; using Penumbra.GameData;
using Penumbra.Interop.Structs; using Penumbra.Interop.Structs;
using Penumbra.String.Functions; 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> /// <summary>
/// Allocate in the games space for file storage. /// 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 public T* Allocate<T>(int length, int alignment = 1) where T : unmanaged
{ {

View file

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

View file

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

View file

@ -1,5 +1,4 @@
using OtterGui.Classes; using OtterGui.Classes;
using OtterGui.Services;
using Penumbra.Mods.Groups; using Penumbra.Mods.Groups;
using Penumbra.Mods.Manager; using Penumbra.Mods.Manager;
using Penumbra.Mods.SubMods; using Penumbra.Mods.SubMods;
@ -8,7 +7,7 @@ using Penumbra.String.Classes;
namespace Penumbra.Mods.Editor; 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 SHA256 _hasher = SHA256.Create();
private readonly List<(FullPath[] Paths, long Size, byte[] Hash)> _duplicates = []; private readonly List<(FullPath[] Paths, long Size, byte[] Hash)> _duplicates = [];

View file

@ -1,12 +1,11 @@
using OtterGui.Compression; using OtterGui.Compression;
using OtterGui.Extensions; using OtterGui.Extensions;
using OtterGui.Services;
using Penumbra.GameData.Enums; using Penumbra.GameData.Enums;
using Penumbra.GameData.Files; using Penumbra.GameData.Files;
namespace Penumbra.Mods.Editor; 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)] [GeneratedRegex(@"/mt_c(?'RaceCode'\d{4})b0001_(?'Suffix'.*?)\.mtrl", RegexOptions.ExplicitCapture | RegexOptions.NonBacktracking)]
private static partial Regex MaterialRegex(); private static partial Regex MaterialRegex();

View file

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

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