From 0f6fbcb4c6957a81ed42d338b02fbb3f708b73cf Mon Sep 17 00:00:00 2001 From: karashiiro <49822414+karashiiro@users.noreply.github.com> Date: Wed, 9 Sep 2020 16:41:29 -0700 Subject: [PATCH] Separate hiding via toggle, cutscenes, and gpose --- Dalamud/Configuration/DalamudConfiguration.cs | 2 ++ Dalamud/Interface/DalamudSettingsWindow.cs | 20 ++++++++++++--- Dalamud/Interface/UiBuilder.cs | 25 +++++++++++++++---- 3 files changed, 39 insertions(+), 8 deletions(-) diff --git a/Dalamud/Configuration/DalamudConfiguration.cs b/Dalamud/Configuration/DalamudConfiguration.cs index c90ffbed6..c5d5a02dc 100644 --- a/Dalamud/Configuration/DalamudConfiguration.cs +++ b/Dalamud/Configuration/DalamudConfiguration.cs @@ -32,6 +32,8 @@ namespace Dalamud public float GlobalUiScale { get; set; } = 1.0f; public bool ToggleUiHide { get; set; } = true; + public bool ToggleUiHideDuringCutscenes { get; set; } = true; + public bool ToggleUiHideDuringGpose { get; set; } = true; [JsonIgnore] public string ConfigPath; diff --git a/Dalamud/Interface/DalamudSettingsWindow.cs b/Dalamud/Interface/DalamudSettingsWindow.cs index dd13888ae..ec653fc7a 100644 --- a/Dalamud/Interface/DalamudSettingsWindow.cs +++ b/Dalamud/Interface/DalamudSettingsWindow.cs @@ -21,6 +21,8 @@ namespace Dalamud.Interface this.globalUiScale = this.dalamud.Configuration.GlobalUiScale; this.doToggleUiHide = this.dalamud.Configuration.ToggleUiHide; + this.doToggleUiHideDuringCutscenes = this.dalamud.Configuration.ToggleUiHideDuringCutscenes; + this.doToggleUiHideDuringGpose = this.dalamud.Configuration.ToggleUiHideDuringGpose; this.doPluginTest = this.dalamud.Configuration.DoPluginTest; this.doDalamudTest = this.dalamud.Configuration.DoDalamudTest; @@ -45,6 +47,8 @@ namespace Dalamud.Interface private const float MaxScale = 2.0f; private float globalUiScale; private bool doToggleUiHide; + private bool doToggleUiHideDuringCutscenes; + private bool doToggleUiHideDuringGpose; #region Experimental @@ -97,10 +101,18 @@ namespace Dalamud.Interface ImGui.TextColored(this.hintTextColor, Loc.Localize("DalamudSettingsGlobalUiScaleHint", "Scale all XIVLauncher UI elements - useful for 4K displays.")); - ImGui.Dummy(new Vector2(10f, 10f)); + ImGui.Dummy(new Vector2(10f, 16f)); - ImGui.Checkbox(Loc.Localize("DalamudSettingToggleUiHide", "Hide plugin UI when the game UI is hidden and during cutscenes and gpose"), ref this.doToggleUiHide); - ImGui.TextColored(this.hintTextColor, Loc.Localize("DalamudSettingToggleUiHideHint", "Check this box to hide any open windows by plugins when toggling the game overlay, or upon entering gpose or a cutscene.")); + ImGui.TextColored(this.hintTextColor, Loc.Localize("DalamudSettingToggleUiHideOptOutNote", "Plugins may independently opt out of the settings below.")); + + ImGui.Checkbox(Loc.Localize("DalamudSettingToggleUiHide", "Hide plugin UI when the game UI is toggled off."), ref this.doToggleUiHide); + ImGui.TextColored(this.hintTextColor, Loc.Localize("DalamudSettingToggleUiHideHint", "Check this box to hide any open windows by plugins when toggling the game overlay.")); + + ImGui.Checkbox(Loc.Localize("DalamudSettingToggleUiHideDuringCutscenes", "Hide plugin UI during cutscenes."), ref this.doToggleUiHideDuringCutscenes); + ImGui.TextColored(this.hintTextColor, Loc.Localize("DalamudSettingToggleUiHideDuringCutscenesHint", "Check this box to hide any open windows by plugins during cutscenes.")); + + ImGui.Checkbox(Loc.Localize("DalamudSettingToggleUiHideDuringGpose", "Hide plugin UI while gpose is active."), ref this.doToggleUiHideDuringGpose); + ImGui.TextColored(this.hintTextColor, Loc.Localize("DalamudSettingToggleUiHideDuringGposeHint", "Check this box to hide any open windows by plugins while gpose is active.")); ImGui.EndTabItem(); } @@ -150,6 +162,8 @@ namespace Dalamud.Interface this.dalamud.Configuration.GlobalUiScale = this.globalUiScale; this.dalamud.Configuration.ToggleUiHide = this.doToggleUiHide; + this.dalamud.Configuration.ToggleUiHideDuringCutscenes = this.doToggleUiHideDuringCutscenes; + this.dalamud.Configuration.ToggleUiHideDuringGpose = this.doToggleUiHideDuringGpose; this.dalamud.Configuration.DoPluginTest = this.doPluginTest; this.dalamud.Configuration.DoDalamudTest = this.doDalamudTest; diff --git a/Dalamud/Interface/UiBuilder.cs b/Dalamud/Interface/UiBuilder.cs index b94474483..cd08cfb02 100644 --- a/Dalamud/Interface/UiBuilder.cs +++ b/Dalamud/Interface/UiBuilder.cs @@ -35,13 +35,26 @@ namespace Dalamud.Interface public event RawDX11Scene.BuildUIDelegate OnBuildUi; /// - /// Choose if this plugin should hide its UI automatically when the whole game hides its UI. + /// Choose if this plugin should hide its UI automatically when the whole game hides its UI (e.g. with Scroll Lock). /// public bool DisableAutomaticUiHide { get; set; } = false; - private bool CutsceneOrGposeActive => this.dalamud.ClientState != null && this.dalamud.ClientState.Condition[ConditionFlag.OccupiedInCutSceneEvent] || - this.dalamud.ClientState.Condition[ConditionFlag.WatchingCutscene] || - this.dalamud.ClientState.Condition[ConditionFlag.WatchingCutscene78]; + /// + /// Choose if this plugin should hide its UI automatically during cutscenes. + /// + public bool DisableCutsceneUiHide { get; set; } = false; + + /// + /// Choose if this plugin should hide its UI automatically while gpose is active. + /// + public bool DisableGposeUiHide { get; set; } = false; + + private bool CutsceneActive => this.dalamud.ClientState != null && + this.dalamud.ClientState.Condition[ConditionFlag.OccupiedInCutSceneEvent] || + this.dalamud.ClientState.Condition[ConditionFlag.WatchingCutscene78]; + + private bool GposeActive => this.dalamud.ClientState != null && + this.dalamud.ClientState.Condition[ConditionFlag.WatchingCutscene]; private Dalamud dalamud; @@ -135,7 +148,9 @@ namespace Dalamud.Interface private void OnDraw() { - if ((this.dalamud.Framework.Gui.GameUiHidden || CutsceneOrGposeActive) && this.dalamud.Configuration.ToggleUiHide && !DisableAutomaticUiHide) + if (this.dalamud.Framework.Gui.GameUiHidden && this.dalamud.Configuration.ToggleUiHide && !DisableAutomaticUiHide || + CutsceneActive && this.dalamud.Configuration.ToggleUiHideDuringCutscenes && !DisableCutsceneUiHide || + GposeActive && this.dalamud.Configuration.ToggleUiHideDuringGpose && !DisableGposeUiHide) return; ImGui.PushID(this.namespaceName);