use Dalamug.ContextMenu
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user