refactor: remove SeStringManager uses

This commit is contained in:
Anna 2021-08-28 15:02:03 -04:00
parent c0873263fd
commit 57cb277156
11 changed files with 32 additions and 51 deletions

View File

@ -14,7 +14,6 @@ namespace XivCommon.Functions {
}
private GameFunctions Functions { get; }
private SeStringManager SeStringManager { get; }
private bool HookEnabled { get; }
/// <summary>
@ -37,9 +36,8 @@ namespace XivCommon.Functions {
private AddBattleTalkDelegate? AddBattleTalk { get; }
private Hook<AddBattleTalkDelegate>? AddBattleTalkHook { get; }
internal BattleTalk(GameFunctions functions, SigScanner scanner, SeStringManager seStringManager, bool hook) {
internal BattleTalk(GameFunctions functions, SigScanner scanner,bool hook) {
this.Functions = functions;
this.SeStringManager = seStringManager;
this.HookEnabled = hook;
if (scanner.TryScanText(Signatures.AddBattleTalk, out var addBattleTalkPtr, "battle talk")) {
@ -76,8 +74,8 @@ namespace XivCommon.Functions {
var rawSender = Util.ReadTerminated(senderPtr);
var rawMessage = Util.ReadTerminated(messagePtr);
var sender = this.SeStringManager.Parse(rawSender);
var message = this.SeStringManager.Parse(rawMessage);
var sender = SeString.Parse(rawSender);
var message = SeString.Parse(rawMessage);
var options = new BattleTalkOptions {
Duration = duration,

View File

@ -17,7 +17,6 @@ namespace XivCommon.Functions {
}
private ObjectTable ObjectTable { get; }
private SeStringManager SeStringManager { get; }
private delegate void OpenChatBubbleDelegate(IntPtr manager, IntPtr @object, IntPtr text, byte a4);
@ -57,9 +56,8 @@ namespace XivCommon.Functions {
/// </summary>
public event OnUpdateChatBubbleDelegate? OnUpdateBubble;
internal ChatBubbles(ObjectTable objectTable, SigScanner scanner, SeStringManager manager, bool hookEnabled) {
internal ChatBubbles(ObjectTable objectTable, SigScanner scanner, bool hookEnabled) {
this.ObjectTable = objectTable;
this.SeStringManager = manager;
if (!hookEnabled) {
return;
@ -97,7 +95,7 @@ namespace XivCommon.Functions {
return;
}
var text = Util.ReadSeString(textPtr, this.SeStringManager);
var text = Util.ReadSeString(textPtr);
try {
this.OnChatBubble?.Invoke(ref @object, ref text);

View File

@ -167,15 +167,13 @@ namespace XivCommon.Functions.ContextMenu {
private GameFunctions Functions { get; }
private ClientLanguage Language { get; }
private SeStringManager SeStringManager { get; }
private IntPtr Agent { get; set; } = IntPtr.Zero;
private List<BaseContextMenuItem> Items { get; } = new();
private int NormalSize { get; set; }
internal ContextMenu(GameFunctions functions, SigScanner scanner, SeStringManager manager, ClientLanguage language, Hooks hooks) {
internal ContextMenu(GameFunctions functions, SigScanner scanner, ClientLanguage language, Hooks hooks) {
this.Functions = functions;
this.Language = language;
this.SeStringManager = manager;
if (!hooks.HasFlag(Hooks.ContextMenu)) {
return;
@ -321,7 +319,7 @@ namespace XivCommon.Functions.ContextMenu {
var objectId = *(uint*) (agent + ObjectIdOffset);
var contentIdLower = *(uint*) (agent + ContentIdLowerOffset);
var textBytes = Util.ReadTerminated(Marshal.ReadIntPtr(agent + TextPointerOffset));
var text = textBytes.Length == 0 ? null : this.SeStringManager.Parse(textBytes);
var text = textBytes.Length == 0 ? null : SeString.Parse(textBytes);
var objectWorld = *(ushort*) (agent + WorldOffset);
return (objectId, contentIdLower, text, objectWorld);
}
@ -408,7 +406,7 @@ namespace XivCommon.Functions.ContextMenu {
for (var i = 0; i < this.NormalSize; i++) {
var atkItem = &atkValueArgs[offset + i];
var name = Util.ReadSeString((IntPtr) atkItem->String, this.SeStringManager);
var name = Util.ReadSeString((IntPtr) atkItem->String);
var enabled = true;
if (hasGameDisabled) {

View File

@ -33,7 +33,6 @@ namespace XivCommon.Functions.NamePlates {
public event NamePlateUpdateEvent? OnUpdate;
private GameFunctions Functions { get; }
private SeStringManager SeStringManager { get; }
private readonly Hook<NamePlateUpdateDelegate>? _namePlateUpdateHook;
/// <summary>
@ -46,9 +45,8 @@ namespace XivCommon.Functions.NamePlates {
/// </summary>
public bool ForceRedraw { get; set; }
internal NamePlates(GameFunctions functions, SigScanner scanner, SeStringManager manager, bool hookEnabled) {
internal NamePlates(GameFunctions functions, SigScanner scanner, bool hookEnabled) {
this.Functions = functions;
this.SeStringManager = manager;
if (!hookEnabled) {
return;
@ -132,19 +130,19 @@ namespace XivCommon.Functions.NamePlates {
var flags = numbers->IntArray[numbersIndex + FlagsIndex];
var nameRaw = strings->StringArray[NameIndex + i];
var name = Util.ReadSeString((IntPtr) nameRaw, this.SeStringManager);
var name = Util.ReadSeString((IntPtr) nameRaw);
var titleRaw = strings->StringArray[TitleIndex + i];
var title = Util.ReadSeString((IntPtr) titleRaw, this.SeStringManager);
var title = Util.ReadSeString((IntPtr) titleRaw);
var fcRaw = strings->StringArray[FreeCompanyIndex + i];
var fc = Util.ReadSeString((IntPtr) fcRaw, this.SeStringManager);
var fc = Util.ReadSeString((IntPtr) fcRaw);
var levelRaw = strings->StringArray[LevelIndex + i];
var level = Util.ReadSeString((IntPtr) levelRaw, this.SeStringManager);
var level = Util.ReadSeString((IntPtr) levelRaw);
var letterRaw = strings->StringArray[EnemyLetterIndex + i];
var letter = Util.ReadSeString((IntPtr) letterRaw, this.SeStringManager);
var letter = Util.ReadSeString((IntPtr) letterRaw);
var args = new NamePlateUpdateEventArgs((uint) info.ActorID) {
Name = new SeString(name.Payloads),

View File

@ -19,8 +19,6 @@ namespace XivCommon.Functions {
private const int NameOffset = 0x10;
private const int StyleOffset = 0x38;
private SeStringManager SeStringManager { get; }
private delegate void AddonTalkV45Delegate(IntPtr addon, IntPtr a2, IntPtr data);
private Hook<AddonTalkV45Delegate>? AddonTalkV45Hook { get; }
@ -44,9 +42,7 @@ namespace XivCommon.Functions {
/// </summary>
public event TalkEventDelegate? OnTalk;
internal Talk(SigScanner scanner, SeStringManager manager, bool hooksEnabled) {
this.SeStringManager = manager;
internal Talk(SigScanner scanner, bool hooksEnabled) {
if (scanner.TryScanText(Signatures.SetAtkValue, out var setAtkPtr, "Talk - set atk value")) {
this.SetAtkValueString = Marshal.GetDelegateForFunctionPointer<SetAtkValueStringDelegate>(setAtkPtr);
} else {
@ -88,8 +84,8 @@ namespace XivCommon.Functions {
var rawText = Util.ReadTerminated(Marshal.ReadIntPtr(data + TextOffset + 8));
var style = (TalkStyle) Marshal.ReadByte(data + StyleOffset);
var name = this.SeStringManager.Parse(rawName);
var text = this.SeStringManager.Parse(rawText);
var name = SeString.Parse(rawName);
var text = SeString.Parse(rawText);
try {
this.OnTalk?.Invoke(ref name, ref text, ref style);

View File

@ -5,7 +5,7 @@ namespace XivCommon.Functions.Tooltips {
/// The class allowing for action tooltip manipulation
/// </summary>
public unsafe class ActionTooltip : BaseTooltip {
internal ActionTooltip(SeStringManager manager, Tooltips.StringArrayDataSetStringDelegate sadSetString, byte*** stringArrayData, int** numberArrayData) : base(manager, sadSetString, stringArrayData, numberArrayData) {
internal ActionTooltip(Tooltips.StringArrayDataSetStringDelegate sadSetString, byte*** stringArrayData, int** numberArrayData) : base(sadSetString, stringArrayData, numberArrayData) {
}
/// <summary>

View File

@ -6,7 +6,6 @@ namespace XivCommon.Functions.Tooltips {
/// The base class for tooltips
/// </summary>
public abstract unsafe class BaseTooltip {
private SeStringManager Manager { get; }
private Tooltips.StringArrayDataSetStringDelegate SadSetString { get; }
/// <summary>
@ -19,8 +18,7 @@ namespace XivCommon.Functions.Tooltips {
/// </summary>
protected readonly int** NumberArrayData;
internal BaseTooltip(SeStringManager manager, Tooltips.StringArrayDataSetStringDelegate sadSetString, byte*** stringArrayData, int** numberArrayData) {
this.Manager = manager;
internal BaseTooltip(Tooltips.StringArrayDataSetStringDelegate sadSetString, byte*** stringArrayData, int** numberArrayData) {
this.SadSetString = sadSetString;
this._stringArrayData = stringArrayData;
this.NumberArrayData = numberArrayData;
@ -38,7 +36,7 @@ namespace XivCommon.Functions.Tooltips {
protected SeString this[int index] {
get {
var ptr = *(this._stringArrayData + 4) + index;
return Util.ReadSeString((IntPtr) (*ptr), this.Manager);
return Util.ReadSeString((IntPtr) (*ptr));
}
set {
var encoded = value.Encode().Terminate();

View File

@ -5,7 +5,7 @@ namespace XivCommon.Functions.Tooltips {
/// The class allowing for item tooltip manipulation
/// </summary>
public unsafe class ItemTooltip : BaseTooltip {
internal ItemTooltip(SeStringManager manager, Tooltips.StringArrayDataSetStringDelegate sadSetString, byte*** stringArrayData, int** numberArrayData) : base(manager, sadSetString, stringArrayData, numberArrayData) {
internal ItemTooltip(Tooltips.StringArrayDataSetStringDelegate sadSetString, byte*** stringArrayData, int** numberArrayData) : base(sadSetString, stringArrayData, numberArrayData) {
}
/// <summary>

View File

@ -2,7 +2,6 @@
using System.Runtime.InteropServices;
using Dalamud.Game;
using Dalamud.Game.Gui;
using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Hooking;
namespace XivCommon.Functions.Tooltips {
@ -61,13 +60,11 @@ namespace XivCommon.Functions.Tooltips {
public event ActionTooltipEventDelegate? OnActionTooltip;
private GameGui GameGui { get; }
private SeStringManager SeStringManager { get; }
private ItemTooltip? ItemTooltip { get; set; }
private ActionTooltip? ActionTooltip { get; set; }
internal Tooltips(SigScanner scanner, GameGui gui, SeStringManager manager, bool enabled) {
internal Tooltips(SigScanner scanner, GameGui gui, bool enabled) {
this.GameGui = gui;
this.SeStringManager = manager;
if (scanner.TryScanText(Signatures.SadSetString, out var setStringPtr, "Tooltips - StringArrayData::SetString")) {
this.SadSetString = Marshal.GetDelegateForFunctionPointer<StringArrayDataSetStringDelegate>(setStringPtr);
@ -117,7 +114,7 @@ namespace XivCommon.Functions.Tooltips {
}
private unsafe void ItemUpdateTooltipDetourInner(int** numberArrayData, byte*** stringArrayData) {
this.ItemTooltip = new ItemTooltip(this.SeStringManager, this.SadSetString!, stringArrayData, numberArrayData);
this.ItemTooltip = new ItemTooltip(this.SadSetString!, stringArrayData, numberArrayData);
try {
this.OnItemTooltip?.Invoke(this.ItemTooltip, this.GameGui.HoveredItem);
@ -142,7 +139,7 @@ namespace XivCommon.Functions.Tooltips {
}
private unsafe void ActionUpdateTooltipDetourInner(int** numberArrayData, byte*** stringArrayData) {
this.ActionTooltip = new ActionTooltip(this.SeStringManager, this.SadSetString!, stringArrayData, numberArrayData);
this.ActionTooltip = new ActionTooltip(this.SadSetString!, stringArrayData, numberArrayData);
try {
this.OnActionTooltip?.Invoke(this.ActionTooltip, this.GameGui.HoveredAction);

View File

@ -6,7 +6,6 @@ using Dalamud.Game.ClientState;
using Dalamud.Game.ClientState.Objects;
using Dalamud.Game.Gui;
using Dalamud.Game.Gui.PartyFinder;
using Dalamud.Game.Text.SeStringHandling;
using XivCommon.Functions;
using XivCommon.Functions.ContextMenu;
using XivCommon.Functions.NamePlates;
@ -100,18 +99,17 @@ namespace XivCommon {
var objectTable = Util.GetService<ObjectTable>();
var partyFinderGui = Util.GetService<PartyFinderGui>();
var scanner = Util.GetService<SigScanner>();
var seStringManager = Util.GetService<SeStringManager>();
this.UiAlloc = new UiAlloc(scanner);
this.Chat = new Chat(this, scanner);
this.PartyFinder = new PartyFinder(scanner, partyFinderGui, hooks);
this.BattleTalk = new BattleTalk(this, scanner, seStringManager, hooks.HasFlag(Hooks.BattleTalk));
this.BattleTalk = new BattleTalk(this, scanner, hooks.HasFlag(Hooks.BattleTalk));
this.Examine = new Examine(this, scanner);
this.Talk = new Talk(scanner, seStringManager, hooks.HasFlag(Hooks.Talk));
this.ChatBubbles = new ChatBubbles(objectTable, scanner, seStringManager, hooks.HasFlag(Hooks.ChatBubbles));
this.ContextMenu = new ContextMenu(this, scanner, seStringManager, clientState.ClientLanguage, hooks);
this.Tooltips = new Tooltips(scanner, this.GameGui, seStringManager, hooks.HasFlag(Hooks.Tooltips));
this.NamePlates = new NamePlates(this, scanner, seStringManager, hooks.HasFlag(Hooks.NamePlates));
this.Talk = new Talk(scanner, hooks.HasFlag(Hooks.Talk));
this.ChatBubbles = new ChatBubbles(objectTable, scanner, hooks.HasFlag(Hooks.ChatBubbles));
this.ContextMenu = new ContextMenu(this, scanner, clientState.ClientLanguage, hooks);
this.Tooltips = new Tooltips(scanner, this.GameGui, hooks.HasFlag(Hooks.Tooltips));
this.NamePlates = new NamePlates(this, scanner, hooks.HasFlag(Hooks.NamePlates));
this.DutyFinder = new DutyFinder(this, scanner);
this.Journal = new Journal(this, scanner);

View File

@ -30,9 +30,9 @@ namespace XivCommon {
return buf.ToArray();
}
internal static SeString ReadSeString(IntPtr memory, SeStringManager manager) {
internal static SeString ReadSeString(IntPtr memory) {
var terminated = ReadTerminated(memory);
return manager.Parse(terminated);
return SeString.Parse(terminated);
}
internal static void PrintMissingSig(string name) {