From b05ff667736117988cd72c7a21d2ba0981cd9015 Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Sun, 11 Jul 2021 00:59:53 +0200 Subject: [PATCH] Temp Files addition to Debug Tab --- Penumbra/Meta/MetaManager.cs | 2 +- Penumbra/UI/MenuTabs/TabDebug.cs | 204 ++++++++++++++++++++++++------- 2 files changed, 161 insertions(+), 45 deletions(-) diff --git a/Penumbra/Meta/MetaManager.cs b/Penumbra/Meta/MetaManager.cs index 21e15303..d4adf31f 100644 --- a/Penumbra/Meta/MetaManager.cs +++ b/Penumbra/Meta/MetaManager.cs @@ -12,7 +12,7 @@ namespace Penumbra.Meta { public class MetaManager : IDisposable { - private class FileInformation + internal class FileInformation { public readonly object Data; public bool Changed; diff --git a/Penumbra/UI/MenuTabs/TabDebug.cs b/Penumbra/UI/MenuTabs/TabDebug.cs index 85287f35..387c4437 100644 --- a/Penumbra/UI/MenuTabs/TabDebug.cs +++ b/Penumbra/UI/MenuTabs/TabDebug.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Diagnostics; using System.Linq; using System.Numerics; using System.Reflection; @@ -10,6 +9,7 @@ using ImGuiNET; using Penumbra.Game; using Penumbra.Game.Enums; using Penumbra.Interop; +using Penumbra.Meta; using Penumbra.Mods; using Penumbra.Util; @@ -28,52 +28,79 @@ namespace Penumbra.UI .GetField( "_equip", BindingFlags.Instance | BindingFlags.NonPublic ) ?.GetValue( _plugin.PlayerWatcher ) ?? new Dictionary< string, CharEquipment >(); + if( !actors.Any() ) + { + return; + } - if( actors.Any() && ImGui.BeginTable( "##ActorTable", 13, ImGuiTableFlags.SizingFixedFit | ImGuiTableFlags.ScrollX ) ) + if( ImGui.BeginTable( "##ActorTable", 13, ImGuiTableFlags.SizingFixedFit | ImGuiTableFlags.ScrollX, + new Vector2( -1, ImGui.GetTextLineHeightWithSpacing() * 4 * actors.Count ) ) ) { var identifier = Service< ObjectIdentification >.Get(); - ImGui.TableNextRow(); foreach( var actor in actors ) { + // @formatter:off + ImGui.TableNextRow(); ImGui.TableNextColumn(); ImGui.Text( actor.Key ); ImGui.TableNextColumn(); - ImGui.Text( - $"{actor.Value.Mainhand} {identifier.Identify( actor.Value.Mainhand._1, actor.Value.Mainhand._2, actor.Value.Mainhand._3, EquipSlot.MainHand )?.Name.ToString() ?? "Unknown"}" ); + ImGui.Text( $"{actor.Value.Mainhand}" ); ImGui.TableNextColumn(); - ImGui.Text( - $"{actor.Value.Offhand} {identifier.Identify( actor.Value.Offhand._1, actor.Value.Offhand._2, actor.Value.Offhand._3, EquipSlot.Offhand )?.Name.ToString() ?? "Unknown"}" ); + ImGui.Text( $"{actor.Value.Head}" ); ImGui.TableNextColumn(); - ImGui.Text( - $"{actor.Value.Head} {identifier.Identify( actor.Value.Head._1, actor.Value.Head._2, 0, EquipSlot.Head )?.Name.ToString() ?? "Unknown"}" ); + ImGui.Text( $"{actor.Value.Body}" ); ImGui.TableNextColumn(); - ImGui.Text( - $"{actor.Value.Body} {identifier.Identify( actor.Value.Body._1, actor.Value.Body._2, 0, EquipSlot.Body )?.Name.ToString() ?? "Unknown"}" ); + ImGui.Text( $"{actor.Value.Hands}" ); ImGui.TableNextColumn(); - ImGui.Text( - $"{actor.Value.Hands} {identifier.Identify( actor.Value.Hands._1, actor.Value.Hands._2, 0, EquipSlot.Hands )?.Name.ToString() ?? "Unknown"}" ); + ImGui.Text( $"{actor.Value.Legs}" ); ImGui.TableNextColumn(); - ImGui.Text( - $"{actor.Value.Legs} {identifier.Identify( actor.Value.Legs._1, actor.Value.Legs._2, 0, EquipSlot.Legs )?.Name.ToString() ?? "Unknown"}" ); - ImGui.TableNextColumn(); - ImGui.Text( - $"{actor.Value.Feet} {identifier.Identify( actor.Value.Feet._1, actor.Value.Feet._2, 0, EquipSlot.Feet )?.Name.ToString() ?? "Unknown"}" ); - ImGui.TableNextColumn(); - ImGui.Text( - $"{actor.Value.Ear} {identifier.Identify( actor.Value.Ear._1, actor.Value.Ear._2, 0, EquipSlot.Ears )?.Name.ToString() ?? "Unknown"}" ); - ImGui.TableNextColumn(); - ImGui.Text( - $"{actor.Value.Neck} {identifier.Identify( actor.Value.Neck._1, actor.Value.Neck._2, 0, EquipSlot.Neck )?.Name.ToString() ?? "Unknown"}" ); - ImGui.TableNextColumn(); - ImGui.Text( - $"{actor.Value.Wrist} {identifier.Identify( actor.Value.Wrist._1, actor.Value.Wrist._2, 0, EquipSlot.Wrists )?.Name.ToString() ?? "Unknown"}" ); - ImGui.TableNextColumn(); - ImGui.Text( - $"{actor.Value.LFinger} {identifier.Identify( actor.Value.LFinger._1, actor.Value.LFinger._2, 0, EquipSlot.RingL )?.Name.ToString() ?? "Unknown"}" ); - ImGui.TableNextColumn(); - ImGui.Text( - $"{actor.Value.RFinger} {identifier.Identify( actor.Value.RFinger._1, actor.Value.RFinger._2, 0, EquipSlot.RingL )?.Name.ToString() ?? "Unknown"}" ); + ImGui.Text( $"{actor.Value.Feet}" ); + ImGui.TableNextRow(); + ImGui.TableNextColumn(); + ImGui.TableNextColumn(); + ImGui.Text( identifier.Identify( actor.Value.Mainhand._1, actor.Value.Mainhand._2, actor.Value.Mainhand._3, EquipSlot.MainHand )?.Name.ToString() ?? "Unknown" ); + ImGui.TableNextColumn(); + ImGui.Text( identifier.Identify( actor.Value.Head._1, actor.Value.Head._2, 0, EquipSlot.Head )?.Name.ToString() ?? "Unknown" ); + ImGui.TableNextColumn(); + ImGui.Text( identifier.Identify( actor.Value.Body._1, actor.Value.Body._2, 0, EquipSlot.Body )?.Name.ToString() ?? "Unknown" ); + ImGui.TableNextColumn(); + ImGui.Text( identifier.Identify( actor.Value.Hands._1, actor.Value.Hands._2, 0, EquipSlot.Hands )?.Name.ToString() ?? "Unknown" ); + ImGui.TableNextColumn(); + ImGui.Text( identifier.Identify( actor.Value.Legs._1, actor.Value.Legs._2, 0, EquipSlot.Legs )?.Name.ToString() ?? "Unknown" ); + ImGui.TableNextColumn(); + ImGui.Text( identifier.Identify( actor.Value.Feet._1, actor.Value.Feet._2, 0, EquipSlot.Feet )?.Name.ToString() ?? "Unknown" ); + + ImGui.TableNextRow(); + ImGui.TableNextColumn(); + ImGui.TableNextColumn(); + ImGui.Text( $"{actor.Value.Offhand}" ); + ImGui.TableNextColumn(); + ImGui.Text( $"{actor.Value.Ear}" ); + ImGui.TableNextColumn(); + ImGui.Text( $"{actor.Value.Neck}" ); + ImGui.TableNextColumn(); + ImGui.Text( $"{actor.Value.Wrist}" ); + ImGui.TableNextColumn(); + ImGui.Text( $"{actor.Value.LFinger}" ); + ImGui.TableNextColumn(); + ImGui.Text( $"{actor.Value.RFinger}" ); + + ImGui.TableNextRow(); + ImGui.TableNextColumn(); + ImGui.TableNextColumn(); + ImGui.Text( identifier.Identify( actor.Value.Offhand._1, actor.Value.Offhand._2, actor.Value.Offhand._3, EquipSlot.Offhand )?.Name.ToString() ?? "Unknown" ); + ImGui.TableNextColumn(); + ImGui.Text( identifier.Identify( actor.Value.Ear._1, actor.Value.Ear._2, 0, EquipSlot.Ears )?.Name.ToString() ?? "Unknown" ); + ImGui.TableNextColumn(); + ImGui.Text( identifier.Identify( actor.Value.Neck._1, actor.Value.Neck._2, 0, EquipSlot.Neck )?.Name.ToString() ?? "Unknown" ); + ImGui.TableNextColumn(); + ImGui.Text( identifier.Identify( actor.Value.Wrist._1, actor.Value.Wrist._2, 0, EquipSlot.Wrists )?.Name.ToString() ?? "Unknown" ); + ImGui.TableNextColumn(); + ImGui.Text( identifier.Identify( actor.Value.LFinger._1, actor.Value.LFinger._2, 0, EquipSlot.RingL )?.Name.ToString() ?? "Unknown" ); + ImGui.TableNextColumn(); + ImGui.Text( identifier.Identify( actor.Value.RFinger._1, actor.Value.RFinger._2, 0, EquipSlot.RingL )?.Name.ToString() ?? "Unknown" ); + // @formatter:on } ImGui.EndTable(); @@ -87,7 +114,19 @@ namespace Penumbra.UI return; } - ImGui.Text( $"Active Collection: {Service< ModManager >.Get().Collections.ActiveCollection.Name}" ); + if( !ImGui.BeginTable( "##DebugGeneralTable", 2, ImGuiTableFlags.SizingFixedFit, + new Vector2( -1, ImGui.GetTextLineHeightWithSpacing() * 1 ) ) ) + { + return; + } + + ImGui.TableNextRow(); + ImGui.TableNextColumn(); + + ImGui.Text( "Active Collection" ); + ImGui.TableNextColumn(); + ImGui.Text( Service< ModManager >.Get().Collections.ActiveCollection.Name ); + ImGui.EndTable(); } @@ -131,32 +170,104 @@ namespace Penumbra.UI ? ( ActorRefresher.LoadingFlags? )Marshal.ReadInt32( ActorRefresher.RenderPtr( currentActor ) ) : null; - ImGui.Text( $"Current Frame: {currentFrame?.ToString() ?? "null"}" ); - ImGui.Text( $"Current Changed Settings: {changedSettings?.ToString() ?? "null"}" ); - ImGui.Text( $"Current Actor Id: {currentActorId?.ToString( "X8" ) ?? "null"}" ); - ImGui.Text( $"Current Actor Name: {currentActorName ?? "null"}" ); - ImGui.Text( $"Current Actor Redraw: {currentActorRedraw.ToString() ?? "null"}" ); - ImGui.Text( $"Current Actor Address: {currentActor?.Address.ToString( "X16" ) ?? "null"}" ); - ImGui.Text( $"Current Actor Render Flags: {( ( int? )currentRender )?.ToString( "X8" ) ?? "null"}" ); - - if( queue.Any() && ImGui.BeginTable( "##RedrawTable", 3, ImGuiTableFlags.SizingFixedFit | ImGuiTableFlags.ScrollX ) ) + if( ImGui.BeginTable( "##RedrawData", 2, ImGuiTableFlags.SizingFixedFit, + new Vector2( -1, ImGui.GetTextLineHeightWithSpacing() * 7 ) ) ) { ImGui.TableNextRow(); + ImGui.TableNextColumn(); + ImGui.Text( "Current Frame" ); + ImGui.TableNextColumn(); + ImGui.Text( currentFrame?.ToString() ?? "null" ); + ImGui.TableNextRow(); + ImGui.TableNextColumn(); + ImGui.Text( "Current Changed Settings" ); + ImGui.TableNextColumn(); + ImGui.Text( changedSettings?.ToString() ?? "null" ); + ImGui.TableNextRow(); + ImGui.TableNextColumn(); + ImGui.Text( "Current Actor Id" ); + ImGui.TableNextColumn(); + ImGui.Text( currentActorId?.ToString( "X8" ) ?? "null" ); + ImGui.TableNextRow(); + ImGui.TableNextColumn(); + ImGui.Text( "Current Actor Name" ); + ImGui.TableNextColumn(); + ImGui.Text( currentActorName ?? "null" ); + ImGui.TableNextRow(); + ImGui.TableNextColumn(); + ImGui.Text( "Current Actor Redraw" ); + ImGui.TableNextColumn(); + ImGui.Text( currentActorRedraw?.ToString() ?? "null" ); + ImGui.TableNextRow(); + ImGui.TableNextColumn(); + ImGui.Text( "Current Actor Address" ); + ImGui.TableNextColumn(); + ImGui.Text( currentActor?.Address.ToString( "X16" ) ?? "null" ); + ImGui.TableNextRow(); + ImGui.TableNextColumn(); + ImGui.Text( "Current Actor Render Flags" ); + ImGui.TableNextColumn(); + ImGui.Text( ( ( int? )currentRender )?.ToString( "X8" ) ?? "null" ); + ImGui.EndTable(); + } + + if( queue.Any() + && ImGui.BeginTable( "##RedrawTable", 3, ImGuiTableFlags.SizingFixedFit | ImGuiTableFlags.ScrollX, + new Vector2( -1, ImGui.GetTextLineHeightWithSpacing() * queue.Count ) ) ) + { foreach( var (actorId, actorName, redraw) in queue ) { + ImGui.TableNextRow(); ImGui.TableNextColumn(); ImGui.Text( actorName ); ImGui.TableNextColumn(); ImGui.Text( $"0x{actorId:X8}" ); ImGui.TableNextColumn(); ImGui.Text( redraw.ToString() ); - ImGui.TableNextRow(); } ImGui.EndTable(); } } + private void DrawDebugTabTempFiles() + { + if( !ImGui.CollapsingHeader( "Temporary Files##Debug" ) ) + { + return; + } + + if( !ImGui.BeginTable( "##tempFileTable", 4, ImGuiTableFlags.SizingFixedFit ) ) + { + return; + } + + foreach( var collection in Service< ModManager >.Get().Collections.Collections.Values.Where( c => c.Cache != null ) ) + { + var manip = collection.Cache!.MetaManipulations; + var files = ( Dictionary< GamePath, MetaManager.FileInformation >? )manip.GetType() + .GetField( "_currentFiles", BindingFlags.NonPublic | BindingFlags.Instance )?.GetValue( manip ) + ?? new Dictionary< GamePath, MetaManager.FileInformation >(); + + + foreach( var file in files ) + { + ImGui.TableNextRow(); + ImGui.TableNextColumn(); + ImGui.Text( file.Value.CurrentFile?.FullName ?? "None" ); + ImGui.TableNextColumn(); + ImGui.Text( file.Key ); + ImGui.TableNextColumn(); + file.Value.CurrentFile?.Refresh(); + ImGui.Text( file.Value.CurrentFile?.Exists ?? false ? "Exists" : "Missing" ); + ImGui.TableNextColumn(); + ImGui.Text( file.Value.Changed ? "Data Changed" : "Unchanged" ); + } + } + + ImGui.EndTable(); + } + private void DrawDebugTab() { if( !ImGui.BeginTabItem( "Debug Tab" ) ) @@ -165,8 +276,13 @@ namespace Penumbra.UI } DrawDebugTabGeneral(); + ImGui.NewLine(); DrawDebugTabRedraw(); + ImGui.NewLine(); DrawDebugTabActors(); + ImGui.NewLine(); + DrawDebugTabTempFiles(); + ImGui.NewLine(); ImGui.EndTabItem(); }