diff --git a/PlayerTags/Configuration/PluginConfigurationUI.cs b/PlayerTags/Configuration/PluginConfigurationUI.cs index aba314f..7c67cb8 100644 --- a/PlayerTags/Configuration/PluginConfigurationUI.cs +++ b/PlayerTags/Configuration/PluginConfigurationUI.cs @@ -10,6 +10,8 @@ using ImGuiNET; using Lumina.Excel.GeneratedSheets; using Pilz.Dalamud.ActivityContexts; using Pilz.Dalamud.Icons; +using Pilz.Dalamud.Nameplates.Model; +using Pilz.Dalamud.Nameplates.Tools; using PlayerTags.Data; using PlayerTags.Inheritables; using PlayerTags.PluginStrings; @@ -246,6 +248,79 @@ namespace PlayerTags.Configuration ImGui.EndTabItem(); } + if (ImGui.BeginTabItem(Strings.Loc_Static_StatusIconPrioList)) + { + ImGui.Spacing(); + ImGui.Spacing(); + + var isPriorizerEnabled = m_PluginConfiguration.StatusIconPriorizerSettings.UsePriorizedIcons; + DrawCheckbox(nameof(StatusIconPriorizerSettings.UsePriorizedIcons), true, ref isPriorizerEnabled, () => + { + m_PluginConfiguration.StatusIconPriorizerSettings.UsePriorizedIcons = isPriorizerEnabled; + SaveSettings(); + }); + + if (isPriorizerEnabled) + { + var statusIcons = Enum.GetValues(); + + ImGui.Spacing(); + ImGui.Spacing(); + + if (ImGui.Button(Strings.Loc_StatusIconPriorizer_ResetToDefault)) + { + m_PluginConfiguration.StatusIconPriorizerSettings.ResetToDefault(); + SaveSettings(); + } + else if (ImGui.IsItemHovered()) + ImGui.SetTooltip(Strings.Loc_StatusIconPriorizer_ResetToDefault_Description); + + ImGui.SameLine(); + + if (ImGui.Button(Strings.Loc_StatusIconPriorizer_ResetToEmpty)) + { + m_PluginConfiguration.StatusIconPriorizerSettings.ResetToEmpty(); + SaveSettings(); + } + else if (ImGui.IsItemHovered()) + ImGui.SetTooltip(Strings.Loc_StatusIconPriorizer_ResetToEmpty_Description); + + ImGui.Spacing(); + ImGui.Spacing(); + + foreach (var conditionSetName in Enum.GetValues()) + { + if (ImGui.CollapsingHeader(Localizer.GetString(conditionSetName, false))) + { + var conditionSet = m_PluginConfiguration.StatusIconPriorizerSettings.GetConditionSet(conditionSetName); + + if (ImGui.IsItemHovered()) + ImGui.SetTooltip(Localizer.GetString(conditionSetName, true)); + + foreach (var statusIcon in statusIcons) + { + var isChecked = conditionSet.Contains(statusIcon); + DrawCheckbox(Localizer.GetName(statusIcon), true, ref isChecked, () => + { + if (isChecked) + { + if (!conditionSet.Contains(statusIcon)) + conditionSet.Add(statusIcon); + } + else if (conditionSet.Contains(statusIcon)) + conditionSet.Remove(statusIcon); + SaveSettings(); + }); + } + } + + ImGui.Spacing(); + } + } + + ImGui.EndTabItem(); + } + ImGui.EndTabBar(); } diff --git a/PlayerTags/Resources/Strings.Designer.cs b/PlayerTags/Resources/Strings.Designer.cs index 7b45161..b09f035 100644 --- a/PlayerTags/Resources/Strings.Designer.cs +++ b/PlayerTags/Resources/Strings.Designer.cs @@ -1491,6 +1491,15 @@ namespace PlayerTags.Resources { } } + /// + /// Sucht eine lokalisierte Zeichenfolge, die Status Icon Priorizer ähnelt. + /// + public static string Loc_Static_StatusIconPrioList { + get { + return ResourceManager.GetString("Loc_Static_StatusIconPrioList", resourceCulture); + } + } + /// /// Sucht eine lokalisierte Zeichenfolge, die Tagged Players ähnelt. /// @@ -1518,6 +1527,240 @@ namespace PlayerTags.Resources { } } + /// + /// Sucht eine lokalisierte Zeichenfolge, die Reset to default ähnelt. + /// + public static string Loc_StatusIconPriorizer_ResetToDefault { + get { + return ResourceManager.GetString("Loc_StatusIconPriorizer_ResetToDefault", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Resets all condition sets to the default settings ähnelt. + /// + public static string Loc_StatusIconPriorizer_ResetToDefault_Description { + get { + return ResourceManager.GetString("Loc_StatusIconPriorizer_ResetToDefault_Description", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Reset to empty ähnelt. + /// + public static string Loc_StatusIconPriorizer_ResetToEmpty { + get { + return ResourceManager.GetString("Loc_StatusIconPriorizer_ResetToEmpty", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Clears all condition sets to an empty collection. None status icons will be priorized. ähnelt. + /// + public static string Loc_StatusIconPriorizer_ResetToEmpty_Description { + get { + return ResourceManager.GetString("Loc_StatusIconPriorizer_ResetToEmpty_Description", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die In Duty ähnelt. + /// + public static string Loc_StatusIconPriorizerConditionSets_InDuty { + get { + return ResourceManager.GetString("Loc_StatusIconPriorizerConditionSets_InDuty", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Status icons that should get priorized within duties. ähnelt. + /// + public static string Loc_StatusIconPriorizerConditionSets_InDuty_Description { + get { + return ResourceManager.GetString("Loc_StatusIconPriorizerConditionSets_InDuty_Description", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die In Foray ähnelt. + /// + public static string Loc_StatusIconPriorizerConditionSets_InForay { + get { + return ResourceManager.GetString("Loc_StatusIconPriorizerConditionSets_InForay", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Status icons that should get priorized within foraies. ähnelt. + /// + public static string Loc_StatusIconPriorizerConditionSets_InForay_Description { + get { + return ResourceManager.GetString("Loc_StatusIconPriorizerConditionSets_InForay_Description", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Overworld ähnelt. + /// + public static string Loc_StatusIconPriorizerConditionSets_Overworld { + get { + return ResourceManager.GetString("Loc_StatusIconPriorizerConditionSets_Overworld", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Status icons that should get priorized at overworld. ähnelt. + /// + public static string Loc_StatusIconPriorizerConditionSets_Overworld_Description { + get { + return ResourceManager.GetString("Loc_StatusIconPriorizerConditionSets_Overworld_Description", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Busy ähnelt. + /// + public static string Loc_StatusIcons_Busy { + get { + return ResourceManager.GetString("Loc_StatusIcons_Busy", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Disconnecting ähnelt. + /// + public static string Loc_StatusIcons_Disconnecting { + get { + return ResourceManager.GetString("Loc_StatusIcons_Disconnecting", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Duty Finder ähnelt. + /// + public static string Loc_StatusIcons_DutyFinder { + get { + return ResourceManager.GetString("Loc_StatusIcons_DutyFinder", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Group Pose ähnelt. + /// + public static string Loc_StatusIcons_GroupPose { + get { + return ResourceManager.GetString("Loc_StatusIcons_GroupPose", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Idle ähnelt. + /// + public static string Loc_StatusIcons_Idle { + get { + return ResourceManager.GetString("Loc_StatusIcons_Idle", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die In Duty ähnelt. + /// + public static string Loc_StatusIcons_InDuty { + get { + return ResourceManager.GetString("Loc_StatusIcons_InDuty", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Mentor ähnelt. + /// + public static string Loc_StatusIcons_Mentor { + get { + return ResourceManager.GetString("Loc_StatusIcons_Mentor", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Mentor Crafting ähnelt. + /// + public static string Loc_StatusIcons_MentorCrafting { + get { + return ResourceManager.GetString("Loc_StatusIcons_MentorCrafting", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Mentor PvE ähnelt. + /// + public static string Loc_StatusIcons_MentorPvE { + get { + return ResourceManager.GetString("Loc_StatusIcons_MentorPvE", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Mentor PvP ähnelt. + /// + public static string Loc_StatusIcons_MentorPvP { + get { + return ResourceManager.GetString("Loc_StatusIcons_MentorPvP", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die New Adventurer ähnelt. + /// + public static string Loc_StatusIcons_NewAdventurer { + get { + return ResourceManager.GetString("Loc_StatusIcons_NewAdventurer", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Party Leader ähnelt. + /// + public static string Loc_StatusIcons_PartyLeader { + get { + return ResourceManager.GetString("Loc_StatusIcons_PartyLeader", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Party Member ähnelt. + /// + public static string Loc_StatusIcons_PartyMember { + get { + return ResourceManager.GetString("Loc_StatusIcons_PartyMember", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Returner ähnelt. + /// + public static string Loc_StatusIcons_Returner { + get { + return ResourceManager.GetString("Loc_StatusIcons_Returner", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Role Playing ähnelt. + /// + public static string Loc_StatusIcons_RolePlaying { + get { + return ResourceManager.GetString("Loc_StatusIcons_RolePlaying", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Viewing Cutscene ähnelt. + /// + public static string Loc_StatusIcons_ViewingCutscene { + get { + return ResourceManager.GetString("Loc_StatusIcons_ViewingCutscene", resourceCulture); + } + } + /// /// Sucht eine lokalisierte Zeichenfolge, die After ähnelt. /// @@ -1706,5 +1949,24 @@ namespace PlayerTags.Resources { return ResourceManager.GetString("Loc_TextGlowColor_Description", resourceCulture); } } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Use priorized icons ähnelt. + /// + public static string Loc_UsePriorizedIcons { + get { + return ResourceManager.GetString("Loc_UsePriorizedIcons", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die This option checked will force a set of status icons to be priorized over job icons, if you enabled job icons. + ///When disabled, only the disconnected status icon is priorized. ähnelt. + /// + public static string Loc_UsePriorizedIcons_Description { + get { + return ResourceManager.GetString("Loc_UsePriorizedIcons_Description", resourceCulture); + } + } } } diff --git a/PlayerTags/Resources/Strings.resx b/PlayerTags/Resources/Strings.resx index f5d3dda..9fed405 100644 --- a/PlayerTags/Resources/Strings.resx +++ b/PlayerTags/Resources/Strings.resx @@ -666,4 +666,92 @@ Defines for which chat type the chat features of this tag should be enabled for. + + Status Icon Priorizer + + + In Duty + + + Status icons that should get priorized within duties. + + + In Foray + + + Status icons that should get priorized within foraies. + + + Overworld + + + Status icons that should get priorized at overworld. + + + Reset to default + + + Resets all condition sets to the default settings + + + Reset to empty + + + Clears all condition sets to an empty collection. None status icons will be priorized. + + + Use priorized icons + + + This option checked will force a set of status icons to be priorized over job icons, if you enabled job icons. +When disabled, only the disconnected status icon is priorized. + + + Busy + + + Disconnecting + + + Duty Finder + + + Group Pose + + + Idle + + + In Duty + + + Mentor + + + Mentor Crafting + + + Mentor PvE + + + Mentor PvP + + + New Adventurer + + + Party Leader + + + Party Member + + + Returner + + + Role Playing + + + Viewing Cutscene + \ No newline at end of file