48 lines
1.5 KiB
C#
48 lines
1.5 KiB
C#
using Dalamud.Game.Gui.NamePlate;
|
|
using Dalamud.Game.Text.SeStringHandling;
|
|
using Pilz.Dalamud.Tools.Strings;
|
|
|
|
namespace Pilz.Dalamud.Tools.NamePlates;
|
|
|
|
public class NameplateElementChange(NameplateElements element, INamePlateUpdateHandler handler)
|
|
{
|
|
public NameplateElements Element => element;
|
|
public StringChanges Changes { get; set; } = new();
|
|
|
|
public void ApplyFormatting(SeString prefix, SeString postfix)
|
|
{
|
|
var parts = (prefix, postfix);
|
|
|
|
switch (element)
|
|
{
|
|
case NameplateElements.Name:
|
|
handler.NameParts.TextWrap = parts;
|
|
break;
|
|
case NameplateElements.Title:
|
|
handler.TitleParts.OuterWrap = parts;
|
|
break;
|
|
case NameplateElements.FreeCompany:
|
|
handler.FreeCompanyTagParts.OuterWrap = parts;
|
|
break;
|
|
}
|
|
}
|
|
|
|
public void ApplyChanges()
|
|
{
|
|
if (Changes.Any())
|
|
{
|
|
StringUpdateFactory.ApplyStringChanges(new()
|
|
{
|
|
StringChanges = Changes,
|
|
Destination = element switch
|
|
{
|
|
NameplateElements.Name => handler.NameParts.Text ??= handler.InfoView.Name,
|
|
NameplateElements.Title => handler.TitleParts.Text ??= handler.InfoView.Title,
|
|
NameplateElements.FreeCompany => handler.FreeCompanyTagParts.Text ??= handler.InfoView.FreeCompanyTag,
|
|
_ => null,
|
|
},
|
|
});
|
|
}
|
|
}
|
|
}
|