add method for applying prio status icon to nameplate element

This commit is contained in:
2022-11-04 18:36:00 +01:00
parent 85139e4c57
commit a50fa41a13
2 changed files with 23 additions and 5 deletions

View File

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

View File

@@ -30,10 +30,9 @@ namespace Pilz.Dalamud.Nameplates.Tools
/// <param name="iconId">The incoming icon id that is being overwritten by the plugin.</param>
/// <param name="priorityIconId">The icon id that should be used.</param>
/// <returns>Whether a priority icon was found.</returns>
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;