diff --git a/Pilz.Dalamud/Nameplates/Tools/NameplateUpdateFactory.cs b/Pilz.Dalamud/Nameplates/Tools/NameplateUpdateFactory.cs index b9133e3..1aa26d4 100644 --- a/Pilz.Dalamud/Nameplates/Tools/NameplateUpdateFactory.cs +++ b/Pilz.Dalamud/Nameplates/Tools/NameplateUpdateFactory.cs @@ -1,4 +1,8 @@ using Dalamud.Game.Text.SeStringHandling; +using Dalamud.Game.Text.SeStringHandling.Payloads; +using Pilz.Dalamud.ActivityContexts; +using Pilz.Dalamud.Nameplates.Model; +using Pilz.Dalamud.Tools; using Pilz.Dalamud.Tools.Strings; using System; using System.Collections.Generic; @@ -18,5 +22,23 @@ namespace Pilz.Dalamud.Nameplates.Tools StringUpdateFactory.ApplyStringChanges(change); } } + + public static bool ApplyStatusIconWithPrio(ref int statusIcon, int newStatusIcon, StringChange stringChange, ActivityContext activityContext, StatusIconPriorizer priorizer) + { + var isPrio = priorizer.IsPriorityIcon(statusIcon, activityContext); + + if (!isPrio) + { + var fontIcon = StatusIconFontConverter.GetBitmapFontIconFromStatusIcon((StatusIcons)statusIcon); + + if (fontIcon != null) + { + var iconPayload = new IconPayload(fontIcon.Value); + stringChange.Payloads.Insert(0, iconPayload); + } + } + + return isPrio; + } } } diff --git a/Pilz.Dalamud/Nameplates/Tools/StatusIconPriorizer.cs b/Pilz.Dalamud/Nameplates/Tools/StatusIconPriorizer.cs index 61e2166..6d0c6fa 100644 --- a/Pilz.Dalamud/Nameplates/Tools/StatusIconPriorizer.cs +++ b/Pilz.Dalamud/Nameplates/Tools/StatusIconPriorizer.cs @@ -30,10 +30,9 @@ namespace Pilz.Dalamud.Nameplates.Tools /// The incoming icon id that is being overwritten by the plugin. /// The icon id that should be used. /// Whether a priority icon was found. - private bool IsPriorityIcon(int iconId, out int priorityIconId, ActivityContext activityContext) + public bool IsPriorityIcon(int iconId, ActivityContext activityContext) { bool isPrioIcon; - priorityIconId = iconId; if (!Settings.UsePriorizedIcons && iconId != (int)StatusIcons.Disconnecting && iconId != (int)StatusIcons.Disconnecting + 50) isPrioIcon = false; @@ -46,9 +45,6 @@ namespace Pilz.Dalamud.Nameplates.Tools // Determine whether the incoming icon should take priority over the job icon // Check the id plus 50 as that's an alternately sized version isPrioIcon = priorityIcons.Contains(iconId) || priorityIcons.Contains(iconId + 50); - - // Save the id of the icon - priorityIconId = iconId; } return isPrioIcon;