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);