use Dalamug.ContextMenu

This commit is contained in:
2022-06-16 14:54:37 +02:00
parent 342cb792b9
commit 7e28f028d1
4 changed files with 47 additions and 36 deletions

View File

@@ -27,6 +27,7 @@ namespace PlayerTags.Configuration
private PluginData m_PluginData;
private InheritableValue<ushort>? 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);

View File

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

View File

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

View File

@@ -20,6 +20,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Dalamud.ContextMenu" Version="1.0.0" />
<PackageReference Include="DalamudPackager" Version="2.1.7" />
<Reference Include="FFXIVClientStructs">
<HintPath>$(DalamudLibPath)FFXIVClientStructs.dll</HintPath>