From 7e28f028d10067a7f6e7a15bdbab9371bc5951d0 Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Thu, 16 Jun 2022 14:54:37 +0200 Subject: [PATCH] use Dalamug.ContextMenu --- .../Configuration/PluginConfigurationUI.cs | 3 +- PlayerTags/Data/PluginData.cs | 13 ++-- .../Features/CustomTagsContextMenuFeature.cs | 66 +++++++++++-------- PlayerTags/PlayerTags.csproj | 1 + 4 files changed, 47 insertions(+), 36 deletions(-) diff --git a/PlayerTags/Configuration/PluginConfigurationUI.cs b/PlayerTags/Configuration/PluginConfigurationUI.cs index 48fdab5..8c2bc9c 100644 --- a/PlayerTags/Configuration/PluginConfigurationUI.cs +++ b/PlayerTags/Configuration/PluginConfigurationUI.cs @@ -27,6 +27,7 @@ namespace PlayerTags.Configuration private PluginData m_PluginData; private InheritableValue? m_ColorPickerPopupDataContext; + public static int asdfasdfasdf = 0; public PluginConfigurationUI(PluginConfiguration config, PluginData pluginData) { @@ -43,7 +44,7 @@ namespace PlayerTags.Configuration ImGui.SetNextWindowSize(new Vector2(400, 500), ImGuiCond.FirstUseEver); - if (ImGui.Begin(Strings.Loc_Static_PluginName, ref m_PluginConfiguration.IsVisible)) + if (ImGui.Begin(Strings.Loc_Static_PluginName + asdfasdfasdf.ToString(), ref m_PluginConfiguration.IsVisible)) { ImGui.PushStyleColor(ImGuiCol.Text, new Vector4(1, 0.8f, 0.5f, 1)); ImGui.TextWrapped(Strings.Loc_Static_WarningMessage); diff --git a/PlayerTags/Data/PluginData.cs b/PlayerTags/Data/PluginData.cs index 62cd204..3ceeeec 100644 --- a/PlayerTags/Data/PluginData.cs +++ b/PlayerTags/Data/PluginData.cs @@ -1,4 +1,5 @@ -using Dalamud.Game.ClientState.Objects.SubKinds; +using Dalamud.ContextMenu; +using Dalamud.Game.ClientState.Objects.SubKinds; using Dalamud.Game.ClientState.Party; using Dalamud.Game.Gui.ContextMenus; using Dalamud.Game.Text.SeStringHandling.Payloads; @@ -278,16 +279,16 @@ namespace PlayerTags.Data }; } - public Identity? GetIdentity(ContextMenuOpenedArgs contextMenuOpenedArgs) + public Identity? GetIdentity(GameObjectContextMenuOpenArgs contextMenuOpenedArgs) { - if (contextMenuOpenedArgs.GameObjectContext == null - || contextMenuOpenedArgs.GameObjectContext.Name == null - || contextMenuOpenedArgs.GameObjectContext.WorldId == null) + if (!string.IsNullOrEmpty(contextMenuOpenedArgs.Text?.TextValue) + || contextMenuOpenedArgs.ObjectWorld != 0 + || contextMenuOpenedArgs.ObjectWorld != 65535) { return null; } - return GetIdentity(contextMenuOpenedArgs.GameObjectContext.Name, contextMenuOpenedArgs.GameObjectContext.WorldId); + return GetIdentity(contextMenuOpenedArgs.Text?.TextValue ?? string.Empty, contextMenuOpenedArgs.ObjectWorld); } public Identity GetIdentity(PlayerCharacter playerCharacter) diff --git a/PlayerTags/Features/CustomTagsContextMenuFeature.cs b/PlayerTags/Features/CustomTagsContextMenuFeature.cs index 0f5db26..b0bd28d 100644 --- a/PlayerTags/Features/CustomTagsContextMenuFeature.cs +++ b/PlayerTags/Features/CustomTagsContextMenuFeature.cs @@ -1,4 +1,4 @@ -using Dalamud.Game.Gui.ContextMenus; +using Dalamud.ContextMenu; using Dalamud.Game.Text.SeStringHandling; using Dalamud.Logging; using PlayerTags.Configuration; @@ -33,72 +33,80 @@ namespace PlayerTags.Features private PluginConfiguration m_PluginConfiguration; private PluginData m_PluginData; - private ContextMenu? m_ContextMenu; + private DalamudContextMenuBase? m_ContextMenu; public CustomTagsContextMenuFeature(PluginConfiguration pluginConfiguration, PluginData pluginData) { m_PluginConfiguration = pluginConfiguration; m_PluginData = pluginData; - m_ContextMenu = new ContextMenu(); - - if (m_PluginConfiguration.IsCustomTagsContextMenuEnabled) - { - m_ContextMenu.ContextMenuOpened += ContextMenuHooks_ContextMenuOpened; - PluginServices.GameGui.Enable(); - } + m_ContextMenu = new DalamudContextMenuBase(); + m_ContextMenu.Functions.ContextMenu.OnOpenGameObjectContextMenu += ContextMenuHooks_ContextMenuOpened; + PluginConfigurationUI.asdfasdfasdf = 1; } public void Dispose() { if (m_ContextMenu != null) { - m_ContextMenu.ContextMenuOpened -= ContextMenuHooks_ContextMenuOpened; + m_ContextMenu.Functions.ContextMenu.OnOpenGameObjectContextMenu -= ContextMenuHooks_ContextMenuOpened; ((IDisposable)m_ContextMenu).Dispose(); m_ContextMenu = null; } } - private void ContextMenuHooks_ContextMenuOpened(ContextMenuOpenedArgs contextMenuOpenedArgs) + private void ContextMenuHooks_ContextMenuOpened(GameObjectContextMenuOpenArgs contextMenuOpenedArgs) { + PluginConfigurationUI.asdfasdfasdf = 2; if (!m_PluginConfiguration.IsCustomTagsContextMenuEnabled || !SupportedAddonNames.Contains(contextMenuOpenedArgs.ParentAddonName)) { return; } + PluginConfigurationUI.asdfasdfasdf = 3; Identity? identity = m_PluginData.GetIdentity(contextMenuOpenedArgs); + PluginConfigurationUI.asdfasdfasdf = 4; if (identity != null) { + PluginConfigurationUI.asdfasdfasdf = 5; var notAddedTags = m_PluginData.CustomTags.Where(customTag => !identity.CustomTagIds.Contains(customTag.CustomId.Value)); if (notAddedTags.Any()) { - contextMenuOpenedArgs.AddCustomSubMenu(Strings.Loc_Static_ContextMenu_AddTag, subContextMenuOpenedArgs => + contextMenuOpenedArgs.AddCustomItem( + new GameObjectContextMenuItem(Strings.Loc_Static_ContextMenu_AddTag, subContextMenuOpenedArgs => { - foreach (var notAddedTag in notAddedTags) - { - subContextMenuOpenedArgs.AddCustomItem(notAddedTag.Text.Value, args => - { - m_PluginData.AddCustomTagToIdentity(notAddedTag, identity); - m_PluginConfiguration.Save(m_PluginData); - }); - } + //foreach (var notAddedTag in notAddedTags) + //{ + // subContextMenuOpenedArgs.AddCustomItem(notAddedTag.Text.Value, args => + // { + // m_PluginData.AddCustomTagToIdentity(notAddedTag, identity); + // m_PluginConfiguration.Save(m_PluginData); + // }); + //} + }) + { + IsSubMenu = true }); } var addedTags = m_PluginData.CustomTags.Where(customTag => identity.CustomTagIds.Contains(customTag.CustomId.Value)); if (addedTags.Any()) { - contextMenuOpenedArgs.AddCustomSubMenu(Strings.Loc_Static_ContextMenu_RemoveTag, subContextMenuOpenedArgs => + contextMenuOpenedArgs.AddCustomItem( + new GameObjectContextMenuItem(Strings.Loc_Static_ContextMenu_RemoveTag, subContextMenuOpenedArgs => { - foreach (var addedTag in addedTags) - { - subContextMenuOpenedArgs.AddCustomItem(addedTag.Text.Value, args => - { - m_PluginData.RemoveCustomTagFromIdentity(addedTag, identity); - m_PluginConfiguration.Save(m_PluginData); - }); - } + //foreach (var addedTag in addedTags) + //{ + // subContextMenuOpenedArgs.AddCustomItem(addedTag.Text.Value, args => + // { + // m_PluginData.RemoveCustomTagFromIdentity(addedTag, identity); + // m_PluginConfiguration.Save(m_PluginData); + // }); + //} + }) + { + IsSubMenu = true }); } } diff --git a/PlayerTags/PlayerTags.csproj b/PlayerTags/PlayerTags.csproj index dd3985a..0854610 100644 --- a/PlayerTags/PlayerTags.csproj +++ b/PlayerTags/PlayerTags.csproj @@ -20,6 +20,7 @@ + $(DalamudLibPath)FFXIVClientStructs.dll