This commit is contained in:
Infi
2025-08-06 22:24:45 +02:00
parent b760de1799
commit efddaf30ad
37 changed files with 153 additions and 145 deletions
+1 -1
View File
@@ -7,7 +7,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="JetBrains.Annotations" Version="2024.3.0" />
<PackageReference Include="JetBrains.Annotations" Version="2025.2.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageReference Include="MSTest.TestAdapter" Version="3.6.3" />
<PackageReference Include="MSTest.TestFramework" Version="3.6.3" />
+4 -4
View File
@@ -1,6 +1,6 @@
<Project Sdk="Dalamud.NET.Sdk/12.0.2">
<Project Sdk="Dalamud.NET.Sdk/13.0.0">
<PropertyGroup>
<Version>1.30.7</Version>
<Version>1.31.0</Version>
<TargetFramework>net9.0-windows</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
@@ -14,10 +14,10 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MessagePack" Version="3.1.3" />
<PackageReference Include="MessagePack" Version="3.1.4" />
<PackageReference Include="Microsoft.Data.Sqlite" Version="9.0.0" />
<PackageReference Include="Pidgin" Version="3.3.0" />
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.7" />
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.11" />
<PackageReference Include="Watson.Lite" Version="6.2.3" />
</ItemGroup>
+9 -9
View File
@@ -8,7 +8,7 @@ using Dalamud;
using Dalamud.Configuration;
using Dalamud.Game.ClientState.Keys;
using Dalamud.Interface.FontIdentifier;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
namespace ChatTwo;
@@ -633,15 +633,15 @@ internal static class ExtraGlyphRangesExt
_ => throw new ArgumentOutOfRangeException(nameof(ranges), ranges, null),
};
internal static nint Range(this ExtraGlyphRanges ranges) => ranges switch
internal static unsafe nint Range(this ExtraGlyphRanges ranges) => ranges switch
{
ExtraGlyphRanges.ChineseFull => ImGui.GetIO().Fonts.GetGlyphRangesChineseFull(),
ExtraGlyphRanges.ChineseSimplifiedCommon => ImGui.GetIO().Fonts.GetGlyphRangesChineseSimplifiedCommon(),
ExtraGlyphRanges.Cyrillic => ImGui.GetIO().Fonts.GetGlyphRangesCyrillic(),
ExtraGlyphRanges.Japanese => ImGui.GetIO().Fonts.GetGlyphRangesJapanese(),
ExtraGlyphRanges.Korean => ImGui.GetIO().Fonts.GetGlyphRangesKorean(),
ExtraGlyphRanges.Thai => ImGui.GetIO().Fonts.GetGlyphRangesThai(),
ExtraGlyphRanges.Vietnamese => ImGui.GetIO().Fonts.GetGlyphRangesVietnamese(),
ExtraGlyphRanges.ChineseFull => (nint)ImGui.GetIO().Fonts.GetGlyphRangesChineseFull(),
ExtraGlyphRanges.ChineseSimplifiedCommon => (nint)ImGui.GetIO().Fonts.GetGlyphRangesChineseSimplifiedCommon(),
ExtraGlyphRanges.Cyrillic => (nint)ImGui.GetIO().Fonts.GetGlyphRangesCyrillic(),
ExtraGlyphRanges.Japanese => (nint)ImGui.GetIO().Fonts.GetGlyphRangesJapanese(),
ExtraGlyphRanges.Korean => (nint)ImGui.GetIO().Fonts.GetGlyphRangesKorean(),
ExtraGlyphRanges.Thai => (nint)ImGui.GetIO().Fonts.GetGlyphRangesThai(),
ExtraGlyphRanges.Vietnamese => (nint)ImGui.GetIO().Fonts.GetGlyphRangesVietnamese(),
_ => throw new ArgumentOutOfRangeException(nameof(ranges), ranges, null),
};
}
+3 -3
View File
@@ -4,7 +4,7 @@ using System.Text.Json.Serialization;
using Dalamud.Interface.Textures;
using Dalamud.Interface.Textures.TextureWraps;
using Dalamud.Utility;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
@@ -154,7 +154,7 @@ public static class EmoteCache
public virtual void Draw(Vector2 size)
{
ImGui.Image(Texture!.ImGuiHandle, size);
ImGui.Image(Texture!.Handle, size);
}
internal async Task<byte[]> LoadAsync(Emote emote)
@@ -236,7 +236,7 @@ public static class EmoteCache
if (FrameTimer <= 0.0f)
FrameTimer = frame.Delay;
ImGui.Image(frame.Texture.ImGuiHandle, size);
ImGui.Image(frame.Texture.Handle, size);
if (GlobalFrameCount == Plugin.Interface.UiBuilder.FrameCount)
return;
+5 -5
View File
@@ -2,7 +2,7 @@
using Dalamud.Interface.GameFonts;
using Dalamud.Interface.ManagedFontAtlas;
using Dalamud.Interface.Utility;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
namespace ChatTwo;
@@ -44,7 +44,7 @@ public class FontManager
.ReadAsByteArrayAsync()
.Result;
Dalamud.Utility.Util.WriteAllBytesSafe(filePath, GameSymFont);
Dalamud.Utility.FilesystemUtil.WriteAllBytesSafe(filePath, GameSymFont);
}
}
@@ -52,10 +52,10 @@ public class FontManager
{
ushort[] BuildRange(IReadOnlyList<ushort>? chars, params nint[] ranges)
{
var builder = new ImFontGlyphRangesBuilderPtr(ImGuiNative.ImFontGlyphRangesBuilder_ImFontGlyphRangesBuilder());
var builder = new ImFontGlyphRangesBuilderPtr(ImGuiNative.ImFontGlyphRangesBuilder());
// text
foreach (var range in ranges)
builder.AddRanges(range);
builder.AddRanges((ushort*)range);
// chars
if (chars != null)
@@ -85,7 +85,7 @@ public class FontManager
return builder.BuildRangesToArray();
}
var ranges = new List<nint> { ImGui.GetIO().Fonts.GetGlyphRangesDefault() };
var ranges = new List<nint> { (nint)ImGui.GetIO().Fonts.GetGlyphRangesDefault() };
foreach (var extraRange in Enum.GetValues<ExtraGlyphRanges>())
if (Plugin.Config.ExtraGlyphRanges.HasFlag(extraRange))
ranges.Add(extraRange.Range());
+1 -1
View File
@@ -34,7 +34,7 @@ internal sealed unsafe class Chat : IDisposable
private readonly delegate* unmanaged<NetworkModule*, ulong, ushort, Utf8String*, Utf8String*, ushort, ushort, byte> SendTellNative = null!;
// Client::UI::AddonChatLog.OnRefresh
[Signature("40 53 56 57 48 81 EC ?? ?? ?? ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 84 24 ?? ?? ?? ?? 49 8B F0 8B FA", DetourName = nameof(ChatLogRefreshDetour))]
[Signature("40 53 57 41 57 48 81 EC ?? ?? ?? ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 84 24 ?? ?? ?? ?? 4D 8B F8", DetourName = nameof(ChatLogRefreshDetour))]
private Hook<ChatLogRefreshDelegate>? ChatLogRefreshHook { get; init; }
private delegate byte ChatLogRefreshDelegate(nint log, ushort eventId, AtkValue* value);
+6 -5
View File
@@ -5,7 +5,9 @@ using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Game.Text.SeStringHandling.Payloads;
using Dalamud.Hooking;
using Dalamud.Memory;
using Dalamud.Utility;
using Dalamud.Utility.Signatures;
using FFXIVClientStructs.FFXIV.Client.Enums;
using FFXIVClientStructs.FFXIV.Client.Game.UI;
using FFXIVClientStructs.FFXIV.Client.UI;
using FFXIVClientStructs.FFXIV.Client.UI.Agent;
@@ -21,10 +23,9 @@ namespace ChatTwo.GameFunctions;
internal unsafe class GameFunctions : IDisposable
{
#region Hooks
private delegate nint ResolveTextCommandPlaceholderDelegate(nint a1, byte* placeholderText, byte a3, byte a4);
[Signature("E8 ?? ?? ?? ?? 49 8D 4F 18 4C 8B E0", DetourName = nameof(ResolveTextCommandPlaceholderDetour))]
[Signature("E8 ?? ?? ?? ?? 48 85 C0 0F 84 ?? ?? ?? ?? 48 8B D0 49 8D 4F", DetourName = nameof(ResolveTextCommandPlaceholderDetour))]
private Hook<ResolveTextCommandPlaceholderDelegate>? ResolveTextCommandPlaceholderHook { get; init; }
private delegate nint ResolveTextCommandPlaceholderDelegate(nint a1, byte* placeholderText, byte a3, byte a4);
#endregion
private Plugin Plugin { get; }
@@ -109,7 +110,7 @@ internal unsafe class GameFunctions : IDisposable
return addon != null && addon->IsVisible;
}
internal static void OpenItemTooltip(uint id, ItemPayload.ItemKind itemKind)
internal static void OpenItemTooltip(uint id, ItemKind itemKind)
{
var atkStage = AtkStage.Instance();
var agent = AgentItemDetail.Instance();
@@ -119,7 +120,7 @@ internal unsafe class GameFunctions : IDisposable
if (agent == null || addon == null)
return;
agent->ItemKind = itemKind == ItemPayload.ItemKind.EventItem ? ItemDetailKind.ChatEventItem : ItemDetailKind.ChatItem;
agent->DetailKind = itemKind == ItemKind.EventItem ? DetailKind.KeyItem : DetailKind.Item;
agent->TypeOrId = id;
agent->Index = 0;
agent->Flag1 &= 0xEF;
+1 -1
View File
@@ -7,7 +7,7 @@ using Dalamud.Game.Config;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.System.String;
using FFXIVClientStructs.FFXIV.Client.UI;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
using ModifierFlag = ChatTwo.GameFunctions.Types.ModifierFlag;
namespace ChatTwo.GameFunctions;
+7 -7
View File
@@ -310,13 +310,13 @@ internal partial class Message
var kind = item.ItemId switch
{
< 500_000 => ItemPayload.ItemKind.Normal,
< 1_000_000 => ItemPayload.ItemKind.Collectible,
< 2_000_000 => ItemPayload.ItemKind.Hq,
_ => ItemPayload.ItemKind.EventItem
< 500_000 => ItemKind.Normal,
< 1_000_000 => ItemKind.Collectible,
< 2_000_000 => ItemKind.Hq,
_ => ItemKind.EventItem
};
var name = kind != ItemPayload.ItemKind.EventItem
var name = kind != ItemKind.EventItem
? Plugin.DataManager.GetExcelSheet<Item>().GetRow(item.ItemId).Name.ToString()
: Plugin.DataManager.GetExcelSheet<EventItem>().GetRow(item.ItemId).Name.ToString();
@@ -346,13 +346,13 @@ internal partial class Message
else if (split == "<flag>")
{
var agentMap = AgentMap.Instance();
if (!agentMap->IsFlagMarkerSet)
if (agentMap->FlagMarkerCount == 0)
{
AddChunkWithMessage(text.NewWithStyle(chunk.Source, chunk.Link, split));
continue;
}
var mapCoords = agentMap->FlagMapMarker;
var mapCoords = agentMap->FlagMapMarkers[0];
var rawX = (int)(MathF.Round(mapCoords.XFloat, 3, MidpointRounding.AwayFromZero) * 1000);
var rawY = (int)(MathF.Round(mapCoords.YFloat, 3, MidpointRounding.AwayFromZero) * 1000);
+19 -15
View File
@@ -18,7 +18,7 @@ using Dalamud.Interface.Utility.Raii;
using Dalamud.Utility;
using FFXIVClientStructs.FFXIV.Client.UI;
using FFXIVClientStructs.FFXIV.Component.GUI;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
using Lumina.Excel.Sheets;
using Action = System.Action;
@@ -263,17 +263,21 @@ public sealed class PayloadHandler
if (!Plugin.GameConfig.TryGet(UiControlOption.DetailTrackingType, out uint selected) || selected != 0)
return;
if (LogWindow.LastViewport != ImGuiHelpers.MainViewport.NativePtr)
if (LogWindow.LastViewport != ImGuiHelpers.MainViewport.Handle)
return;
var atk = (AtkUnitBase*) args.Addon;
if (atk->WindowNode == null)
var atk = args.Addon;
if (atk.IsNull)
return;
if (!atk->IsVisible)
var atkBase = (AtkUnitBase*)atk.Address;
if (atkBase->WindowNode == null)
return;
var component = atk->WindowNode->AtkResNode;
if (!atkBase->IsVisible)
return;
var component = atkBase->WindowNode->AtkResNode;
var atkPos = new Vector2(component.ScreenX, component.ScreenY);
var atkSize = new Vector2(component.GetWidth() * component.ScaleX, component.GetHeight() * component.GetScaleY());
@@ -303,7 +307,7 @@ public sealed class PayloadHandler
if (!chatRect.HasOverlap(addonRect))
{
atk->SetPosition((short) addonRect.X, (short) addonRect.Y);
atkBase->SetPosition((short) addonRect.X, (short) addonRect.Y);
return;
}
@@ -321,7 +325,7 @@ public sealed class PayloadHandler
if (!chatRect.HasOverlap(addonRect))
{
atk->SetPosition((short) addonRect.X, (short) addonRect.Y);
atkBase->SetPosition((short) addonRect.X, (short) addonRect.Y);
return;
}
@@ -330,14 +334,14 @@ public sealed class PayloadHandler
var y = Math.Clamp(chatRect.SizeY - atkSize.Y, 0, float.MaxValue);
y -= isTop ? 0 : Plugin.Config.TooltipOffset; // offset to prevent cut-off on the bottom
atk->SetPosition((short) x, (short) y);
atkBase->SetPosition((short) x, (short) y);
}
private static void InlineIcon(IDalamudTextureWrap icon)
{
var cursor = ImGui.GetCursorPos();
var size = ImGuiHelpers.ScaledVector2(32, 32);
ImGui.Image(icon.ImGuiHandle, size);
ImGui.Image(icon.Handle, size);
ImGui.SameLine();
ImGui.SetCursorPos(cursor + new Vector2(size.X + 4, size.Y - ImGui.GetTextLineHeightWithSpacing()));
}
@@ -373,7 +377,7 @@ public sealed class PayloadHandler
private void HoverItem(ItemPayload item)
{
if (item.Kind == ItemPayload.ItemKind.EventItem)
if (item.Kind == ItemKind.EventItem)
{
HoverEventItem(item);
return;
@@ -489,7 +493,7 @@ public sealed class PayloadHandler
private void DrawItemPopup(ItemPayload payload)
{
if (payload.Kind == ItemPayload.ItemKind.EventItem)
if (payload.Kind == ItemKind.EventItem)
{
DrawEventItemPopup(payload);
return;
@@ -498,7 +502,7 @@ public sealed class PayloadHandler
if (!Sheets.ItemSheet.TryGetRow(payload.ItemId, out var itemRow))
return;
var hq = payload.Kind == ItemPayload.ItemKind.Hq;
var hq = payload.Kind == ItemKind.Hq;
if (Plugin.TextureProvider.GetFromGameIcon(new GameIconLookup(itemRow.Icon, hq)).GetWrapOrDefault() is { } icon)
InlineIcon(icon);
@@ -506,7 +510,7 @@ public sealed class PayloadHandler
// hq symbol
if (hq)
name.Payloads.Add(new TextPayload(" "));
else if (payload.Kind == ItemPayload.ItemKind.Collectible)
else if (payload.Kind == ItemKind.Collectible)
name.Payloads.Add(new TextPayload(" "));
LogWindow.DrawChunks(ChunkUtil.ToChunks(name, ChunkSource.None, null).ToList(), false);
@@ -538,7 +542,7 @@ public sealed class PayloadHandler
private void DrawEventItemPopup(ItemPayload payload)
{
if (payload.Kind != ItemPayload.ItemKind.EventItem)
if (payload.Kind != ItemKind.EventItem)
return;
if (!Sheets.EventItemSheet.HasRow(payload.ItemId))
+1 -1
View File
@@ -12,7 +12,7 @@ using Dalamud.Interface.Windowing;
using Dalamud.IoC;
using Dalamud.Plugin;
using Dalamud.Plugin.Services;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
namespace ChatTwo;
+4 -2
View File
@@ -1,11 +1,13 @@
namespace ChatTwo.Ui;
internal class AutoCompleteInfo {
internal class AutoCompleteInfo
{
internal string ToComplete;
internal int StartPos { get; }
internal int EndPos { get; }
internal AutoCompleteInfo(string toComplete, int startPos, int endPos) {
internal AutoCompleteInfo(string toComplete, int startPos, int endPos)
{
ToComplete = toComplete;
StartPos = startPos;
EndPos = endPos;
+33 -35
View File
@@ -18,7 +18,7 @@ using Dalamud.Interface.Utility.Raii;
using Dalamud.Interface.Windowing;
using Dalamud.Memory;
using FFXIVClientStructs.FFXIV.Client.UI;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
using Lumina.Excel.Sheets;
namespace ChatTwo.Ui;
@@ -443,10 +443,10 @@ public sealed class ChatLogWindow : Window
if (!Plugin.Config.ShowTitleBar)
Flags |= ImGuiWindowFlags.NoTitleBar;
if (LastViewport == ImGuiHelpers.MainViewport.NativePtr && !WasDocked)
if (LastViewport == ImGuiHelpers.MainViewport.Handle && !WasDocked)
BgAlpha = Plugin.Config.WindowAlpha / 100f;
LastViewport = ImGui.GetWindowViewport().NativePtr;
LastViewport = ImGui.GetWindowViewport().Handle;
WasDocked = ImGui.IsWindowDocked();
}
@@ -530,7 +530,7 @@ public sealed class ChatLogWindow : Window
if (resized)
LastResize.Restart();
LastViewport = ImGui.GetWindowViewport().NativePtr;
LastViewport = ImGui.GetWindowViewport().Handle;
WasDocked = ImGui.IsWindowDocked();
if (IsChatMode && Plugin.InputPreview.IsDrawable)
@@ -1430,7 +1430,7 @@ public sealed class ChatLogWindow : Window
for (var i = 0; i < 10 && i < AutoCompleteList.Count; i++)
{
var num = (i + 1) % 10;
var key = ImGuiKey._0 + num;
var key = ImGuiKey.Key0 + num;
var key2 = ImGuiKey.Keypad0 + num;
if (ImGui.IsKeyDown(key) || ImGui.IsKeyDown(key2))
selected = i;
@@ -1460,7 +1460,7 @@ public sealed class ChatLogWindow : Window
if (!child.Success)
return;
var clipper = new ImGuiListClipperPtr(ImGuiNative.ImGuiListClipper_ImGuiListClipper());
var clipper = new ImGuiListClipperPtr(ImGuiNative.ImGuiListClipper());
clipper.Begin(AutoCompleteList.Count);
while (clipper.Step())
@@ -1503,19 +1503,19 @@ public sealed class ChatLogWindow : Window
ImGui.SetScrollFromPosY(selectedPos - ImGui.GetWindowPos().Y);
}
private unsafe int AutoCompleteCallback(ImGuiInputTextCallbackData* data)
private int AutoCompleteCallback(scoped ref ImGuiInputTextCallbackData data)
{
if (FixCursor && AutoCompleteInfo != null)
{
FixCursor = false;
data->CursorPos = AutoCompleteInfo.ToComplete.Length;
data->SelectionStart = data->SelectionEnd = data->CursorPos;
data.CursorPos = AutoCompleteInfo.ToComplete.Length;
data.SelectionStart = data.SelectionEnd = data.CursorPos;
}
if (AutoCompleteList == null)
return 0;
switch (data->EventKey)
switch (data.EventKey)
{
case ImGuiKey.UpArrow:
if (AutoCompleteSelection == 0)
@@ -1550,7 +1550,7 @@ public sealed class ChatLogWindow : Window
return 0;
}
private unsafe int Callback(ImGuiInputTextCallbackData* data)
private unsafe int Callback(scoped ref ImGuiInputTextCallbackData data)
{
// We play the opening sound here only if closing sound has been played before
if (Plugin.Config.PlaySounds && PlayedClosingSound)
@@ -1559,22 +1559,20 @@ public sealed class ChatLogWindow : Window
UIGlobals.PlaySoundEffect(ChatOpenSfx);
}
var ptr = new ImGuiInputTextCallbackDataPtr(data);
// Set the cursor pos to the user selected
if (Plugin.InputPreview.SelectedCursorPos != -1)
ptr.CursorPos = Plugin.InputPreview.SelectedCursorPos;
data.CursorPos = Plugin.InputPreview.SelectedCursorPos;
Plugin.InputPreview.SelectedCursorPos = -1;
CursorPos = ptr.CursorPos;
if (data->EventFlag == ImGuiInputTextFlags.CallbackCompletion)
CursorPos = data.CursorPos;
if (data.EventFlag == ImGuiInputTextFlags.CallbackCompletion)
{
if (ptr.CursorPos == 0)
if (data.CursorPos == 0)
{
AutoCompleteInfo = new AutoCompleteInfo(
string.Empty,
ptr.CursorPos,
ptr.CursorPos
data.CursorPos,
data.CursorPos
);
AutoCompleteOpen = true;
AutoCompleteSelection = 0;
@@ -1583,14 +1581,14 @@ public sealed class ChatLogWindow : Window
}
int white;
for (white = ptr.CursorPos - 1; white >= 0; white--)
if (data->Buf[white] == ' ')
for (white = data.CursorPos - 1; white >= 0; white--)
if (data.Buf[white] == ' ')
break;
var start = ptr.Buf + white + 1;
var end = ptr.CursorPos - white - 1;
var utf8Message = Marshal.PtrToStringUTF8(start, end);
var correctedCursor = ptr.CursorPos - (end - utf8Message.Length);
var start = data.Buf + white + 1;
var end = data.CursorPos - white - 1;
var utf8Message = Marshal.PtrToStringUTF8((nint)start, end);
var correctedCursor = data.CursorPos - (end - utf8Message.Length);
AutoCompleteInfo = new AutoCompleteInfo(
utf8Message,
white + 1,
@@ -1601,20 +1599,20 @@ public sealed class ChatLogWindow : Window
return 0;
}
if (data->EventFlag == ImGuiInputTextFlags.CallbackCharFilter)
if (!Plugin.Functions.Chat.IsCharValid((char) ptr.EventChar))
if (data.EventFlag == ImGuiInputTextFlags.CallbackCharFilter)
if (!Plugin.Functions.Chat.IsCharValid((char) data.EventChar))
return 1;
if (Activate)
{
Activate = false;
data->CursorPos = ActivatePos > -1 ? ActivatePos : Chat.Length;
data->SelectionStart = data->SelectionEnd = data->CursorPos;
data.CursorPos = ActivatePos > -1 ? ActivatePos : Chat.Length;
data.SelectionStart = data.SelectionEnd = data.CursorPos;
ActivatePos = -1;
}
Plugin.CommandHelpWindow.IsOpen = false;
var text = MemoryHelper.ReadString((nint) data->Buf, data->BufTextLen);
var text = MemoryHelper.ReadString((nint) data.Buf, data.BufTextLen);
if (text.StartsWith('/'))
{
var command = text.Split(' ')[0];
@@ -1626,11 +1624,11 @@ public sealed class ChatLogWindow : Window
Plugin.CommandHelpWindow.UpdateContent(cmd.Value);
}
if (data->EventFlag != ImGuiInputTextFlags.CallbackHistory)
if (data.EventFlag != ImGuiInputTextFlags.CallbackHistory)
return 0;
var prevPos = InputBacklogIdx;
switch (data->EventKey)
switch (data.EventKey)
{
case ImGuiKey.UpArrow:
switch (InputBacklogIdx)
@@ -1662,8 +1660,8 @@ public sealed class ChatLogWindow : Window
return 0;
var historyStr = InputBacklogIdx >= 0 ? InputBacklog[InputBacklogIdx] : string.Empty;
ptr.DeleteChars(0, ptr.BufTextLen);
ptr.InsertChars(0, historyStr);
data.DeleteChars(0, data.BufTextLen);
data.InsertChars(0, historyStr);
return 0;
}
@@ -1793,7 +1791,7 @@ public sealed class ChatLogWindow : Window
var uv0 = new Vector2(entry.Left, entry.Top + 170) * 2 / texSize;
var uv1 = new Vector2(entry.Left + entry.Width, entry.Top + entry.Height + 170) * 2 / texSize;
ImGui.Image(iconTexture.ImGuiHandle, size, uv0, uv1);
ImGui.Image(iconTexture.Handle, size, uv0, uv1);
ImGuiUtil.PostPayload(chunk, handler);
}
+1 -1
View File
@@ -3,7 +3,7 @@ using ChatTwo.Util;
using Dalamud.Interface.Utility;
using Dalamud.Interface.Windowing;
using Dalamud.Utility;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
using Lumina.Excel.Sheets;
namespace ChatTwo.Ui;
+1 -1
View File
@@ -9,7 +9,7 @@ using Dalamud.Interface.Colors;
using Dalamud.Interface.Utility;
using Dalamud.Interface.Utility.Raii;
using Dalamud.Interface.Windowing;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui;
+1 -1
View File
@@ -4,7 +4,7 @@ using Dalamud.Interface.Colors;
using Dalamud.Interface.Utility;
using Dalamud.Interface.Windowing;
using FFXIVClientStructs.FFXIV.Client.UI.Agent;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
using Lumina.Text.ReadOnly;
namespace ChatTwo.Ui;
+1 -1
View File
@@ -10,7 +10,7 @@ using Dalamud.Game.Text.SeStringHandling.Payloads;
using Dalamud.Interface.Utility.Raii;
using Dalamud.Interface.Windowing;
using Dalamud.Plugin.Services;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui;
+1 -1
View File
@@ -2,7 +2,7 @@
using Dalamud.Interface.Style;
using Dalamud.Interface.Utility.Raii;
using Dalamud.Interface.Windowing;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui;
+3 -3
View File
@@ -6,8 +6,8 @@ using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Game.Text.SeStringHandling.Payloads;
using Dalamud.Interface.Utility.Raii;
using Dalamud.Interface.Windowing;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
using Dalamud.Utility;
using DalamudPartyFinderPayload = Dalamud.Game.Text.SeStringHandling.Payloads.PartyFinderPayload;
namespace ChatTwo.Ui;
@@ -146,7 +146,7 @@ public class SeStringDebugger : Window
{ "RawItemId", item.RawItemId.ToString() },
{ "Kind", EnumName(item.Kind) },
{ "IsHQ", item.IsHQ.ToString() },
{ "Item.Name", item.Kind == ItemPayload.ItemKind.EventItem ? Sheets.EventItemSheet.GetRow(item.ItemId).Name.ExtractText() : Sheets.ItemSheet.GetRow(item.ItemId).Name.ExtractText() },
{ "Item.Name", item.Kind == ItemKind.EventItem ? Sheets.EventItemSheet.GetRow(item.ItemId).Name.ExtractText() : Sheets.ItemSheet.GetRow(item.ItemId).Name.ExtractText() },
});
break;
}
+1 -1
View File
@@ -5,7 +5,7 @@ using ChatTwo.Util;
using Dalamud.Interface.Utility.Raii;
using Dalamud.Interface.Windowing;
using Dalamud.Utility;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui;
+1 -1
View File
@@ -5,7 +5,7 @@ using Dalamud.Interface;
using Dalamud.Interface.Colors;
using Dalamud.Interface.Utility;
using Dalamud.Interface.Utility.Raii;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -1,7 +1,7 @@
using ChatTwo.Resources;
using ChatTwo.Util;
using Dalamud.Interface.Utility.Raii;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -2,7 +2,7 @@ using ChatTwo.Code;
using ChatTwo.Resources;
using ChatTwo.Util;
using Dalamud.Interface;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -2,7 +2,7 @@ using ChatTwo.Resources;
using ChatTwo.Util;
using Dalamud.Interface.Style;
using Dalamud.Interface.Utility.Raii;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -6,7 +6,7 @@ using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Game.Text.SeStringHandling.Payloads;
using Dalamud.Interface.ImGuiNotification;
using Dalamud.Interface.Utility.Raii;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -2,7 +2,7 @@ using ChatTwo.Code;
using ChatTwo.Resources;
using ChatTwo.Util;
using Dalamud.Interface.Utility.Raii;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -4,7 +4,7 @@ using ChatTwo.Util;
using Dalamud.Interface;
using Dalamud.Interface.Colors;
using Dalamud.Interface.Utility.Raii;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -2,7 +2,7 @@ using ChatTwo.Resources;
using ChatTwo.Util;
using Dalamud;
using Dalamud.Interface.FontIdentifier;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -1,6 +1,6 @@
using ChatTwo.Resources;
using ChatTwo.Util;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -1,6 +1,6 @@
using ChatTwo.Resources;
using ChatTwo.Util;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -3,7 +3,7 @@ using ChatTwo.Resources;
using ChatTwo.Util;
using Dalamud.Interface;
using Dalamud.Interface.Utility.Raii;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs;
+1 -1
View File
@@ -4,7 +4,7 @@ using Dalamud.Interface;
using Dalamud.Interface.Colors;
using Dalamud.Interface.ImGuiNotification;
using Dalamud.Interface.Utility.Raii;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs;
+3
View File
@@ -83,6 +83,9 @@ internal static class AutoTranslate
{
if (lookup is not ("" or "@"))
{
// SE added whitespace to the newest additions, but ParseOrThrow doesn't see them as valid
lookup = lookup.Replace(" ", "");
var (sheetName, selector) = parser.ParseOrThrow(lookup);
var sheet = Plugin.DataManager.Excel.GetSheet<WorkingRawRow>(name: sheetName);
+2 -2
View File
@@ -7,7 +7,7 @@ using Dalamud.Interface.ImGuiNotification;
using Dalamud.Interface.Utility;
using Dalamud.Interface.Utility.Raii;
using Dalamud.Utility;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
namespace ChatTwo.Util;
@@ -91,7 +91,7 @@ public static class DateWidget
var arrowLeftWidth = ImGui.CalcTextSize(arrowLeft).X;
var arrowRightWidth = ImGui.CalcTextSize(arrowRight).X;
var labelSize = ImGui.CalcTextSize(label, 0, true);
var labelSize = ImGui.CalcTextSize(label, true, 0);
var widthRequiredByCalendar = (2.0f * arrowLeftWidth) + (2.0f * arrowRightWidth) + LongestMonthWidth + ImGui.CalcTextSize("9999").X + (120.0f * ImGuiHelpers.GlobalScale);
var popupHeight = ((labelSize.Y + (2 * style.ItemSpacing.Y)) * HeightInItems) + (style.FramePadding.Y * 3);
+16 -16
View File
@@ -12,7 +12,7 @@ using Dalamud.Interface.ImGuiFontChooserDialog;
using Dalamud.Interface.Style;
using Dalamud.Interface.Utility;
using Dalamud.Interface.Utility.Raii;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
namespace ChatTwo.Util;
@@ -64,7 +64,7 @@ internal static class ImGuiUtil
{
var oldPos = ImGui.GetCursorScreenPos();
ImGuiNative.igTextUnformatted(text, textEnd);
ImGuiNative.TextUnformatted(text, textEnd);
PostPayload(chunk, handler);
if (!ReferenceEquals(LastLink, chunk.Link))
@@ -107,7 +107,7 @@ internal static class ImGuiUtil
}
var widthLeft = ImGui.GetContentRegionAvail().X;
var endPrevLine = ImGuiNative.ImFont_CalcWordWrapPositionA(ImGui.GetFont().NativePtr, ImGuiHelpers.GlobalScale, text, textEnd, widthLeft);
var endPrevLine = ImGuiNative.CalcWordWrapPositionA(ImGui.GetFont().Handle, ImGuiHelpers.GlobalScale, text, textEnd, widthLeft);
if (endPrevLine == null)
continue;
@@ -126,7 +126,7 @@ internal static class ImGuiUtil
else
{
// check if the next bit is longer than the entire line width
var wrapPos = ImGuiNative.ImFont_CalcWordWrapPositionA(ImGui.GetFont().NativePtr, ImGuiHelpers.GlobalScale, text, firstSpace, lineWidth);
var wrapPos = ImGuiNative.CalcWordWrapPositionA(ImGui.GetFont().Handle, ImGuiHelpers.GlobalScale, text, firstSpace, lineWidth);
// only go to next line is it's going to wrap at the space
if (wrapPos >= firstSpace)
@@ -144,7 +144,7 @@ internal static class ImGuiUtil
if (*text == ' ')
++text;
var newEnd = ImGuiNative.ImFont_CalcWordWrapPositionA(ImGui.GetFont().NativePtr, ImGuiHelpers.GlobalScale, text, textEnd, widthLeft);
var newEnd = ImGuiNative.CalcWordWrapPositionA(ImGui.GetFont().Handle, ImGuiHelpers.GlobalScale, text, textEnd, widthLeft);
if (properBreak && newEnd == endPrevLine)
break;
@@ -257,7 +257,7 @@ internal static class ImGuiUtil
{
ImGui.TextUnformatted(label);
ImGui.SetNextItemWidth(-1);
var r = ImGui.InputInt($"##{label}", ref value, step, stepFast, flags);
var r = ImGui.InputInt($"##{label}", ref value, step, stepFast, flags: flags);
HelpText(description);
return r;
@@ -475,16 +475,16 @@ internal static class ImGuiUtil
VirtualKey.SNAPSHOT => ImGuiKey.PrintScreen,
VirtualKey.INSERT => ImGuiKey.Insert,
VirtualKey.DELETE => ImGuiKey.Delete,
VirtualKey.KEY_0 => ImGuiKey._0,
VirtualKey.KEY_1 => ImGuiKey._1,
VirtualKey.KEY_2 => ImGuiKey._2,
VirtualKey.KEY_3 => ImGuiKey._3,
VirtualKey.KEY_4 => ImGuiKey._4,
VirtualKey.KEY_5 => ImGuiKey._5,
VirtualKey.KEY_6 => ImGuiKey._6,
VirtualKey.KEY_7 => ImGuiKey._7,
VirtualKey.KEY_8 => ImGuiKey._8,
VirtualKey.KEY_9 => ImGuiKey._9,
VirtualKey.KEY_0 => ImGuiKey.Key0,
VirtualKey.KEY_1 => ImGuiKey.Key1,
VirtualKey.KEY_2 => ImGuiKey.Key2,
VirtualKey.KEY_3 => ImGuiKey.Key3,
VirtualKey.KEY_4 => ImGuiKey.Key4,
VirtualKey.KEY_5 => ImGuiKey.Key5,
VirtualKey.KEY_6 => ImGuiKey.Key6,
VirtualKey.KEY_7 => ImGuiKey.Key7,
VirtualKey.KEY_8 => ImGuiKey.Key8,
VirtualKey.KEY_9 => ImGuiKey.Key9,
VirtualKey.A => ImGuiKey.A,
VirtualKey.B => ImGuiKey.B,
VirtualKey.C => ImGuiKey.C,
+2 -2
View File
@@ -1,6 +1,6 @@
using System.Numerics;
using Dalamud.Interface.Utility;
using ImGuiNET;
using Dalamud.Bindings.ImGui;
using System.Collections;
using Dalamud.Interface.Utility.Raii;
@@ -147,7 +147,7 @@ public unsafe class ListClipper : IEnumerable<(int, int)>, IDisposable
CurrentColumns = cols;
CurrentRows = TwoDimensional ? items : (int)MathF.Ceiling((float)items / CurrentColumns);
ItemRemainder = !TwoDimensional ? items % CurrentColumns : 0;
Clipper = new ImGuiListClipperPtr(ImGuiNative.ImGuiListClipper_ImGuiListClipper());
Clipper = new ImGuiListClipperPtr(ImGuiNative.ImGuiListClipper());
Clipper.Begin(CurrentRows, itemHeight);
}
+15 -15
View File
@@ -4,9 +4,9 @@
"net9.0-windows7.0": {
"DalamudPackager": {
"type": "Direct",
"requested": "[12.0.0, )",
"resolved": "12.0.0",
"contentHash": "J5TJLV3f16T/E2H2P17ClWjtfEBPpq3yxvqW46eN36JCm6wR+EaoaYkqG9Rm5sHqs3/nK/vKjWWyvEs/jhKoXw=="
"requested": "[13.0.0, )",
"resolved": "13.0.0",
"contentHash": "Mb3cUDSK/vDPQ8gQIeuCw03EMYrej1B4J44a1AvIJ9C759p9XeqdU9Hg4WgOmlnlPe0G7ILTD32PKSUpkQNa8w=="
},
"DotNet.ReproducibleBuilds": {
"type": "Direct",
@@ -16,12 +16,12 @@
},
"MessagePack": {
"type": "Direct",
"requested": "[3.1.3, )",
"resolved": "3.1.3",
"contentHash": "UiNv3fknvPzh5W+S0VV96R17RBZQQU71qgmsMnjjRZU2rtQM/XcTnOB+klT2dA6T1mxjnNKYrEm164AoXvGmYg==",
"requested": "[3.1.4, )",
"resolved": "3.1.4",
"contentHash": "BH0wlHWmVoZpbAPyyt2Awbq30C+ZsS3eHSkYdnyUAbqVJ22fAJDzn2xTieBeoT5QlcBzp61vHcv878YJGfi3mg==",
"dependencies": {
"MessagePack.Annotations": "3.1.3",
"MessagePackAnalyzer": "3.1.3",
"MessagePack.Annotations": "3.1.4",
"MessagePackAnalyzer": "3.1.4",
"Microsoft.NET.StringTools": "17.11.4"
}
},
@@ -44,9 +44,9 @@
},
"SixLabors.ImageSharp": {
"type": "Direct",
"requested": "[3.1.7, )",
"resolved": "3.1.7",
"contentHash": "9fIOOAsyLFid6qKypM2Iy0Z3Q9yoanV8VoYAHtI2sYGMNKzhvRTjgFDHonIiVe+ANtxIxM6SuqUzj0r91nItpA=="
"requested": "[3.1.11, )",
"resolved": "3.1.11",
"contentHash": "JfPLyigLthuE50yi6tMt7Amrenr/fA31t2CvJyhy/kQmfulIBAqo5T/YFUSRHtuYPXRSaUHygFeh6Qd933EoSw=="
},
"Watson.Lite": {
"type": "Direct",
@@ -70,13 +70,13 @@
},
"MessagePack.Annotations": {
"type": "Transitive",
"resolved": "3.1.3",
"contentHash": "XTy4njgTAf6UVBKFj7c7ad5R0WVKbvAgkbYZy4f00kplzX2T3VOQ34AUke/Vn/QgQZ7ETdd34/IDWS3KBInSGA=="
"resolved": "3.1.4",
"contentHash": "aVWrDAkCdqxwQsz/q0ldPh2EFn48M99YUzE9OvZjMq2RNLKz4o2z88iGFvSvbMqOWRweRvKPHBJZe22PRqzslQ=="
},
"MessagePackAnalyzer": {
"type": "Transitive",
"resolved": "3.1.3",
"contentHash": "19u1oVNv2brCs5F/jma8O8CnsKMMpYwNqD0CAEDEzvqwDTAhqC9r7xHZP4stPb3APs/ryO/zVn7LvjoEHfvs7Q=="
"resolved": "3.1.4",
"contentHash": "CTaSsN/liJ7MhLCAB7Z4ZLBNuVGCq9lt2BT/cbrc9vzGv89yK3CqIA+z9T19a11eQYl9etZHL6MQJgCqECRVpg=="
},
"Microsoft.Data.Sqlite.Core": {
"type": "Transitive",