Some static helpers for frequent payloads and groupings

This commit is contained in:
meli 2020-04-22 14:51:55 -07:00
parent ea6c130aa7
commit 430d834074
5 changed files with 29 additions and 12 deletions

View file

@ -6,6 +6,9 @@ namespace Dalamud.Game.Chat.SeStringHandling.Payloads
{ {
class EmphasisItalicPayload : Payload class EmphasisItalicPayload : Payload
{ {
public static EmphasisItalicPayload ItalicsOn => new EmphasisItalicPayload(true);
public static EmphasisItalicPayload ItalicsOff => new EmphasisItalicPayload(false);
public override PayloadType Type => PayloadType.EmphasisItalic; public override PayloadType Type => PayloadType.EmphasisItalic;
public bool IsEnabled { get; private set; } public bool IsEnabled { get; private set; }

View file

@ -7,6 +7,9 @@ namespace Dalamud.Game.Chat.SeStringHandling.Payloads
{ {
public class RawPayload : Payload public class RawPayload : Payload
{ {
// this and others could be an actual static member somewhere and avoid construction costs, but that probably isn't a real concern
public static RawPayload LinkTerminator => new RawPayload(new byte[] { 0x02, 0x27, 0x07, 0xCF, 0x01, 0x01, 0x01, 0xFF, 0x01, 0x03 });
public override PayloadType Type => PayloadType.Unknown; public override PayloadType Type => PayloadType.Unknown;
private byte[] data; private byte[] data;

View file

@ -7,6 +7,8 @@ namespace Dalamud.Game.Chat.SeStringHandling.Payloads
{ {
public class UIForegroundPayload : Payload public class UIForegroundPayload : Payload
{ {
public static UIForegroundPayload UIForegroundOff => new UIForegroundPayload(0);
public override PayloadType Type => PayloadType.UIForeground; public override PayloadType Type => PayloadType.UIForeground;
public bool IsEnabled => ColorKey != 0; public bool IsEnabled => ColorKey != 0;

View file

@ -7,6 +7,8 @@ namespace Dalamud.Game.Chat.SeStringHandling.Payloads
{ {
public class UIGlowPayload : Payload public class UIGlowPayload : Payload
{ {
public static UIGlowPayload UIGlowOff => new UIGlowPayload(0);
public override PayloadType Type => PayloadType.UIGlow; public override PayloadType Type => PayloadType.UIGlow;
public bool IsEnabled => ColorKey != 0; public bool IsEnabled => ColorKey != 0;

View file

@ -19,19 +19,17 @@ namespace Dalamud.Game.Chat.SeStringHandling
displayName += " \uE03C"; displayName += " \uE03C";
} }
// TODO: probably a cleaner way to build these than doing the bulk+insert
var payloads = new List<Payload>(new Payload[] var payloads = new List<Payload>(new Payload[]
{ {
new UIForegroundPayload(0x0225), new UIForegroundPayload(0x0225),
new UIGlowPayload(0x0226), new UIGlowPayload(0x0226),
new ItemPayload(itemId, isHQ), new ItemPayload(itemId, isHQ),
new UIForegroundPayload(0x01F4), // arrow goes here
new UIGlowPayload(0x01F5),
new TextPayload("\uE0BB"),
new UIGlowPayload(0),
new UIForegroundPayload(0),
new TextPayload(displayName), new TextPayload(displayName),
new RawPayload(new byte[] { 0x02, 0x27, 0x07, 0xCF, 0x01, 0x01, 0x01, 0xFF, 0x01, 0x03 }) RawPayload.LinkTerminator
}); });
payloads.InsertRange(3, TextArrowPayloads());
return new SeString(payloads); return new SeString(payloads);
} }
@ -44,14 +42,11 @@ namespace Dalamud.Game.Chat.SeStringHandling
var payloads = new List<Payload>(new Payload[] var payloads = new List<Payload>(new Payload[]
{ {
mapPayload, mapPayload,
new UIForegroundPayload(0x01F4), // arrow goes here
new UIGlowPayload(0x01F5),
new TextPayload("\uE0BB"),
new UIGlowPayload(0),
new UIForegroundPayload(0),
new TextPayload(nameString), new TextPayload(nameString),
new RawPayload(new byte[] { 0x02, 0x27, 0x07, 0xCF, 0x01, 0x01, 0x01, 0xFF, 0x01, 0x03 }) RawPayload.LinkTerminator
}); });
payloads.InsertRange(1, TextArrowPayloads());
return new SeString(payloads); return new SeString(payloads);
} }
@ -76,5 +71,17 @@ namespace Dalamud.Game.Chat.SeStringHandling
// TODO: empty? throw? // TODO: empty? throw?
return null; return null;
} }
public static List<Payload> TextArrowPayloads()
{
return new List<Payload>(new Payload[]
{
new UIForegroundPayload(0x01F4),
new UIGlowPayload(0x01F5),
new TextPayload("\uE0BB"),
UIGlowPayload.UIGlowOff,
UIForegroundPayload.UIForegroundOff
});
}
} }
} }