Update Dalamud Services and use Dalamuds texture provider.

This commit is contained in:
Ottermandias 2023-08-10 20:44:48 +02:00
parent 79ec604e89
commit 0afcc8cca8
24 changed files with 94 additions and 115 deletions

View file

@ -4,6 +4,7 @@ using System.Linq;
using Dalamud.Game.Command;
using Dalamud.Game.Gui;
using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Plugin.Services;
using Glamourer.Automation;
using Glamourer.Customization;
using Glamourer.Designs;
@ -23,7 +24,7 @@ public class CommandService : IDisposable
private const string MainCommandString = "/glamourer";
private const string ApplyCommandString = "/glamour";
private readonly CommandManager _commands;
private readonly ICommandManager _commands;
private readonly MainWindow _mainWindow;
private readonly ChatGui _chat;
private readonly ActorService _actors;
@ -34,7 +35,7 @@ public class CommandService : IDisposable
private readonly DesignConverter _converter;
private readonly DesignFileSystem _designFileSystem;
public CommandService(CommandManager commands, MainWindow mainWindow, ChatGui chat, ActorService actors, ObjectManager objects,
public CommandService(ICommandManager commands, MainWindow mainWindow, ChatGui chat, ActorService actors, ObjectManager objects,
AutoDesignApplier autoDesignApplier, StateManager stateManager, DesignManager designManager, DesignConverter converter,
DesignFileSystem designFileSystem)
{

View file

@ -1,9 +1,6 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Runtime.CompilerServices;
using Dalamud.Data;
using Dalamud.Plugin;
using Dalamud.Plugin.Services;
using Glamourer.Customization;
using Penumbra.GameData.Data;
using Penumbra.GameData.Enums;
@ -14,8 +11,8 @@ public sealed class CustomizationService : AsyncServiceWrapper<ICustomizationMan
{
public readonly HumanModelList HumanModels;
public CustomizationService(DalamudPluginInterface pi, DataManager gameData, HumanModelList humanModels)
: base(nameof(CustomizationService), () => CustomizationManager.Create(pi, gameData))
public CustomizationService(ITextureProvider textures, IDataManager gameData, HumanModelList humanModels)
: base(nameof(CustomizationService), () => CustomizationManager.Create(textures, gameData))
=> HumanModels = humanModels;
public (Customize NewValue, CustomizeFlag Applied, CustomizeFlag Changed) Combine(Customize oldValues, Customize newValues,

View file

@ -1,13 +1,11 @@
using Dalamud.Data;
using Dalamud.Game;
using Dalamud.Game.ClientState;
using Dalamud.Game.ClientState.Keys;
using Dalamud.Game.ClientState.Objects;
using Dalamud.Game.Command;
using Dalamud.Game.Gui;
using Dalamud.Interface.DragDrop;
using Dalamud.IoC;
using Dalamud.Plugin;
using Dalamud.Plugin.Services;
using Microsoft.Extensions.DependencyInjection;
namespace Glamourer.Services;
@ -34,19 +32,21 @@ public class DalamudServices
services.AddSingleton(this);
services.AddSingleton(PluginInterface.UiBuilder);
services.AddSingleton(DragDropManager);
services.AddSingleton(TextureProvider);
}
// @formatter:off
[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 DataManager GameData { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public ClientState ClientState { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public GameGui GameGui { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public ICommandManager Commands { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public IDataManager GameData { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public IClientState ClientState { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public IGameGui GameGui { 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 TargetManager Targets { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public ObjectTable Objects { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public ITargetManager Targets { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public IObjectTable Objects { get; private set; } = null!;
[PluginService][RequiredVersion("1.0")] public KeyState KeyState { 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!;
// @formatter:on
}

View file

@ -1,8 +1,8 @@
using System;
using System.Linq;
using System.Runtime.CompilerServices;
using Dalamud.Data;
using Dalamud.Plugin;
using Dalamud.Plugin.Services;
using Lumina.Excel;
using Penumbra.GameData.Data;
using Penumbra.GameData.Enums;
@ -27,7 +27,7 @@ public class ItemManager : IDisposable
public readonly EquipItem DefaultSword;
public ItemManager(Configuration config, DalamudPluginInterface pi, DataManager gameData, IdentifierService identifierService,
public ItemManager(Configuration config, DalamudPluginInterface pi, IDataManager gameData, IdentifierService identifierService,
ItemService itemService)
{
_config = config;

View file

@ -1,12 +1,9 @@
using Dalamud.Data;
using Dalamud.Game.ClientState.Objects;
using Dalamud.Game.ClientState;
using Dalamud.Game.Gui;
using Dalamud.Plugin;
using Penumbra.GameData.Actors;
using System;
using System.Threading.Tasks;
using Dalamud.Game;
using Dalamud.Plugin.Services;
using Glamourer.Interop.Penumbra;
using Penumbra.GameData.Data;
using Penumbra.GameData;
@ -75,23 +72,23 @@ public abstract class AsyncServiceWrapper<T> : IDisposable
public sealed class IdentifierService : AsyncServiceWrapper<IObjectIdentifier>
{
public IdentifierService(DalamudPluginInterface pi, DataManager data, ItemService itemService)
public IdentifierService(DalamudPluginInterface pi, IDataManager data, ItemService itemService)
: base(nameof(IdentifierService), () => Penumbra.GameData.GameData.GetIdentifier(pi, data, itemService.AwaitedService))
{ }
}
public sealed class ItemService : AsyncServiceWrapper<ItemData>
{
public ItemService(DalamudPluginInterface pi, DataManager gameData)
public ItemService(DalamudPluginInterface pi, IDataManager gameData)
: base(nameof(ItemService), () => new ItemData(pi, gameData, gameData.Language))
{ }
}
public sealed class ActorService : AsyncServiceWrapper<ActorManager>
{
public ActorService(DalamudPluginInterface pi, ObjectTable objects, ClientState clientState, Framework framework, DataManager gameData,
GameGui gui, PenumbraService penumbra)
public ActorService(DalamudPluginInterface pi, IObjectTable objects, IClientState clientState, Framework framework, IDataManager gameData,
IGameGui gui, PenumbraService penumbra)
: base(nameof(ActorService),
() => new ActorManager(pi, objects, clientState, framework, gameData, gui, idx => (short)penumbra.CutsceneParent(idx)))
{ }
}
}

View file

@ -1,9 +1,8 @@
using System;
using System.Linq;
using Dalamud.Data;
using System.Numerics;
using Dalamud.Game;
using Dalamud.Interface;
using Dalamud.Plugin.Services;
using ImGuiScene;
using OtterGui.Classes;
using Penumbra.GameData.Enums;
@ -13,8 +12,8 @@ namespace Glamourer.Services;
public sealed class TextureService : TextureCache, IDisposable
{
public TextureService(Framework framework, UiBuilder uiBuilder, DataManager dataManager)
: base(framework, uiBuilder, dataManager)
public TextureService(UiBuilder uiBuilder, IDataManager dataManager, ITextureProvider textureProvider)
: base(dataManager, textureProvider)
=> _slotIcons = CreateSlotIcons(uiBuilder);
private readonly TextureWrap?[] _slotIcons;
@ -22,7 +21,7 @@ public sealed class TextureService : TextureCache, IDisposable
public (nint, Vector2, bool) GetIcon(EquipItem item)
{
if (item.IconId.Id != 0 && TryLoadIcon(item.IconId.Id, out var ret))
return (ret.Value.Texture, ret.Value.Dimensions, false);
return (ret.ImGuiHandle, new Vector2(ret.Width, ret.Height), false);
var idx = item.Type.ToSlot().ToIndex();
return idx < 12 && _slotIcons[idx] != null
@ -30,9 +29,8 @@ public sealed class TextureService : TextureCache, IDisposable
: (nint.Zero, Vector2.Zero, true);
}
public new void Dispose()
public void Dispose()
{
base.Dispose();
for (var i = 0; i < _slotIcons.Length; ++i)
{
_slotIcons[i]?.Dispose();