Update some Dalamud Services.

This commit is contained in:
Ottermandias 2023-08-10 18:10:26 +02:00
parent 09ca32f33d
commit af536b3423
24 changed files with 78 additions and 91 deletions

@ -1 +1 @@
Subproject commit 9dad955808831a5d154d778d1123acbe648c42ac Subproject commit 863d08bd83381bb7fe4a8d5c514f0ba55379336f

@ -1 +1 @@
Subproject commit e5b733c6fcc5436c8f767dd99a37e5e8c16b4fc8 Subproject commit d84508ea1a607976525265e8f75a329667eec0e5

View file

@ -5,6 +5,7 @@ using Dalamud.Game;
using Dalamud.Game.Command; using Dalamud.Game.Command;
using Dalamud.Game.Gui; using Dalamud.Game.Gui;
using Dalamud.Game.Text.SeStringHandling; using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Plugin.Services;
using ImGuiNET; using ImGuiNET;
using OtterGui.Classes; using OtterGui.Classes;
using Penumbra.Api.Enums; using Penumbra.Api.Enums;
@ -16,7 +17,6 @@ using Penumbra.Mods;
using Penumbra.Mods.Manager; using Penumbra.Mods.Manager;
using Penumbra.Services; using Penumbra.Services;
using Penumbra.UI; using Penumbra.UI;
using Penumbra.Util;
namespace Penumbra; namespace Penumbra;
@ -24,7 +24,7 @@ public class CommandHandler : IDisposable
{ {
private const string CommandName = "/penumbra"; private const string CommandName = "/penumbra";
private readonly CommandManager _commandManager; private readonly ICommandManager _commandManager;
private readonly RedrawService _redrawService; private readonly RedrawService _redrawService;
private readonly ChatGui _chat; private readonly ChatGui _chat;
private readonly Configuration _config; private readonly Configuration _config;
@ -35,7 +35,7 @@ public class CommandHandler : IDisposable
private readonly Penumbra _penumbra; private readonly Penumbra _penumbra;
private readonly CollectionEditor _collectionEditor; private readonly CollectionEditor _collectionEditor;
public CommandHandler(Framework framework, CommandManager commandManager, ChatGui chat, RedrawService redrawService, Configuration config, public CommandHandler(Framework framework, ICommandManager commandManager, ChatGui chat, RedrawService redrawService, Configuration config,
ConfigWindow configWindow, ModManager modManager, CollectionManager collectionManager, ActorService actors, Penumbra penumbra, ConfigWindow configWindow, ModManager modManager, CollectionManager collectionManager, ActorService actors, Penumbra penumbra,
CollectionEditor collectionEditor) CollectionEditor collectionEditor)
{ {

View file

@ -6,8 +6,8 @@ using System.Linq;
using System.Numerics; using System.Numerics;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Dalamud.Data;
using Dalamud.Interface; using Dalamud.Interface;
using Dalamud.Plugin.Services;
using ImGuiScene; using ImGuiScene;
using Lumina.Data.Files; using Lumina.Data.Files;
using OtterGui.Log; using OtterGui.Log;
@ -16,21 +16,20 @@ using OtterTex;
using SixLabors.ImageSharp; using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats.Png; using SixLabors.ImageSharp.Formats.Png;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using Swan;
using Image = SixLabors.ImageSharp.Image; using Image = SixLabors.ImageSharp.Image;
namespace Penumbra.Import.Textures; namespace Penumbra.Import.Textures;
public sealed class TextureManager : SingleTaskQueue, IDisposable public sealed class TextureManager : SingleTaskQueue, IDisposable
{ {
private readonly Logger _logger; private readonly Logger _logger;
private readonly UiBuilder _uiBuilder; private readonly UiBuilder _uiBuilder;
private readonly DataManager _gameData; private readonly IDataManager _gameData;
private readonly ConcurrentDictionary<IAction, (Task, CancellationTokenSource)> _tasks = new(); private readonly ConcurrentDictionary<IAction, (Task, CancellationTokenSource)> _tasks = new();
private bool _disposed = false; private bool _disposed = false;
public TextureManager(UiBuilder uiBuilder, DataManager gameData, Logger logger) public TextureManager(UiBuilder uiBuilder, IDataManager gameData, Logger logger)
{ {
_uiBuilder = uiBuilder; _uiBuilder = uiBuilder;
_gameData = gameData; _gameData = gameData;

View file

@ -1,10 +1,9 @@
using System; using System;
using System.Threading; using System.Threading;
using Dalamud.Game.ClientState.Conditions; using Dalamud.Game.ClientState.Conditions;
using Dalamud.Game.ClientState.Objects;
using Dalamud.Hooking; using Dalamud.Hooking;
using Dalamud.Plugin.Services;
using Dalamud.Utility.Signatures; using Dalamud.Utility.Signatures;
using FFXIVClientStructs.FFXIV.Client.Game.Event;
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene; using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;
using Penumbra.Collections; using Penumbra.Collections;
using Penumbra.GameData; using Penumbra.GameData;
@ -20,7 +19,7 @@ namespace Penumbra.Interop.PathResolving;
public unsafe class AnimationHookService : IDisposable public unsafe class AnimationHookService : IDisposable
{ {
private readonly PerformanceTracker _performance; private readonly PerformanceTracker _performance;
private readonly ObjectTable _objects; private readonly IObjectTable _objects;
private readonly CollectionResolver _collectionResolver; private readonly CollectionResolver _collectionResolver;
private readonly DrawObjectState _drawObjectState; private readonly DrawObjectState _drawObjectState;
private readonly CollectionResolver _resolver; private readonly CollectionResolver _resolver;
@ -29,7 +28,7 @@ public unsafe class AnimationHookService : IDisposable
private readonly ThreadLocal<ResolveData> _animationLoadData = new(() => ResolveData.Invalid, true); private readonly ThreadLocal<ResolveData> _animationLoadData = new(() => ResolveData.Invalid, true);
private readonly ThreadLocal<ResolveData> _characterSoundData = new(() => ResolveData.Invalid, true); private readonly ThreadLocal<ResolveData> _characterSoundData = new(() => ResolveData.Invalid, true);
public AnimationHookService(PerformanceTracker performance, ObjectTable objects, CollectionResolver collectionResolver, public AnimationHookService(PerformanceTracker performance, IObjectTable objects, CollectionResolver collectionResolver,
DrawObjectState drawObjectState, CollectionResolver resolver, Condition conditions) DrawObjectState drawObjectState, CollectionResolver resolver, Condition conditions)
{ {
_performance = performance; _performance = performance;

View file

@ -1,6 +1,5 @@
using System; using System;
using Dalamud.Game.ClientState; using Dalamud.Plugin.Services;
using Dalamud.Game.Gui;
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene; using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;
using Penumbra.Collections; using Penumbra.Collections;
using Penumbra.Collections.Manager; using Penumbra.Collections.Manager;
@ -21,8 +20,8 @@ public unsafe class CollectionResolver
private readonly IdentifiedCollectionCache _cache; private readonly IdentifiedCollectionCache _cache;
private readonly HumanModelList _humanModels; private readonly HumanModelList _humanModels;
private readonly ClientState _clientState; private readonly IClientState _clientState;
private readonly GameGui _gameGui; private readonly IGameGui _gameGui;
private readonly ActorService _actors; private readonly ActorService _actors;
private readonly CutsceneService _cutscenes; private readonly CutsceneService _cutscenes;
@ -31,7 +30,7 @@ public unsafe class CollectionResolver
private readonly TempCollectionManager _tempCollections; private readonly TempCollectionManager _tempCollections;
private readonly DrawObjectState _drawObjectState; private readonly DrawObjectState _drawObjectState;
public CollectionResolver(PerformanceTracker performance, IdentifiedCollectionCache cache, ClientState clientState, GameGui gameGui, public CollectionResolver(PerformanceTracker performance, IdentifiedCollectionCache cache, IClientState clientState, IGameGui gameGui,
ActorService actors, CutsceneService cutscenes, Configuration config, CollectionManager collectionManager, ActorService actors, CutsceneService cutscenes, Configuration config, CollectionManager collectionManager,
TempCollectionManager tempCollections, DrawObjectState drawObjectState, HumanModelList humanModels) TempCollectionManager tempCollections, DrawObjectState drawObjectState, HumanModelList humanModels)
{ {

View file

@ -2,7 +2,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Linq; using System.Linq;
using Dalamud.Game.ClientState.Objects; using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game.Character; using FFXIVClientStructs.FFXIV.Client.Game.Character;
using Penumbra.GameData.Actors; using Penumbra.GameData.Actors;
using Penumbra.Interop.Services; using Penumbra.Interop.Services;
@ -16,7 +16,7 @@ public class CutsceneService : IDisposable
public const int CutsceneSlots = CutsceneEndIdx - CutsceneStartIdx; public const int CutsceneSlots = CutsceneEndIdx - CutsceneStartIdx;
private readonly GameEventManager _events; private readonly GameEventManager _events;
private readonly ObjectTable _objects; private readonly IObjectTable _objects;
private readonly short[] _copiedCharacters = Enumerable.Repeat((short)-1, CutsceneSlots).ToArray(); private readonly short[] _copiedCharacters = Enumerable.Repeat((short)-1, CutsceneSlots).ToArray();
public IEnumerable<KeyValuePair<int, Dalamud.Game.ClientState.Objects.Types.GameObject>> Actors public IEnumerable<KeyValuePair<int, Dalamud.Game.ClientState.Objects.Types.GameObject>> Actors
@ -24,7 +24,7 @@ public class CutsceneService : IDisposable
.Where(i => _objects[i] != null) .Where(i => _objects[i] != null)
.Select(i => KeyValuePair.Create(i, this[i] ?? _objects[i]!)); .Select(i => KeyValuePair.Create(i, this[i] ?? _objects[i]!));
public unsafe CutsceneService(ObjectTable objects, GameEventManager events) public unsafe CutsceneService(IObjectTable objects, GameEventManager events)
{ {
_objects = objects; _objects = objects;
_events = events; _events = events;

View file

@ -4,7 +4,7 @@ using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading; using System.Threading;
using Dalamud.Game.ClientState.Objects; using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game.Object; using FFXIVClientStructs.FFXIV.Client.Game.Object;
using Penumbra.GameData; using Penumbra.GameData;
using Penumbra.Interop.Services; using Penumbra.Interop.Services;
@ -14,7 +14,7 @@ namespace Penumbra.Interop.PathResolving;
public class DrawObjectState : IDisposable, IReadOnlyDictionary<nint, (nint, bool)> public class DrawObjectState : IDisposable, IReadOnlyDictionary<nint, (nint, bool)>
{ {
private readonly ObjectTable _objects; private readonly IObjectTable _objects;
private readonly GameEventManager _gameEvents; private readonly GameEventManager _gameEvents;
private readonly Dictionary<nint, (nint GameObject, bool IsChild)> _drawObjectToGameObject = new(); private readonly Dictionary<nint, (nint GameObject, bool IsChild)> _drawObjectToGameObject = new();
@ -24,7 +24,7 @@ public class DrawObjectState : IDisposable, IReadOnlyDictionary<nint, (nint, boo
public nint LastGameObject public nint LastGameObject
=> _lastGameObject.IsValueCreated && _lastGameObject.Value!.Count > 0 ? _lastGameObject.Value.Peek() : nint.Zero; => _lastGameObject.IsValueCreated && _lastGameObject.Value!.Count > 0 ? _lastGameObject.Value.Peek() : nint.Zero;
public DrawObjectState(ObjectTable objects, GameEventManager gameEvents) public DrawObjectState(IObjectTable objects, GameEventManager gameEvents)
{ {
SignatureHelper.Initialise(this); SignatureHelper.Initialise(this);
_enableDrawHook.Enable(); _enableDrawHook.Enable();

View file

@ -1,7 +1,7 @@
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using Dalamud.Game.ClientState; 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 Penumbra.Collections; using Penumbra.Collections;
@ -17,11 +17,11 @@ public unsafe class IdentifiedCollectionCache : IDisposable, IEnumerable<(nint A
{ {
private readonly CommunicatorService _communicator; private readonly CommunicatorService _communicator;
private readonly GameEventManager _events; private readonly GameEventManager _events;
private readonly ClientState _clientState; private readonly IClientState _clientState;
private readonly Dictionary<nint, (ActorIdentifier, ModCollection)> _cache = new(317); private readonly Dictionary<nint, (ActorIdentifier, ModCollection)> _cache = new(317);
private bool _dirty; private bool _dirty;
public IdentifiedCollectionCache(ClientState clientState, CommunicatorService communicator, GameEventManager events) public IdentifiedCollectionCache(IClientState clientState, CommunicatorService communicator, GameEventManager events)
{ {
_clientState = clientState; _clientState = clientState;
_communicator = communicator; _communicator = communicator;

View file

@ -1,7 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Dalamud.Data; using Dalamud.Plugin.Services;
using Dalamud.Game.ClientState.Objects;
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 Penumbra.GameData.Actors; using Penumbra.GameData.Actors;
@ -12,14 +11,14 @@ namespace Penumbra.Interop.ResourceTree;
public class ResourceTreeFactory public class ResourceTreeFactory
{ {
private readonly DataManager _gameData; private readonly IDataManager _gameData;
private readonly ObjectTable _objects; private readonly IObjectTable _objects;
private readonly CollectionResolver _collectionResolver; private readonly CollectionResolver _collectionResolver;
private readonly IdentifierService _identifier; private readonly IdentifierService _identifier;
private readonly Configuration _config; private readonly Configuration _config;
private readonly ActorService _actors; private readonly ActorService _actors;
public ResourceTreeFactory(DataManager gameData, ObjectTable objects, CollectionResolver resolver, IdentifierService identifier, public ResourceTreeFactory(IDataManager gameData, IObjectTable objects, CollectionResolver resolver, IdentifierService identifier,
Configuration config, ActorService actors) Configuration config, ActorService actors)
{ {
_gameData = gameData; _gameData = gameData;

View file

@ -2,9 +2,8 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using Dalamud.Data;
using Dalamud.Game.ClientState.Objects;
using Dalamud.Game.ClientState.Objects.Types; using Dalamud.Game.ClientState.Objects.Types;
using Dalamud.Plugin.Services;
using Penumbra.GameData.Files; using Penumbra.GameData.Files;
using Penumbra.String.Classes; using Penumbra.String.Classes;
@ -12,13 +11,13 @@ namespace Penumbra.Interop.ResourceTree;
internal class TreeBuildCache internal class TreeBuildCache
{ {
private readonly DataManager _dataManager; private readonly IDataManager _dataManager;
private readonly Dictionary<FullPath, MtrlFile?> _materials = new(); private readonly Dictionary<FullPath, MtrlFile?> _materials = new();
private readonly Dictionary<FullPath, ShpkFile?> _shaderPackages = new(); private readonly Dictionary<FullPath, ShpkFile?> _shaderPackages = new();
public readonly List<Character> Characters; public readonly List<Character> Characters;
public readonly Dictionary<uint, Character> CharactersById; public readonly Dictionary<uint, Character> CharactersById;
public TreeBuildCache(ObjectTable objects, DataManager dataManager) public TreeBuildCache(IObjectTable objects, IDataManager dataManager)
{ {
_dataManager = dataManager; _dataManager = dataManager;
Characters = objects.Where(c => c is Character ch && ch.IsValid()).Cast<Character>().ToList(); Characters = objects.Where(c => c is Character ch && ch.IsValid()).Cast<Character>().ToList();
@ -36,7 +35,7 @@ internal class TreeBuildCache
public ShpkFile? ReadShaderPackage(FullPath path) public ShpkFile? ReadShaderPackage(FullPath path)
=> ReadFile(_dataManager, path, _shaderPackages, bytes => new ShpkFile(bytes)); => ReadFile(_dataManager, path, _shaderPackages, bytes => new ShpkFile(bytes));
private static T? ReadFile<T>(DataManager dataManager, FullPath path, Dictionary<FullPath, T?> cache, Func<byte[], T> parseFile) private static T? ReadFile<T>(IDataManager dataManager, FullPath path, Dictionary<FullPath, T?> cache, Func<byte[], T> parseFile)
where T : class where T : class
{ {
if (path.FullName.Length == 0) if (path.FullName.Length == 0)

View file

@ -7,12 +7,12 @@ using Dalamud.Game.ClientState.Objects;
using Dalamud.Game.ClientState.Objects.Enums; using Dalamud.Game.ClientState.Objects.Enums;
using Dalamud.Game.ClientState.Objects.SubKinds; using Dalamud.Game.ClientState.Objects.SubKinds;
using Dalamud.Game.ClientState.Objects.Types; using Dalamud.Game.ClientState.Objects.Types;
using Dalamud.Plugin.Services;
using Penumbra.Api; using Penumbra.Api;
using Penumbra.Api.Enums; using Penumbra.Api.Enums;
using Penumbra.GameData; using Penumbra.GameData;
using Penumbra.GameData.Actors; using Penumbra.GameData.Actors;
using Penumbra.Interop.Structs; using Penumbra.Interop.Structs;
using Penumbra.Services;
namespace Penumbra.Interop.Services; namespace Penumbra.Interop.Services;
@ -104,8 +104,8 @@ public unsafe partial class RedrawService
public sealed unsafe partial class RedrawService : IDisposable public sealed unsafe partial class RedrawService : IDisposable
{ {
private readonly Framework _framework; private readonly Framework _framework;
private readonly ObjectTable _objects; private readonly IObjectTable _objects;
private readonly TargetManager _targets; private readonly ITargetManager _targets;
private readonly Condition _conditions; private readonly Condition _conditions;
private readonly List<int> _queue = new(100); private readonly List<int> _queue = new(100);
@ -114,7 +114,7 @@ public sealed unsafe partial class RedrawService : IDisposable
public event GameObjectRedrawnDelegate? GameObjectRedrawn; public event GameObjectRedrawnDelegate? GameObjectRedrawn;
public RedrawService(Framework framework, ObjectTable objects, TargetManager targets, Condition conditions) public RedrawService(Framework framework, IObjectTable objects, ITargetManager targets, Condition conditions)
{ {
_framework = framework; _framework = framework;
_objects = objects; _objects = objects;

View file

@ -1,7 +1,7 @@
using System; using System;
using System.Linq; using System.Linq;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using Dalamud.Data; 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 Penumbra.Collections; using Penumbra.Collections;
@ -22,12 +22,12 @@ public unsafe class MetaFileManager
internal readonly Configuration Config; internal readonly Configuration Config;
internal readonly CharacterUtility CharacterUtility; internal readonly CharacterUtility CharacterUtility;
internal readonly ResidentResourceManager ResidentResources; internal readonly ResidentResourceManager ResidentResources;
internal readonly DataManager GameData; internal readonly IDataManager GameData;
internal readonly ActiveCollectionData ActiveCollections; internal readonly ActiveCollectionData ActiveCollections;
internal readonly ValidityChecker ValidityChecker; internal readonly ValidityChecker ValidityChecker;
internal readonly IdentifierService Identifier; internal readonly IdentifierService Identifier;
public MetaFileManager(CharacterUtility characterUtility, ResidentResourceManager residentResources, DataManager gameData, public MetaFileManager(CharacterUtility characterUtility, ResidentResourceManager residentResources, IDataManager gameData,
ActiveCollectionData activeCollections, Configuration config, ValidityChecker validityChecker, IdentifierService identifier) ActiveCollectionData activeCollections, Configuration config, ValidityChecker validityChecker, IdentifierService identifier)
{ {
CharacterUtility = characterUtility; CharacterUtility = characterUtility;

View file

@ -3,7 +3,6 @@ using Dalamud.Game.Gui;
using Dalamud.Game.Text; using Dalamud.Game.Text;
using Dalamud.Game.Text.SeStringHandling; using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Game.Text.SeStringHandling.Payloads; using Dalamud.Game.Text.SeStringHandling.Payloads;
using Dalamud.Interface;
using Dalamud.Plugin; using Dalamud.Plugin;
using Lumina.Excel.GeneratedSheets; using Lumina.Excel.GeneratedSheets;
using OtterGui.Log; using OtterGui.Log;
@ -14,7 +13,7 @@ public class ChatService : OtterGui.Classes.ChatService
{ {
private readonly ChatGui _chat; private readonly ChatGui _chat;
public ChatService(Logger log, DalamudPluginInterface pi, ChatGui chat, UiBuilder uiBuilder) public ChatService(Logger log, DalamudPluginInterface pi, ChatGui chat)
: base(log, pi) : base(log, pi)
=> _chat = chat; => _chat = chat;

View file

@ -1,11 +1,8 @@
using System; using System;
using Dalamud.Data;
using Dalamud.Game; using Dalamud.Game;
using Dalamud.Game.ClientState;
using Dalamud.Game.ClientState.Conditions; using Dalamud.Game.ClientState.Conditions;
using Dalamud.Game.ClientState.Keys; using Dalamud.Game.ClientState.Keys;
using Dalamud.Game.ClientState.Objects; using Dalamud.Game.ClientState.Objects;
using Dalamud.Game.Command;
using Dalamud.Game.Gui; using Dalamud.Game.Gui;
using Dalamud.Interface; using Dalamud.Interface;
using Dalamud.IoC; using Dalamud.IoC;
@ -86,18 +83,18 @@ public class DalamudServices
// TODO remove static // TODO remove static
// @formatter:off // @formatter:off
[PluginService][RequiredVersion("1.0")] public DalamudPluginInterface PluginInterface { get; private set; } = null!; [PluginService][RequiredVersion("1.0")] public DalamudPluginInterface PluginInterface { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public CommandManager Commands { get; private set; } = null!; [PluginService][RequiredVersion("1.0")] public ICommandManager Commands { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public DataManager GameData { get; private set; } = null!; [PluginService][RequiredVersion("1.0")] public IDataManager GameData { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public ClientState ClientState { get; private set; } = null!; [PluginService][RequiredVersion("1.0")] public IClientState ClientState { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public ChatGui Chat { get; private set; } = null!; [PluginService][RequiredVersion("1.0")] public ChatGui Chat { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public Framework Framework { get; private set; } = null!; [PluginService][RequiredVersion("1.0")] public Framework Framework { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public Condition Conditions { get; private set; } = null!; [PluginService][RequiredVersion("1.0")] public Condition Conditions { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public TargetManager Targets { get; private set; } = null!; [PluginService][RequiredVersion("1.0")] public ITargetManager Targets { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public ObjectTable Objects { get; private set; } = null!; [PluginService][RequiredVersion("1.0")] public IObjectTable Objects { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public TitleScreenMenu TitleScreenMenu { get; private set; } = null!; [PluginService][RequiredVersion("1.0")] public TitleScreenMenu TitleScreenMenu { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public GameGui GameGui { get; private set; } = null!; [PluginService][RequiredVersion("1.0")] public IGameGui GameGui { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public KeyState KeyState { get; private set; } = null!; [PluginService][RequiredVersion("1.0")] public KeyState KeyState { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public SigScanner SigScanner { get; private set; } = null!; [PluginService][RequiredVersion("1.0")] public ISigScanner SigScanner { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public IDragDropManager DragDropManager { get; private set; } = null!; [PluginService][RequiredVersion("1.0")] public IDragDropManager DragDropManager { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public ITextureProvider TextureProvider { get; private set; } = null!; [PluginService][RequiredVersion("1.0")] public ITextureProvider TextureProvider { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public ITextureSubstitutionProvider TextureSubstitutionProvider { get; private set; } = null!; [PluginService][RequiredVersion("1.0")] public ITextureSubstitutionProvider TextureSubstitutionProvider { get; private set; } = null!;

View file

@ -1,8 +1,8 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Dalamud.Data;
using Dalamud.Plugin; using Dalamud.Plugin;
using Dalamud.Plugin.Services;
using OtterGui.Widgets; using OtterGui.Widgets;
using Penumbra.GameData.Data; using Penumbra.GameData.Data;
using Penumbra.GameData.Files; using Penumbra.GameData.Files;
@ -24,7 +24,7 @@ public class StainService : IDisposable
public readonly StmFile StmFile; public readonly StmFile StmFile;
public readonly StainTemplateCombo TemplateCombo; public readonly StainTemplateCombo TemplateCombo;
public StainService(StartTracker timer, DalamudPluginInterface pluginInterface, DataManager dataManager) public StainService(StartTracker timer, DalamudPluginInterface pluginInterface, IDataManager dataManager)
{ {
using var t = timer.Measure(StartTimeType.Stains); using var t = timer.Measure(StartTimeType.Stains);
StainData = new StainData(pluginInterface, dataManager, dataManager.Language); StainData = new StainData(pluginInterface, dataManager, dataManager.Language);

View file

@ -1,9 +1,6 @@
using Dalamud.Data;
using Dalamud.Game; using Dalamud.Game;
using Dalamud.Game.ClientState;
using Dalamud.Game.ClientState.Objects;
using Dalamud.Game.Gui;
using Dalamud.Plugin; using Dalamud.Plugin;
using Dalamud.Plugin.Services;
using Penumbra.GameData; using Penumbra.GameData;
using Penumbra.GameData.Actors; using Penumbra.GameData.Actors;
using Penumbra.GameData.Data; using Penumbra.GameData.Data;
@ -14,22 +11,22 @@ namespace Penumbra.Services;
public sealed class IdentifierService : AsyncServiceWrapper<IObjectIdentifier> public sealed class IdentifierService : AsyncServiceWrapper<IObjectIdentifier>
{ {
public IdentifierService(StartTracker tracker, DalamudPluginInterface pi, DataManager data, ItemService items) public IdentifierService(StartTracker tracker, DalamudPluginInterface pi, IDataManager data, ItemService items)
: base(nameof(IdentifierService), tracker, StartTimeType.Identifier, () => GameData.GameData.GetIdentifier(pi, data, items.AwaitedService)) : base(nameof(IdentifierService), tracker, StartTimeType.Identifier, () => GameData.GameData.GetIdentifier(pi, data, items.AwaitedService))
{ } { }
} }
public sealed class ItemService : AsyncServiceWrapper<ItemData> public sealed class ItemService : AsyncServiceWrapper<ItemData>
{ {
public ItemService(StartTracker tracker, DalamudPluginInterface pi, DataManager gameData) public ItemService(StartTracker tracker, DalamudPluginInterface pi, IDataManager gameData)
: base(nameof(ItemService), tracker, StartTimeType.Items, () => new ItemData(pi, gameData, gameData.Language)) : base(nameof(ItemService), tracker, StartTimeType.Items, () => new ItemData(pi, gameData, gameData.Language))
{ } { }
} }
public sealed class ActorService : AsyncServiceWrapper<ActorManager> public sealed class ActorService : AsyncServiceWrapper<ActorManager>
{ {
public ActorService(StartTracker tracker, DalamudPluginInterface pi, ObjectTable objects, ClientState clientState, public ActorService(StartTracker tracker, DalamudPluginInterface pi, IObjectTable objects, IClientState clientState,
Framework framework, DataManager gameData, GameGui gui, CutsceneService cutscene) Framework framework, IDataManager gameData, IGameGui gui, CutsceneService cutscene)
: base(nameof(ActorService), tracker, StartTimeType.Actors, : base(nameof(ActorService), tracker, StartTimeType.Actors,
() => new ActorManager(pi, objects, clientState, framework, gameData, gui, idx => (short)cutscene.GetParentIndex(idx))) () => new ActorManager(pi, objects, clientState, framework, gameData, gui, idx => (short)cutscene.GetParentIndex(idx)))
{ } { }

View file

@ -3,9 +3,9 @@ using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Numerics; using System.Numerics;
using Dalamud.Data;
using Dalamud.Interface; using Dalamud.Interface;
using Dalamud.Interface.Internal.Notifications; using Dalamud.Interface.Internal.Notifications;
using Dalamud.Plugin.Services;
using ImGuiNET; using ImGuiNET;
using OtterGui; using OtterGui;
using OtterGui.Classes; using OtterGui.Classes;
@ -21,10 +21,10 @@ namespace Penumbra.UI.AdvancedWindow;
public class FileEditor<T> where T : class, IWritable public class FileEditor<T> where T : class, IWritable
{ {
private readonly FileDialogService _fileDialog; private readonly FileDialogService _fileDialog;
private readonly DataManager _gameData; private readonly IDataManager _gameData;
private readonly ModEditWindow _owner; private readonly ModEditWindow _owner;
public FileEditor(ModEditWindow owner, DataManager gameData, Configuration config, FileDialogService fileDialog, string tabName, public FileEditor(ModEditWindow owner, IDataManager gameData, Configuration config, FileDialogService fileDialog, string tabName,
string fileType, Func<IReadOnlyList<FileRegistry>> getFiles, Func<T, bool, bool> drawEdit, Func<string> getInitialPath, string fileType, Func<IReadOnlyList<FileRegistry>> getFiles, Func<T, bool, bool> drawEdit, Func<string> getInitialPath,
Func<byte[], T?> parseFile) Func<byte[], T?> parseFile)
{ {

View file

@ -3,10 +3,10 @@ using System.IO;
using System.Linq; using System.Linq;
using System.Numerics; using System.Numerics;
using System.Text; using System.Text;
using Dalamud.Data;
using Dalamud.Interface; using Dalamud.Interface;
using Dalamud.Interface.Components; using Dalamud.Interface.Components;
using Dalamud.Interface.Windowing; using Dalamud.Interface.Windowing;
using Dalamud.Plugin.Services;
using ImGuiNET; using ImGuiNET;
using OtterGui; using OtterGui;
using OtterGui.Raii; using OtterGui.Raii;
@ -518,7 +518,7 @@ public partial class ModEditWindow : Window, IDisposable
return new FullPath(path); return new FullPath(path);
} }
public ModEditWindow(PerformanceTracker performance, FileDialogService fileDialog, ItemSwapTab itemSwapTab, DataManager gameData, public ModEditWindow(PerformanceTracker performance, FileDialogService fileDialog, ItemSwapTab itemSwapTab, IDataManager gameData,
Configuration config, ModEditor editor, ResourceTreeFactory resourceTreeFactory, MetaFileManager metaFileManager, Configuration config, ModEditor editor, ResourceTreeFactory resourceTreeFactory, MetaFileManager metaFileManager,
StainService stainService, ActiveCollections activeCollections, UiBuilder uiBuilder, DalamudServices dalamud, ModMergeTab modMergeTab, StainService stainService, ActiveCollections activeCollections, UiBuilder uiBuilder, DalamudServices dalamud, ModMergeTab modMergeTab,
CommunicatorService communicator, TextureManager textures) CommunicatorService communicator, TextureManager textures)

View file

@ -2,8 +2,8 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Numerics; using System.Numerics;
using Dalamud.Data;
using Dalamud.Interface; using Dalamud.Interface;
using Dalamud.Plugin.Services;
using Dalamud.Utility; using Dalamud.Utility;
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene; using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;
using ImGuiNET; using ImGuiNET;
@ -54,10 +54,10 @@ public class ChangedItemDrawer : IDisposable
private readonly Dictionary<ChangedItemIcon, TextureWrap> _icons = new(16); private readonly Dictionary<ChangedItemIcon, TextureWrap> _icons = new(16);
private float _smallestIconWidth; private float _smallestIconWidth;
public ChangedItemDrawer(UiBuilder uiBuilder, DataManager gameData, CommunicatorService communicator, Configuration config) public ChangedItemDrawer(UiBuilder uiBuilder, IDataManager gameData, ITextureProvider textureProvider, CommunicatorService communicator, Configuration config)
{ {
_items = gameData.GetExcelSheet<Item>()!; _items = gameData.GetExcelSheet<Item>()!;
uiBuilder.RunWhenUiPrepared(() => CreateEquipSlotIcons(uiBuilder, gameData), true); uiBuilder.RunWhenUiPrepared(() => CreateEquipSlotIcons(uiBuilder, gameData, textureProvider), true);
_communicator = communicator; _communicator = communicator;
_config = config; _config = config;
} }
@ -321,7 +321,7 @@ public class ChangedItemDrawer : IDisposable
}; };
/// <summary> Initialize the icons. </summary> /// <summary> Initialize the icons. </summary>
private bool CreateEquipSlotIcons(UiBuilder uiBuilder, DataManager gameData) private bool CreateEquipSlotIcons(UiBuilder uiBuilder, IDataManager gameData, ITextureProvider textureProvider)
{ {
using var equipTypeIcons = uiBuilder.LoadUld("ui/uld/ArmouryBoard.uld"); using var equipTypeIcons = uiBuilder.LoadUld("ui/uld/ArmouryBoard.uld");
@ -345,11 +345,11 @@ public class ChangedItemDrawer : IDisposable
Add(ChangedItemIcon.Neck, equipTypeIcons.LoadTexturePart("ui/uld/ArmouryBoard_hr1.tex", 9)); Add(ChangedItemIcon.Neck, equipTypeIcons.LoadTexturePart("ui/uld/ArmouryBoard_hr1.tex", 9));
Add(ChangedItemIcon.Wrists, equipTypeIcons.LoadTexturePart("ui/uld/ArmouryBoard_hr1.tex", 10)); Add(ChangedItemIcon.Wrists, equipTypeIcons.LoadTexturePart("ui/uld/ArmouryBoard_hr1.tex", 10));
Add(ChangedItemIcon.Finger, equipTypeIcons.LoadTexturePart("ui/uld/ArmouryBoard_hr1.tex", 11)); Add(ChangedItemIcon.Finger, equipTypeIcons.LoadTexturePart("ui/uld/ArmouryBoard_hr1.tex", 11));
Add(ChangedItemIcon.Monster, gameData.GetImGuiTexture("ui/icon/062000/062042_hr1.tex")); Add(ChangedItemIcon.Monster, textureProvider.GetTextureFromGame("ui/icon/062000/062042_hr1.tex", true));
Add(ChangedItemIcon.Demihuman, gameData.GetImGuiTexture("ui/icon/062000/062041_hr1.tex")); Add(ChangedItemIcon.Demihuman, textureProvider.GetTextureFromGame("ui/icon/062000/062041_hr1.tex", true));
Add(ChangedItemIcon.Customization, gameData.GetImGuiTexture("ui/icon/062000/062043_hr1.tex")); Add(ChangedItemIcon.Customization, textureProvider.GetTextureFromGame("ui/icon/062000/062043_hr1.tex", true));
Add(ChangedItemIcon.Action, gameData.GetImGuiTexture("ui/icon/062000/062001_hr1.tex")); Add(ChangedItemIcon.Action, textureProvider.GetTextureFromGame("ui/icon/062000/062001_hr1.tex", true));
Add(AllFlags, gameData.GetImGuiTexture("ui/icon/114000/114052_hr1.tex")); Add(AllFlags, textureProvider.GetTextureFromGame("ui/icon/114000/114052_hr1.tex", true));
var unk = gameData.GetFile<TexFile>("ui/uld/levelup2_hr1.tex"); var unk = gameData.GetFile<TexFile>("ui/uld/levelup2_hr1.tex");
if (unk == null) if (unk == null)

View file

@ -26,7 +26,7 @@ public sealed class CollectionPanel : IDisposable
private readonly ActiveCollections _active; private readonly ActiveCollections _active;
private readonly CollectionSelector _selector; private readonly CollectionSelector _selector;
private readonly ActorService _actors; private readonly ActorService _actors;
private readonly TargetManager _targets; private readonly ITargetManager _targets;
private readonly IndividualAssignmentUi _individualAssignmentUi; private readonly IndividualAssignmentUi _individualAssignmentUi;
private readonly InheritanceUi _inheritanceUi; private readonly InheritanceUi _inheritanceUi;
private readonly ModStorage _mods; private readonly ModStorage _mods;
@ -40,7 +40,7 @@ public sealed class CollectionPanel : IDisposable
private int _draggedIndividualAssignment = -1; private int _draggedIndividualAssignment = -1;
public CollectionPanel(DalamudPluginInterface pi, CommunicatorService communicator, CollectionManager manager, public CollectionPanel(DalamudPluginInterface pi, CommunicatorService communicator, CollectionManager manager,
CollectionSelector selector, ActorService actors, TargetManager targets, ModStorage mods) CollectionSelector selector, ActorService actors, ITargetManager targets, ModStorage mods)
{ {
_collections = manager.Storage; _collections = manager.Storage;
_active = manager.Active; _active = manager.Active;

View file

@ -41,7 +41,7 @@ public class CollectionsTab : IDisposable, ITab
} }
public CollectionsTab(DalamudPluginInterface pi, Configuration configuration, CommunicatorService communicator, public CollectionsTab(DalamudPluginInterface pi, Configuration configuration, CommunicatorService communicator,
CollectionManager collectionManager, ModStorage modStorage, ActorService actors, TargetManager targets, TutorialService tutorial) CollectionManager collectionManager, ModStorage modStorage, ActorService actors, ITargetManager targets, TutorialService tutorial)
{ {
_config = configuration; _config = configuration;
_tutorial = tutorial; _tutorial = tutorial;

View file

@ -5,8 +5,8 @@ using Penumbra.UI.Classes;
using System; using System;
using System.Linq; using System.Linq;
using System.Numerics; using System.Numerics;
using Dalamud.Game.ClientState;
using Dalamud.Interface; using Dalamud.Interface;
using Dalamud.Plugin.Services;
using OtterGui.Widgets; using OtterGui.Widgets;
using Penumbra.Api.Enums; using Penumbra.Api.Enums;
using Penumbra.Interop.Services; using Penumbra.Interop.Services;
@ -27,11 +27,11 @@ public class ModsTab : ITab
private readonly ActiveCollections _activeCollections; private readonly ActiveCollections _activeCollections;
private readonly RedrawService _redrawService; private readonly RedrawService _redrawService;
private readonly Configuration _config; private readonly Configuration _config;
private readonly ClientState _clientState; private readonly IClientState _clientState;
private readonly CollectionSelectHeader _collectionHeader; private readonly CollectionSelectHeader _collectionHeader;
public ModsTab(ModManager modManager, CollectionManager collectionManager, ModFileSystemSelector selector, ModPanel panel, public ModsTab(ModManager modManager, CollectionManager collectionManager, ModFileSystemSelector selector, ModPanel panel,
TutorialService tutorial, RedrawService redrawService, Configuration config, ClientState clientState, TutorialService tutorial, RedrawService redrawService, Configuration config, IClientState clientState,
CollectionSelectHeader collectionHeader) CollectionSelectHeader collectionHeader)
{ {
_modManager = modManager; _modManager = modManager;

View file

@ -2,7 +2,6 @@ using System;
using System.Linq; using System.Linq;
using System.Numerics; using System.Numerics;
using Dalamud.Game; using Dalamud.Game;
using Dalamud.Interface;
using FFXIVClientStructs.FFXIV.Client.System.Resource; 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;
@ -20,9 +19,9 @@ public class ResourceTab : ITab
{ {
private readonly Configuration _config; private readonly Configuration _config;
private readonly ResourceManagerService _resourceManager; private readonly ResourceManagerService _resourceManager;
private readonly SigScanner _sigScanner; private readonly ISigScanner _sigScanner;
public ResourceTab(Configuration config, ResourceManagerService resourceManager, SigScanner sigScanner) public ResourceTab(Configuration config, ResourceManagerService resourceManager, ISigScanner sigScanner)
{ {
_config = config; _config = config;
_resourceManager = resourceManager; _resourceManager = resourceManager;