diff --git a/PlayerTags/Configuration/PluginConfigurationUI.cs b/PlayerTags/Configuration/PluginConfigurationUI.cs index 5f2a5af..234dd34 100644 --- a/PlayerTags/Configuration/PluginConfigurationUI.cs +++ b/PlayerTags/Configuration/PluginConfigurationUI.cs @@ -528,9 +528,9 @@ namespace PlayerTags.Configuration foreach (var inheritableGroup in inheritableGroups1) { - if (inheritableGroup.Key != null) { + ImGui.PushID(inheritableGroup.Key); DrawHeading(Localizer.GetString(inheritableGroup.Key, false)); } @@ -560,6 +560,11 @@ namespace PlayerTags.Configuration ImGui.SetTooltip(Localizer.GetString(selectedInheritable.Inheritable.Key, true)); } } + + if (inheritableGroup.Key != null) + { + ImGui.PopID(); + } } ImGui.EndListBox(); diff --git a/PlayerTags/Data/Identity.cs b/PlayerTags/Data/Identity.cs index a14c9ce..364fa05 100644 --- a/PlayerTags/Data/Identity.cs +++ b/PlayerTags/Data/Identity.cs @@ -1,46 +1,21 @@ -using Lumina.Excel.GeneratedSheets; -using Newtonsoft.Json; +using Newtonsoft.Json; using System; using System.Collections.Generic; -using System.Linq; namespace PlayerTags.Data { - [Serializable] public class Identity : IComparable { - public string Name; - public uint? WorldId; - - public List CustomTagIds = new List(); + public string Name { get; init; } + public uint? WorldId { get; set; } = null; + public List CustomTagIds { get; init; } = new List(); [JsonIgnore] - public string? World - { - get - { - var worldId = WorldId; - if (worldId != null) - { - var worlds = PluginServices.DataManager.GetExcelSheet(); - if (worlds != null) - { - var world = worlds.FirstOrDefault(world => world.RowId == worldId.Value); - if (world != null) - { - return world.Name.RawString; - } - } - } - - return null; - } - } + public string? World => WorldHelper.GetWorldName(WorldId); public Identity(string name) { Name = name; - WorldId = null; } public override string ToString() @@ -57,13 +32,7 @@ namespace PlayerTags.Data public int CompareTo(Identity? other) { - string? otherName = null; - if (other != null) - { - otherName = other.Name; - } - - return Name.CompareTo(otherName); + return ToString().CompareTo(other != null ? other.ToString() : null); } } } diff --git a/PlayerTags/Data/Tag.cs b/PlayerTags/Data/Tag.cs index adc7836..cadbccb 100644 --- a/PlayerTags/Data/Tag.cs +++ b/PlayerTags/Data/Tag.cs @@ -92,7 +92,6 @@ namespace PlayerTags.Data }; // Deprecated - [InheritableCategory("General")] public InheritableReference GameObjectNamesToApplyTo = new InheritableReference(""); public InheritableValue CustomId = new InheritableValue(Guid.Empty); diff --git a/PlayerTags/Data/WorldHelper.cs b/PlayerTags/Data/WorldHelper.cs new file mode 100644 index 0000000..57e8c3c --- /dev/null +++ b/PlayerTags/Data/WorldHelper.cs @@ -0,0 +1,41 @@ +using Lumina.Excel.GeneratedSheets; +using System.Collections.Generic; + +namespace PlayerTags.Data +{ + public static class WorldHelper + { + private static Dictionary? s_WorldNames = null; + public static Dictionary WorldNames + { + get + { + if (s_WorldNames == null) + { + s_WorldNames = new Dictionary(); + + var worlds = PluginServices.DataManager.GetExcelSheet(); + if (worlds != null) + { + foreach (var world in worlds) + { + s_WorldNames[world.RowId] = world.Name; + } + } + } + + return s_WorldNames; + } + } + + public static string? GetWorldName(uint? worldId) + { + if (worldId != null && WorldNames.TryGetValue(worldId.Value, out var name)) + { + return name; + } + + return null; + } + } +} diff --git a/PlayerTags/Features/ChatTagTargetFeature.cs b/PlayerTags/Features/ChatTagTargetFeature.cs index 19944d1..37163ce 100644 --- a/PlayerTags/Features/ChatTagTargetFeature.cs +++ b/PlayerTags/Features/ChatTagTargetFeature.cs @@ -6,6 +6,7 @@ using Dalamud.Game.Text.SeStringHandling.Payloads; using Dalamud.Logging; using PlayerTags.Configuration; using PlayerTags.Data; +using System; using System.Collections.Generic; using System.Linq; @@ -100,8 +101,11 @@ namespace PlayerTags.Features private void Chat_ChatMessage(XivChatType type, uint senderId, ref SeString sender, ref SeString message, ref bool isHandled) { - AddTagsToChat(sender); - AddTagsToChat(message); + if (Enum.IsDefined(type)) + { + AddTagsToChat(sender); + AddTagsToChat(message); + } } protected override bool IsIconVisible(Tag tag) diff --git a/PlayerTags/Features/CustomTagsContextMenuFeature.cs b/PlayerTags/Features/CustomTagsContextMenuFeature.cs index af39eaf..cdd9bf9 100644 --- a/PlayerTags/Features/CustomTagsContextMenuFeature.cs +++ b/PlayerTags/Features/CustomTagsContextMenuFeature.cs @@ -68,6 +68,10 @@ namespace PlayerTags.Features m_PluginConfiguration.Save(m_PluginData); }))); } + + itemArgs.Items.Add(new NormalContextMenuItem("", (args => + { + }))); }))); } @@ -84,6 +88,10 @@ namespace PlayerTags.Features m_PluginConfiguration.Save(m_PluginData); }))); } + + itemArgs.Items.Add(new NormalContextMenuItem("", (args => + { + }))); }))); } } diff --git a/PlayerTags/PlayerTags.csproj b/PlayerTags/PlayerTags.csproj index 2bc4433..4bdc82a 100644 --- a/PlayerTags/PlayerTags.csproj +++ b/PlayerTags/PlayerTags.csproj @@ -1,7 +1,7 @@  r00telement - 1.1.5.1 + 1.1.6.0 diff --git a/PlayerTags/PlayerTags.json b/PlayerTags/PlayerTags.json index 82397f5..3bbd2d4 100644 --- a/PlayerTags/PlayerTags.json +++ b/PlayerTags/PlayerTags.json @@ -10,5 +10,5 @@ "https://github.com/r00telement/PlayerTags/raw/main/PlayerTags/Resources/Promo/Nameplates_1.png", "https://github.com/r00telement/PlayerTags/raw/main/PlayerTags/Resources/Promo/Chat_1.png" ], - "Changelog": "- Fix for nameplates sometimes disappearing when changing a player's title color when they have no title." + "Changelog": "" } \ No newline at end of file