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);