mirror of
https://github.com/goatcorp/Dalamud.git
synced 2025-12-15 13:14:17 +01:00
Merge pull request #658 from aers/atkarraydata-browser
feat: Add AtkArrayData browser to the data inspector window
This commit is contained in:
commit
18211355e3
1 changed files with 152 additions and 0 deletions
|
|
@ -132,6 +132,7 @@ namespace Dalamud.Interface.Internal.Windows
|
||||||
Command,
|
Command,
|
||||||
Addon,
|
Addon,
|
||||||
Addon_Inspector,
|
Addon_Inspector,
|
||||||
|
AtkArrayData_Browser,
|
||||||
StartInfo,
|
StartInfo,
|
||||||
Target,
|
Target,
|
||||||
Toast,
|
Toast,
|
||||||
|
|
@ -274,6 +275,10 @@ namespace Dalamud.Interface.Internal.Windows
|
||||||
this.DrawAddonInspector();
|
this.DrawAddonInspector();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case DataKind.AtkArrayData_Browser:
|
||||||
|
this.DrawAtkArrayDataBrowser();
|
||||||
|
break;
|
||||||
|
|
||||||
case DataKind.StartInfo:
|
case DataKind.StartInfo:
|
||||||
this.DrawStartInfo();
|
this.DrawStartInfo();
|
||||||
break;
|
break;
|
||||||
|
|
@ -946,6 +951,153 @@ namespace Dalamud.Interface.Internal.Windows
|
||||||
this.addonInspector.Draw();
|
this.addonInspector.Draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private unsafe void DrawAtkArrayDataBrowser()
|
||||||
|
{
|
||||||
|
var fontWidth = ImGui.CalcTextSize("A").X;
|
||||||
|
var fontHeight = ImGui.GetTextLineHeightWithSpacing();
|
||||||
|
var uiModule = FFXIVClientStructs.FFXIV.Client.System.Framework.Framework.Instance()->GetUiModule();
|
||||||
|
|
||||||
|
if (uiModule == null)
|
||||||
|
{
|
||||||
|
ImGui.Text("UIModule unavailable.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var atkArrayDataHolder = &uiModule->GetRaptureAtkModule()->AtkModule.AtkArrayDataHolder;
|
||||||
|
|
||||||
|
if (ImGui.BeginTabBar("AtkArrayDataBrowserTabBar"))
|
||||||
|
{
|
||||||
|
if (ImGui.BeginTabItem($"NumberArrayData [{atkArrayDataHolder->NumberArrayCount}]"))
|
||||||
|
{
|
||||||
|
if (ImGui.BeginTable("NumberArrayDataTable", 3, ImGuiTableFlags.RowBg | ImGuiTableFlags.ScrollY))
|
||||||
|
{
|
||||||
|
ImGui.TableSetupColumn("Index", ImGuiTableColumnFlags.WidthFixed, fontWidth * 10);
|
||||||
|
ImGui.TableSetupColumn("Size", ImGuiTableColumnFlags.WidthFixed, fontWidth * 10);
|
||||||
|
ImGui.TableSetupColumn("Pointer", ImGuiTableColumnFlags.WidthStretch);
|
||||||
|
ImGui.TableHeadersRow();
|
||||||
|
for (int numberArrayIndex = 0; numberArrayIndex < atkArrayDataHolder->NumberArrayCount; numberArrayIndex++)
|
||||||
|
{
|
||||||
|
ImGui.TableNextRow();
|
||||||
|
ImGui.TableNextColumn();
|
||||||
|
ImGui.Text($"{numberArrayIndex} [{numberArrayIndex * 8:X}]");
|
||||||
|
ImGui.TableNextColumn();
|
||||||
|
var numberArrayData = atkArrayDataHolder->NumberArrays[numberArrayIndex];
|
||||||
|
if (numberArrayData != null)
|
||||||
|
{
|
||||||
|
ImGui.Text($"{numberArrayData->AtkArrayData.Size}");
|
||||||
|
ImGui.TableNextColumn();
|
||||||
|
if (ImGui.TreeNodeEx($"{(long)numberArrayData:X}###{numberArrayIndex}", ImGuiTreeNodeFlags.SpanFullWidth))
|
||||||
|
{
|
||||||
|
ImGui.NewLine();
|
||||||
|
int tableHeight = Math.Min(40, numberArrayData->AtkArrayData.Size + 4);
|
||||||
|
if (ImGui.BeginTable($"NumberArrayDataTable", 4, ImGuiTableFlags.RowBg | ImGuiTableFlags.ScrollY, new Vector2(0.0F, fontHeight * tableHeight)))
|
||||||
|
{
|
||||||
|
ImGui.TableSetupColumn("Index", ImGuiTableColumnFlags.WidthFixed, fontWidth * 6);
|
||||||
|
ImGui.TableSetupColumn("Hex", ImGuiTableColumnFlags.WidthFixed, fontWidth * 9);
|
||||||
|
ImGui.TableSetupColumn("Integer", ImGuiTableColumnFlags.WidthFixed, fontWidth * 12);
|
||||||
|
ImGui.TableSetupColumn("Float", ImGuiTableColumnFlags.WidthFixed, fontWidth * 20);
|
||||||
|
ImGui.TableHeadersRow();
|
||||||
|
for (int numberIndex = 0; numberIndex < numberArrayData->AtkArrayData.Size; numberIndex++)
|
||||||
|
{
|
||||||
|
ImGui.TableNextRow();
|
||||||
|
ImGui.TableNextColumn();
|
||||||
|
ImGui.Text($"{numberIndex}");
|
||||||
|
ImGui.TableNextColumn();
|
||||||
|
ImGui.Text($"{numberArrayData->IntArray[numberIndex]:X}");
|
||||||
|
ImGui.TableNextColumn();
|
||||||
|
ImGui.Text($"{numberArrayData->IntArray[numberIndex]}");
|
||||||
|
ImGui.TableNextColumn();
|
||||||
|
ImGui.Text($"{*(float*)&numberArrayData->IntArray[numberIndex]}");
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui.EndTable();
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui.TreePop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ImGui.TextDisabled("--");
|
||||||
|
ImGui.TableNextColumn();
|
||||||
|
ImGui.TextDisabled("--");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui.EndTable();
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui.EndTabItem();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ImGui.BeginTabItem($"StringArrayData [{atkArrayDataHolder->StringArrayCount}]"))
|
||||||
|
{
|
||||||
|
if (ImGui.BeginTable("StringArrayDataTable", 3, ImGuiTableFlags.RowBg | ImGuiTableFlags.ScrollY))
|
||||||
|
{
|
||||||
|
ImGui.TableSetupColumn("Index", ImGuiTableColumnFlags.WidthFixed, fontWidth * 10);
|
||||||
|
ImGui.TableSetupColumn("Size", ImGuiTableColumnFlags.WidthFixed, fontWidth * 10);
|
||||||
|
ImGui.TableSetupColumn("Pointer", ImGuiTableColumnFlags.WidthStretch);
|
||||||
|
ImGui.TableHeadersRow();
|
||||||
|
for (int stringArrayIndex = 0; stringArrayIndex < atkArrayDataHolder->StringArrayCount; stringArrayIndex++)
|
||||||
|
{
|
||||||
|
ImGui.TableNextRow();
|
||||||
|
ImGui.TableNextColumn();
|
||||||
|
ImGui.Text($"{stringArrayIndex} [{stringArrayIndex * 8:X}]");
|
||||||
|
ImGui.TableNextColumn();
|
||||||
|
var stringArrayData = atkArrayDataHolder->StringArrays[stringArrayIndex];
|
||||||
|
if (stringArrayData != null)
|
||||||
|
{
|
||||||
|
ImGui.Text($"{stringArrayData->AtkArrayData.Size}");
|
||||||
|
ImGui.TableNextColumn();
|
||||||
|
if (ImGui.TreeNodeEx($"{(long)stringArrayData:X}###{stringArrayIndex}", ImGuiTreeNodeFlags.SpanFullWidth))
|
||||||
|
{
|
||||||
|
ImGui.NewLine();
|
||||||
|
int tableHeight = Math.Min(40, stringArrayData->AtkArrayData.Size + 4);
|
||||||
|
if (ImGui.BeginTable($"StringArrayDataTable", 2, ImGuiTableFlags.RowBg | ImGuiTableFlags.ScrollY, new Vector2(0.0F, fontHeight * tableHeight)))
|
||||||
|
{
|
||||||
|
ImGui.TableSetupColumn("Index", ImGuiTableColumnFlags.WidthFixed, fontWidth * 6);
|
||||||
|
ImGui.TableSetupColumn("String", ImGuiTableColumnFlags.WidthStretch);
|
||||||
|
ImGui.TableHeadersRow();
|
||||||
|
for (int stringIndex = 0; stringIndex < stringArrayData->AtkArrayData.Size; stringIndex++)
|
||||||
|
{
|
||||||
|
ImGui.TableNextRow();
|
||||||
|
ImGui.TableNextColumn();
|
||||||
|
ImGui.Text($"{stringIndex}");
|
||||||
|
ImGui.TableNextColumn();
|
||||||
|
if (stringArrayData->StringArray[stringIndex] != null)
|
||||||
|
{
|
||||||
|
ImGui.Text($"{MemoryHelper.ReadSeStringNullTerminated(new IntPtr(stringArrayData->StringArray[stringIndex]))}");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ImGui.TextDisabled("--");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui.EndTable();
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui.TreePop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ImGui.TextDisabled("--");
|
||||||
|
ImGui.TableNextColumn();
|
||||||
|
ImGui.TextDisabled("--");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui.EndTable();
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui.EndTabItem();
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui.EndTabBar();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void DrawStartInfo()
|
private void DrawStartInfo()
|
||||||
{
|
{
|
||||||
var startInfo = Service<DalamudStartInfo>.Get();
|
var startInfo = Service<DalamudStartInfo>.Get();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue