From b2397efb25075b0b939f5eb5def9cde86b6e971a Mon Sep 17 00:00:00 2001 From: RedworkDE <10944644+RedworkDE@users.noreply.github.com> Date: Mon, 22 Dec 2025 20:21:07 +0100 Subject: [PATCH] Add Self Test --- .../SelfTest/Steps/ChatSelfTestStep.cs | 78 +++++++++++++++++-- 1 file changed, 72 insertions(+), 6 deletions(-) diff --git a/Dalamud/Interface/Internal/Windows/SelfTest/Steps/ChatSelfTestStep.cs b/Dalamud/Interface/Internal/Windows/SelfTest/Steps/ChatSelfTestStep.cs index 7a2631fbf..16fd3b01e 100644 --- a/Dalamud/Interface/Internal/Windows/SelfTest/Steps/ChatSelfTestStep.cs +++ b/Dalamud/Interface/Internal/Windows/SelfTest/Steps/ChatSelfTestStep.cs @@ -1,4 +1,5 @@ using Dalamud.Bindings.ImGui; +using Dalamud.Game.Chat; using Dalamud.Game.Gui; using Dalamud.Game.Text; using Dalamud.Game.Text.SeStringHandling; @@ -12,8 +13,12 @@ namespace Dalamud.Interface.Internal.Windows.SelfTest.Steps; internal class ChatSelfTestStep : ISelfTestStep { private int step = 0; - private bool subscribed = false; + private bool subscribedChatMessage = false; + private bool subscribedLogMessage = false; private bool hasPassed = false; + private bool hasTeleportGil = false; + private bool hasTeleportTicket = false; + private int teleportCount = 0; /// public string Name => "Test Chat"; @@ -34,20 +39,63 @@ internal class ChatSelfTestStep : ISelfTestStep case 1: ImGui.Text("Type \"/e DALAMUD\" in chat..."); - if (!this.subscribed) + if (!this.subscribedChatMessage) { - this.subscribed = true; + this.subscribedChatMessage = true; chatGui.ChatMessage += this.ChatOnOnChatMessage; } if (this.hasPassed) { chatGui.ChatMessage -= this.ChatOnOnChatMessage; - this.subscribed = false; - return SelfTestStepResult.Pass; + this.subscribedChatMessage = false; + this.step++; } break; + + case 2: + ImGui.Text("Teleport somewhere..."); + + if (!this.subscribedLogMessage) + { + this.subscribedLogMessage = true; + chatGui.LogMessage += this.ChatOnLogMessage; + } + + if (this.hasTeleportGil) + { + ImGui.Text($"You spent {this.teleportCount} gil to teleport."); + } + if (this.hasTeleportTicket) + { + ImGui.Text($"You used a ticket to teleport and have {this.teleportCount} remaining."); + } + + if (this.hasTeleportGil || this.hasTeleportTicket) + { + ImGui.Text("Is this correct?"); + + if (ImGui.Button("Yes")) + { + chatGui.LogMessage -= this.ChatOnLogMessage; + this.subscribedLogMessage = false; + this.step++; + } + + ImGui.SameLine(); + if (ImGui.Button("No")) + { + chatGui.LogMessage -= this.ChatOnLogMessage; + this.subscribedLogMessage = false; + return SelfTestStepResult.Fail; + } + } + + break; + + default: + return SelfTestStepResult.Pass; } return SelfTestStepResult.Waiting; @@ -59,7 +107,9 @@ internal class ChatSelfTestStep : ISelfTestStep var chatGui = Service.Get(); chatGui.ChatMessage -= this.ChatOnOnChatMessage; - this.subscribed = false; + chatGui.LogMessage -= this.ChatOnLogMessage; + this.subscribedChatMessage = false; + this.subscribedLogMessage = false; } private void ChatOnOnChatMessage( @@ -70,4 +120,20 @@ internal class ChatSelfTestStep : ISelfTestStep this.hasPassed = true; } } + + private void ChatOnLogMessage(ILogMessage message) + { + if (message.LogMessageId == 4590 && message.TryGetIntParameter(0, out var value)) + { + this.hasTeleportGil = true; + this.hasTeleportTicket = false; + this.teleportCount = value; + } + if (message.LogMessageId == 4591 && message.TryGetIntParameter(0, out var item) && item == 7569 && message.TryGetIntParameter(1, out var remaining)) + { + this.hasTeleportGil = false; + this.hasTeleportTicket = true; + this.teleportCount = remaining; + } + } }