diff --git a/Glamaholic/Commands.cs b/Glamaholic/Commands.cs
index 8fb08f1..575e460 100755
--- a/Glamaholic/Commands.cs
+++ b/Glamaholic/Commands.cs
@@ -9,7 +9,7 @@ namespace Glamaholic {
this.Plugin = plugin;
this.Plugin.CommandManager.AddHandler("/glamaholic", new CommandInfo(this.OnCommand) {
- HelpMessage = $"Toggle visibility of the {this.Plugin.Name} window",
+ HelpMessage = $"Toggle visibility of the {Plugin.Name} window",
});
}
diff --git a/Glamaholic/GameFunctions.cs b/Glamaholic/GameFunctions.cs
index 64d1c5c..831d3e4 100755
--- a/Glamaholic/GameFunctions.cs
+++ b/Glamaholic/GameFunctions.cs
@@ -8,6 +8,7 @@ using Dalamud.Game.Text;
using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Game.Text.SeStringHandling.Payloads;
using Dalamud.Memory;
+using Dalamud.Plugin.Services;
using Dalamud.Utility.Signatures;
using FFXIVClientStructs.FFXIV.Client.Game;
using FFXIVClientStructs.FFXIV.Client.System.Framework;
@@ -72,8 +73,7 @@ namespace Glamaholic {
internal GameFunctions(Plugin plugin) {
this.Plugin = plugin;
-
- SignatureHelper.Initialise(this);
+ this.Plugin.GameInteropProvider.InitializeFromAttributes(this);
this.Plugin.ChatGui.ChatMessage += this.OnChat;
this.Plugin.ClientState.Login += OnLogin;
@@ -96,13 +96,13 @@ namespace Glamaholic {
}
}
- private static void OnLogin(object? sender, EventArgs e) {
+ private static void OnLogin() {
_dresserContents = null;
}
private bool _wasEditing;
- private void OnFrameworkUpdate(Dalamud.Game.Framework framework) {
+ private void OnFrameworkUpdate(IFramework framework1) {
var editing = Util.IsEditingPlate(this.Plugin.GameGui);
if (!this._wasEditing && editing) {
// cache dresser
diff --git a/Glamaholic/Glamaholic.csproj b/Glamaholic/Glamaholic.csproj
index 3b028e6..d875c50 100755
--- a/Glamaholic/Glamaholic.csproj
+++ b/Glamaholic/Glamaholic.csproj
@@ -35,10 +35,6 @@
$(DalamudLibPath)\ImGui.NET.dll
false
-
- $(DalamudLibPath)\ImGuiScene.dll
- false
-
$(DalamudLibPath)\Lumina.dll
false
diff --git a/Glamaholic/Plugin.cs b/Glamaholic/Plugin.cs
index d11d529..128b7cd 100755
--- a/Glamaholic/Plugin.cs
+++ b/Glamaholic/Plugin.cs
@@ -1,40 +1,45 @@
-using Dalamud.Data;
-using Dalamud.Game;
-using Dalamud.Game.ClientState;
-using Dalamud.Game.Command;
-using Dalamud.Game.Gui;
+using Dalamud.Game;
using Dalamud.IoC;
using Dalamud.Plugin;
+using Dalamud.Plugin.Services;
namespace Glamaholic {
// ReSharper disable once ClassNeverInstantiated.Global
public class Plugin : IDalamudPlugin {
- internal const string PluginName = "Glamaholic";
- public string Name => PluginName;
+ internal static string Name => "Glamaholic";
+
+ [PluginService]
+ internal static IPluginLog Log { get; private set; }
[PluginService]
internal DalamudPluginInterface Interface { get; init; }
[PluginService]
- internal ChatGui ChatGui { get; init; }
+ internal IChatGui ChatGui { get; init; }
[PluginService]
- internal ClientState ClientState { get; init; }
+ internal IClientState ClientState { get; init; }
[PluginService]
- internal CommandManager CommandManager { get; init; }
+ internal ICommandManager CommandManager { get; init; }
[PluginService]
- internal DataManager DataManager { get; init; }
+ internal IDataManager DataManager { get; init; }
[PluginService]
- internal Framework Framework { get; init; }
+ internal IFramework Framework { get; init; }
[PluginService]
- internal GameGui GameGui { get; init; }
+ internal IGameGui GameGui { get; init; }
[PluginService]
- internal SigScanner SigScanner { get; init; }
+ internal ISigScanner SigScanner { get; init; }
+
+ [PluginService]
+ internal ITextureProvider TextureProvider { get; init; }
+
+ [PluginService]
+ internal IGameInteropProvider GameInteropProvider { get; init; }
internal Configuration Config { get; }
internal GameFunctions Functions { get; }
diff --git a/Glamaholic/PluginUi.cs b/Glamaholic/PluginUi.cs
index fe4dfde..cee71aa 100755
--- a/Glamaholic/PluginUi.cs
+++ b/Glamaholic/PluginUi.cs
@@ -1,17 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using Dalamud.Interface.Internal;
using FFXIVClientStructs.FFXIV.Client.System.Framework;
using FFXIVClientStructs.FFXIV.Client.UI.Agent;
using Glamaholic.Ui;
using Glamaholic.Ui.Helpers;
-using ImGuiScene;
namespace Glamaholic {
internal class PluginUi : IDisposable {
internal Plugin Plugin { get; }
- private Dictionary Icons { get; } = new();
+ private Dictionary Icons { get; } = new();
private MainInterface MainInterface { get; }
private EditorHelper EditorHelper { get; }
@@ -62,12 +62,12 @@ namespace Glamaholic {
this.MainInterface.Toggle();
}
- internal TextureWrap? GetIcon(ushort id) {
+ internal IDalamudTextureWrap? GetIcon(ushort id) {
if (this.Icons.TryGetValue(id, out var cached)) {
return cached;
}
- var icon = this.Plugin.DataManager.GetImGuiTextureIcon(id);
+ var icon = this.Plugin.TextureProvider.GetIcon(id);
if (icon == null) {
return null;
}
diff --git a/Glamaholic/Ui/AlternativeFinder.cs b/Glamaholic/Ui/AlternativeFinder.cs
index d7a4be0..a73f559 100755
--- a/Glamaholic/Ui/AlternativeFinder.cs
+++ b/Glamaholic/Ui/AlternativeFinder.cs
@@ -134,7 +134,7 @@ namespace Glamaholic.Ui {
var payload = new SeString(payloadList);
- this.Ui.Plugin.ChatGui.PrintChat(new XivChatEntry {
+ this.Ui.Plugin.ChatGui.Print(new XivChatEntry {
Message = payload,
});
}
diff --git a/Glamaholic/Ui/FilterInfo.cs b/Glamaholic/Ui/FilterInfo.cs
index f382da3..075c63f 100755
--- a/Glamaholic/Ui/FilterInfo.cs
+++ b/Glamaholic/Ui/FilterInfo.cs
@@ -2,12 +2,12 @@
using System.Linq;
using System.Reflection;
using Dalamud;
-using Dalamud.Data;
+using Dalamud.Plugin.Services;
using Lumina.Excel.GeneratedSheets;
namespace Glamaholic.Ui {
internal class FilterInfo {
- private DataManager Data { get; }
+ private IDataManager Data { get; }
private uint MaxLevel { get; }
private string Query { get; }
@@ -17,7 +17,7 @@ namespace Glamaholic.Ui {
private HashSet ItemIds { get; } = new();
private HashSet ItemNames { get; } = new();
- internal FilterInfo(DataManager data, string filter) {
+ internal FilterInfo(IDataManager data, string filter) {
this.Data = data;
var queryWords = new List();
diff --git a/Glamaholic/Ui/Helpers/EditorHelper.cs b/Glamaholic/Ui/Helpers/EditorHelper.cs
index 7ba900a..e85c98c 100755
--- a/Glamaholic/Ui/Helpers/EditorHelper.cs
+++ b/Glamaholic/Ui/Helpers/EditorHelper.cs
@@ -25,7 +25,7 @@ namespace Glamaholic.Ui.Helpers {
}
private void DrawDropdown() {
- if (ImGui.Selectable($"Open {this.Ui.Plugin.Name}")) {
+ if (ImGui.Selectable($"Open {Plugin.Name}")) {
this.Ui.OpenMainInterface();
}
diff --git a/Glamaholic/Ui/Helpers/ExamineHelper.cs b/Glamaholic/Ui/Helpers/ExamineHelper.cs
index b7ed49d..e2c2ee4 100755
--- a/Glamaholic/Ui/Helpers/ExamineHelper.cs
+++ b/Glamaholic/Ui/Helpers/ExamineHelper.cs
@@ -27,7 +27,7 @@ namespace Glamaholic.Ui.Helpers {
}
private void DrawDropdown() {
- if (ImGui.Selectable($"Open {this.Ui.Plugin.Name}")) {
+ if (ImGui.Selectable($"Open {Plugin.Name}")) {
this.Ui.OpenMainInterface();
}
diff --git a/Glamaholic/Ui/Helpers/HelperUtil.cs b/Glamaholic/Ui/Helpers/HelperUtil.cs
index 807b6e1..3746e9d 100755
--- a/Glamaholic/Ui/Helpers/HelperUtil.cs
+++ b/Glamaholic/Ui/Helpers/HelperUtil.cs
@@ -1,8 +1,7 @@
using System;
using System.Collections.Generic;
using System.Numerics;
-using Dalamud.Interface;
-using Dalamud.Logging;
+using Dalamud.Interface.Utility;
using FFXIVClientStructs.FFXIV.Component.GUI;
using ImGuiNET;
@@ -45,7 +44,7 @@ namespace Glamaholic.Ui.Helpers {
internal static float DropdownWidth() {
// arrow size is GetFrameHeight
- return (ImGui.CalcTextSize(Plugin.PluginName).X + ImGui.GetStyle().ItemInnerSpacing.X * 2 + ImGui.GetFrameHeight()) * ImGuiHelpers.GlobalScale;
+ return (ImGui.CalcTextSize(Plugin.Name).X + ImGui.GetStyle().ItemInnerSpacing.X * 2 + ImGui.GetFrameHeight()) * ImGuiHelpers.GlobalScale;
}
internal class HelperStyles : IDisposable {
@@ -76,11 +75,11 @@ namespace Glamaholic.Ui.Helpers {
}
ImGui.SetNextItemWidth(DropdownWidth());
- if (ImGui.BeginCombo($"##{id}-combo", Plugin.PluginName)) {
+ if (ImGui.BeginCombo($"##{id}-combo", Plugin.Name)) {
try {
dropdown();
} catch (Exception ex) {
- PluginLog.LogError(ex, "Error drawing helper combo");
+ Plugin.Log.Error(ex, "Error drawing helper combo");
}
ImGui.EndCombo();
diff --git a/Glamaholic/Ui/Helpers/TryOnHelper.cs b/Glamaholic/Ui/Helpers/TryOnHelper.cs
index 013f3c6..552aaf2 100755
--- a/Glamaholic/Ui/Helpers/TryOnHelper.cs
+++ b/Glamaholic/Ui/Helpers/TryOnHelper.cs
@@ -34,7 +34,7 @@ namespace Glamaholic.Ui.Helpers {
}
private void DrawDropdown() {
- if (ImGui.Selectable($"Open {this.Ui.Plugin.Name}")) {
+ if (ImGui.Selectable($"Open {Plugin.Name}")) {
this.Ui.OpenMainInterface();
}
diff --git a/Glamaholic/Ui/MainInterface.cs b/Glamaholic/Ui/MainInterface.cs
index dcb58be..d3a734b 100755
--- a/Glamaholic/Ui/MainInterface.cs
+++ b/Glamaholic/Ui/MainInterface.cs
@@ -9,7 +9,7 @@ using System.Threading.Tasks;
using Dalamud;
using Dalamud.Interface;
using Dalamud.Interface.Colors;
-using Dalamud.Logging;
+using Dalamud.Interface.Utility;
using ImGuiNET;
using Lumina.Excel.GeneratedSheets;
using Newtonsoft.Json;
@@ -91,7 +91,7 @@ namespace Glamaholic.Ui {
ImGui.SetNextWindowSize(new Vector2(415, 650), ImGuiCond.FirstUseEver);
- if (!ImGui.Begin(this.Ui.Plugin.Name, ref this._visible, ImGuiWindowFlags.MenuBar)) {
+ if (!ImGui.Begin(Plugin.Name, ref this._visible, ImGuiWindowFlags.MenuBar)) {
ImGui.End();
return;
}
@@ -132,7 +132,7 @@ namespace Glamaholic.Ui {
this.Ui.SwitchPlate(this.Ui.Plugin.Config.Plates.Count - 1);
}
} catch (Exception ex) {
- PluginLog.LogWarning(ex, "Failed to import glamour plate");
+ Plugin.Log.Warning(ex, "Failed to import glamour plate");
}
}
diff --git a/Glamaholic/Util.cs b/Glamaholic/Util.cs
index 5df265b..a25310c 100755
--- a/Glamaholic/Util.cs
+++ b/Glamaholic/Util.cs
@@ -1,6 +1,6 @@
using System;
-using Dalamud.Game.Gui;
using Dalamud.Interface;
+using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Component.GUI;
using ImGuiNET;
using Lumina.Excel.GeneratedSheets;
@@ -17,12 +17,12 @@ namespace Glamaholic {
return addon != null && addon->IsVisible;
}
- private static unsafe bool IsOpen(GameGui gui, string name) {
+ private static unsafe bool IsOpen(IGameGui gui, string name) {
var addon = (AtkUnitBase*) gui.GetAddonByName(name, 1);
return IsOpen(addon);
}
- internal static bool IsEditingPlate(GameGui gui) {
+ internal static bool IsEditingPlate(IGameGui gui) {
var plateOpen = IsOpen(gui, PlateAddon);
var boxOpen = IsOpen(gui, BoxAddon);
var armoireOpen = IsOpen(gui, ArmoireAddon);