mirror of
https://github.com/goatcorp/Dalamud.git
synced 2025-12-12 18:27:23 +01:00
deps: update FFXIVClientStructs
This commit is contained in:
parent
1aea55f6aa
commit
1b92155c39
3 changed files with 42 additions and 5 deletions
|
|
@ -14,6 +14,7 @@ using Dalamud.Plugin.Services;
|
||||||
|
|
||||||
using FFXIVClientStructs.FFXIV.Client.Graphics;
|
using FFXIVClientStructs.FFXIV.Client.Graphics;
|
||||||
using FFXIVClientStructs.FFXIV.Client.System.Memory;
|
using FFXIVClientStructs.FFXIV.Client.System.Memory;
|
||||||
|
using FFXIVClientStructs.FFXIV.Client.System.String;
|
||||||
using FFXIVClientStructs.FFXIV.Component.GUI;
|
using FFXIVClientStructs.FFXIV.Component.GUI;
|
||||||
|
|
||||||
namespace Dalamud.Game.Gui.Dtr;
|
namespace Dalamud.Game.Gui.Dtr;
|
||||||
|
|
@ -51,6 +52,8 @@ internal sealed unsafe class DtrBar : IInternalDisposableService, IDtrBar
|
||||||
private readonly List<DtrBarEntry> entries = new();
|
private readonly List<DtrBarEntry> entries = new();
|
||||||
|
|
||||||
private readonly Dictionary<uint, List<IAddonEventHandle>> eventHandles = new();
|
private readonly Dictionary<uint, List<IAddonEventHandle>> eventHandles = new();
|
||||||
|
|
||||||
|
private Utf8String* emptyString;
|
||||||
|
|
||||||
private uint runningNodeIds = BaseNodeId;
|
private uint runningNodeIds = BaseNodeId;
|
||||||
private float entryStartPos = float.NaN;
|
private float entryStartPos = float.NaN;
|
||||||
|
|
@ -111,10 +114,16 @@ internal sealed unsafe class DtrBar : IInternalDisposableService, IDtrBar
|
||||||
this.addonLifecycle.UnregisterListener(this.dtrPreFinalizeListener);
|
this.addonLifecycle.UnregisterListener(this.dtrPreFinalizeListener);
|
||||||
|
|
||||||
foreach (var entry in this.entries)
|
foreach (var entry in this.entries)
|
||||||
this.RemoveNode(entry.TextNode);
|
this.RemoveEntry(entry);
|
||||||
|
|
||||||
this.entries.Clear();
|
this.entries.Clear();
|
||||||
this.framework.Update -= this.Update;
|
this.framework.Update -= this.Update;
|
||||||
|
|
||||||
|
if (this.emptyString != null)
|
||||||
|
{
|
||||||
|
this.emptyString->Dtor();
|
||||||
|
this.emptyString = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -124,12 +133,23 @@ internal sealed unsafe class DtrBar : IInternalDisposableService, IDtrBar
|
||||||
{
|
{
|
||||||
foreach (var data in this.entries.Where(d => d.ShouldBeRemoved))
|
foreach (var data in this.entries.Where(d => d.ShouldBeRemoved))
|
||||||
{
|
{
|
||||||
this.RemoveNode(data.TextNode);
|
this.RemoveEntry(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.entries.RemoveAll(d => d.ShouldBeRemoved);
|
this.entries.RemoveAll(d => d.ShouldBeRemoved);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Remove native resources for the specified entry.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="toRemove">The resources to remove.</param>
|
||||||
|
internal void RemoveEntry(DtrBarEntry toRemove)
|
||||||
|
{
|
||||||
|
this.RemoveNode(toRemove.TextNode);
|
||||||
|
toRemove.Storage->Dtor(true);
|
||||||
|
toRemove.Storage = null;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Check whether an entry with the specified title exists.
|
/// Check whether an entry with the specified title exists.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -204,7 +224,15 @@ internal sealed unsafe class DtrBar : IInternalDisposableService, IDtrBar
|
||||||
if (data is { Dirty: true, Added: true, Text: not null, TextNode: not null })
|
if (data is { Dirty: true, Added: true, Text: not null, TextNode: not null })
|
||||||
{
|
{
|
||||||
var node = data.TextNode;
|
var node = data.TextNode;
|
||||||
node->SetText(data.Text.Encode());
|
|
||||||
|
if (data.Storage == null)
|
||||||
|
{
|
||||||
|
data.Storage = Utf8String.CreateEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
data.Storage->SetString(data.Text.EncodeWithNullTerminator());
|
||||||
|
node->SetText(data.Storage->StringPtr);
|
||||||
|
|
||||||
ushort w = 0, h = 0;
|
ushort w = 0, h = 0;
|
||||||
|
|
||||||
if (!isHide)
|
if (!isHide)
|
||||||
|
|
@ -427,7 +455,10 @@ internal sealed unsafe class DtrBar : IInternalDisposableService, IDtrBar
|
||||||
newTextNode->TextFlags = (byte)TextFlags.Edge;
|
newTextNode->TextFlags = (byte)TextFlags.Edge;
|
||||||
newTextNode->TextFlags2 = 0;
|
newTextNode->TextFlags2 = 0;
|
||||||
|
|
||||||
newTextNode->SetText(" ");
|
if (this.emptyString == null)
|
||||||
|
this.emptyString = Utf8String.FromString(" ");
|
||||||
|
|
||||||
|
newTextNode->SetText(this.emptyString->StringPtr);
|
||||||
|
|
||||||
newTextNode->TextColor = new ByteColor { R = 255, G = 255, B = 255, A = 255 };
|
newTextNode->TextColor = new ByteColor { R = 255, G = 255, B = 255, A = 255 };
|
||||||
newTextNode->EdgeColor = new ByteColor { R = 142, G = 106, B = 12, A = 255 };
|
newTextNode->EdgeColor = new ByteColor { R = 142, G = 106, B = 12, A = 255 };
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ using Dalamud.Configuration.Internal;
|
||||||
using Dalamud.Game.Text.SeStringHandling;
|
using Dalamud.Game.Text.SeStringHandling;
|
||||||
using Dalamud.Utility;
|
using Dalamud.Utility;
|
||||||
|
|
||||||
|
using FFXIVClientStructs.FFXIV.Client.System.String;
|
||||||
using FFXIVClientStructs.FFXIV.Component.GUI;
|
using FFXIVClientStructs.FFXIV.Component.GUI;
|
||||||
|
|
||||||
namespace Dalamud.Game.Gui.Dtr;
|
namespace Dalamud.Game.Gui.Dtr;
|
||||||
|
|
@ -149,6 +150,11 @@ public sealed unsafe class DtrBarEntry : IDisposable, IDtrBarEntry
|
||||||
/// Gets or sets the internal text node of this entry.
|
/// Gets or sets the internal text node of this entry.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal AtkTextNode* TextNode { get; set; }
|
internal AtkTextNode* TextNode { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the storage for the text of this entry.
|
||||||
|
/// </summary>
|
||||||
|
internal Utf8String* Storage { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a value indicating whether this entry should be removed.
|
/// Gets a value indicating whether this entry should be removed.
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit dabb0e6d774eca86b7161317324974f530f6745e
|
Subproject commit 78aa8890dbfdec9bc4bcadf9630892439a446404
|
||||||
Loading…
Add table
Add a link
Reference in a new issue