From d71e0b218884625889e7102c13048a04535867b6 Mon Sep 17 00:00:00 2001 From: Raymond Lynch Date: Fri, 9 Apr 2021 10:56:49 -0400 Subject: [PATCH] add /xldata --- Dalamud/DalamudCommands.cs | 14 +++++++++ Dalamud/Interface/DalamudDataWindow.cs | 40 ++++++++++++++++++++------ Dalamud/Interface/DalamudInterface.cs | 10 +++++++ 3 files changed, 55 insertions(+), 9 deletions(-) diff --git a/Dalamud/DalamudCommands.cs b/Dalamud/DalamudCommands.cs index 33749df7e..5b59f4a70 100644 --- a/Dalamud/DalamudCommands.cs +++ b/Dalamud/DalamudCommands.cs @@ -78,6 +78,12 @@ namespace Dalamud ShowInHelp = false, }); + this.dalamud.CommandManager.AddHandler("/xldata", new CommandInfo(this.OnDebugDrawDataMenu) + { + HelpMessage = Loc.Localize("DalamudDevDataMenuHelp", "Draw dev data menu DEBUG. Usage: /xldata [Data Dropdown Type]"), + ShowInHelp = false, + }); + this.dalamud.CommandManager.AddHandler("/xllog", new CommandInfo(this.OnOpenLog) { HelpMessage = Loc.Localize("DalamudDevLogHelp", "Open dev log DEBUG"), @@ -223,6 +229,14 @@ namespace Dalamud this.dalamud.DalamudUi.IsDevMenu = !this.dalamud.DalamudUi.IsDevMenu; } + private void OnDebugDrawDataMenu(string command, string arguments) + { + if (string.IsNullOrEmpty(arguments)) + this.dalamud.DalamudUi.ToggleData(); + else + this.dalamud.DalamudUi.ToggleData(arguments); + } + private void OnOpenLog(string command, string arguments) { this.dalamud.DalamudUi.ToggleLog(); diff --git a/Dalamud/Interface/DalamudDataWindow.cs b/Dalamud/Interface/DalamudDataWindow.cs index f028f417e..8fe7abebc 100644 --- a/Dalamud/Interface/DalamudDataWindow.cs +++ b/Dalamud/Interface/DalamudDataWindow.cs @@ -31,6 +31,11 @@ namespace Dalamud.Interface private string serverOpString; private int currentKind; + private string[] dataKinds = new[] + { + "ServerOpCode", "Address", "Actor Table", "Font Test", "Party List", "Plugin IPC", "Condition", + "Gauge", "Command", "Addon", "Addon Inspector", "StartInfo", "Target", "Toast", + }; private bool drawActors = false; private float maxActorDrawDistance = 20; @@ -73,6 +78,31 @@ namespace Dalamud.Interface this.Load(); } + /// + /// Set the DataKind dropdown menu. + /// + /// Data kind name, can be lower and/or without spaces. + public void SetDataKind(string dataKind) + { + if (string.IsNullOrEmpty(dataKind)) + return; + + if (dataKind == "ai") + dataKind = "Addon Inspector"; + + int index; + dataKind = dataKind.Replace(" ", string.Empty).ToLower(); + var dataKinds = this.dataKinds.Select(k => k.Replace(" ", string.Empty).ToLower()).ToList(); + if ((index = dataKinds.IndexOf(dataKind)) != -1) + { + this.currentKind = index; + } + else + { + this.dalamud.Framework.Gui.Chat.PrintError("/xldata: Invalid Data Type"); + } + } + /// /// Draw the window via ImGui. /// @@ -87,15 +117,7 @@ namespace Dalamud.Interface var copy = ImGui.Button("Copy all"); ImGui.SameLine(); - ImGui.Combo( - "Data kind", - ref this.currentKind, - new[] - { - "ServerOpCode", "Address", "Actor Table", "Font Test", "Party List", "Plugin IPC", "Condition", - "Gauge", "Command", "Addon", "Addon Inspector", "StartInfo", "Target", "Toast", - }, - 14); + ImGui.Combo("Data kind", ref this.currentKind, dataKinds, dataKinds.Length); ImGui.Checkbox("Resolve GameData", ref this.resolveGameData); diff --git a/Dalamud/Interface/DalamudInterface.cs b/Dalamud/Interface/DalamudInterface.cs index ae3587678..f9870e8ff 100644 --- a/Dalamud/Interface/DalamudInterface.cs +++ b/Dalamud/Interface/DalamudInterface.cs @@ -460,6 +460,16 @@ namespace Dalamud.Interface this.dataWindow.IsOpen ^= true; } + /// + /// Toggle the data window and preset the dropdown. + /// + internal void ToggleData(string dataKind) + { + this.dataWindow.IsOpen ^= true; + if (this.dataWindow.IsOpen) + this.dataWindow.SetDataKind(dataKind); + } + /// /// Toggle the credits window. ///