From 3d7faad2aee38aae8b811d44b0ba8c990390fb7c Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Mon, 30 May 2022 16:11:35 +0200 Subject: [PATCH] Add options for UI hiding. --- Penumbra/Configuration.cs | 3 ++ .../UI/ConfigWindow.SettingsTab.General.cs | 36 +++++++++++++++++++ Penumbra/UI/ConfigWindow.cs | 6 ++-- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/Penumbra/Configuration.cs b/Penumbra/Configuration.cs index 209b726b..896295c8 100644 --- a/Penumbra/Configuration.cs +++ b/Penumbra/Configuration.cs @@ -17,6 +17,9 @@ public partial class Configuration : IPluginConfiguration public bool EnableMods { get; set; } = true; public string ModDirectory { get; set; } = string.Empty; + public bool HideUiInGPose { get; set; } = false; + public bool HideUiInCutscenes { get; set; } = true; + public bool HideUiWhenUiHidden { get; set; } = false; #if DEBUG public bool DebugMode { get; set; } = true; diff --git a/Penumbra/UI/ConfigWindow.SettingsTab.General.cs b/Penumbra/UI/ConfigWindow.SettingsTab.General.cs index faddf3c7..5fe02deb 100644 --- a/Penumbra/UI/ConfigWindow.SettingsTab.General.cs +++ b/Penumbra/UI/ConfigWindow.SettingsTab.General.cs @@ -13,6 +13,20 @@ public partial class ConfigWindow { private partial class SettingsTab { + private static void Checkbox( string label, string tooltip, bool current, Action< bool > setter ) + { + using var id = ImRaii.PushId( label ); + var tmp = current; + if( ImGui.Checkbox( string.Empty, ref tmp ) && tmp != current ) + { + setter( tmp ); + Penumbra.Config.Save(); + } + + ImGui.SameLine(); + ImGuiUtil.LabeledHelpMarker( label, tooltip ); + } + private void DrawModSelectorSettings() { if( !ImGui.CollapsingHeader( "General" ) ) @@ -20,6 +34,28 @@ public partial class ConfigWindow return; } + Checkbox( "Hide Config Window when UI is Hidden", + "Hide the penumbra main window when you manually hide the in-game user interface.", Penumbra.Config.HideUiWhenUiHidden, + v => + { + Penumbra.Config.HideUiWhenUiHidden = v; + Dalamud.PluginInterface.UiBuilder.DisableUserUiHide = !v; + } ); + Checkbox( "Hide Config Window when in Cutscenes", + "Hide the penumbra main window when you are currently watching a cutscene.", Penumbra.Config.HideUiInCutscenes, + v => + { + Penumbra.Config.HideUiInCutscenes = v; + Dalamud.PluginInterface.UiBuilder.DisableCutsceneUiHide = !v; + } ); + Checkbox( "Hide Config Window when in GPose", + "Hide the penumbra main window when you are currently in GPose mode.", Penumbra.Config.HideUiInGPose, + v => + { + Penumbra.Config.HideUiInGPose = v; + Dalamud.PluginInterface.UiBuilder.DisableGposeUiHide = !v; + } ); + ImGui.Dummy( _window._defaultSpace ); DrawFolderSortType(); DrawAbsoluteSizeSelector(); DrawRelativeSizeSelector(); diff --git a/Penumbra/UI/ConfigWindow.cs b/Penumbra/UI/ConfigWindow.cs index 793d42eb..e8f610de 100644 --- a/Penumbra/UI/ConfigWindow.cs +++ b/Penumbra/UI/ConfigWindow.cs @@ -36,9 +36,9 @@ public sealed partial class ConfigWindow : Window, IDisposable _debugTab = new DebugTab( this ); _resourceTab = new ResourceTab( this ); - Dalamud.PluginInterface.UiBuilder.DisableGposeUiHide = true; - Dalamud.PluginInterface.UiBuilder.DisableCutsceneUiHide = true; - Dalamud.PluginInterface.UiBuilder.DisableUserUiHide = true; + Dalamud.PluginInterface.UiBuilder.DisableGposeUiHide = !Penumbra.Config.HideUiInGPose; + Dalamud.PluginInterface.UiBuilder.DisableCutsceneUiHide = !Penumbra.Config.HideUiInCutscenes; + Dalamud.PluginInterface.UiBuilder.DisableUserUiHide = !Penumbra.Config.HideUiWhenUiHidden; RespectCloseHotkey = true; SizeConstraints = new WindowSizeConstraints() {