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 1/2] 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);
From 7d1ce76b2e612736d6a2d0fb20033858a899e3af Mon Sep 17 00:00:00 2001
From: karashiiro <49822414+karashiiro@users.noreply.github.com>
Date: Wed, 9 Sep 2020 19:24:51 -0700
Subject: [PATCH 2/2] Make DisableAutomaticUIHide override everything, make
toggle DisableUserUIHide
---
Dalamud/Interface/InterfaceManager.cs | 4 ----
Dalamud/Interface/UiBuilder.cs | 15 ++++++++++-----
2 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/Dalamud/Interface/InterfaceManager.cs b/Dalamud/Interface/InterfaceManager.cs
index 4d24cd8b8..3e34a16ae 100644
--- a/Dalamud/Interface/InterfaceManager.cs
+++ b/Dalamud/Interface/InterfaceManager.cs
@@ -1,13 +1,9 @@
using System;
using System.ComponentModel;
-using System.Diagnostics;
using System.IO;
-using System.Linq;
using System.Numerics;
using System.Runtime.InteropServices;
using System.Text;
-using System.Threading;
-using CheapLoc;
using Dalamud.Game;
using Dalamud.Game.Internal.DXGI;
using Dalamud.Hooking;
diff --git a/Dalamud/Interface/UiBuilder.cs b/Dalamud/Interface/UiBuilder.cs
index cd08cfb02..5ecfbd101 100644
--- a/Dalamud/Interface/UiBuilder.cs
+++ b/Dalamud/Interface/UiBuilder.cs
@@ -35,10 +35,15 @@ namespace Dalamud.Interface
public event RawDX11Scene.BuildUIDelegate OnBuildUi;
///
- /// Choose if this plugin should hide its UI automatically when the whole game hides its UI (e.g. with Scroll Lock).
+ /// Choose if this plugin should hide its UI automatically when the game's UI is hidden.
///
public bool DisableAutomaticUiHide { get; set; } = false;
+ ///
+ /// Choose if this plugin should hide its UI automatically when the user toggles the UI.
+ ///
+ public bool DisableUserUiHide { get; set; } = false;
+
///
/// Choose if this plugin should hide its UI automatically during cutscenes.
///
@@ -120,7 +125,7 @@ namespace Dalamud.Interface
/// Any ImFontPtr objects that you store can be invalidated when fonts are rebuilt
/// (at any time), so you should both reload your custom fonts and restore those
/// pointers inside this handler.
- /// PLEASE remove this handler inside Dipose, or when you no longer need your fonts!
+ /// PLEASE remove this handler inside Dispose, or when you no longer need your fonts!
///
public Action OnBuildFonts
{
@@ -148,9 +153,9 @@ namespace Dalamud.Interface
private void OnDraw() {
- if (this.dalamud.Framework.Gui.GameUiHidden && this.dalamud.Configuration.ToggleUiHide && !DisableAutomaticUiHide ||
- CutsceneActive && this.dalamud.Configuration.ToggleUiHideDuringCutscenes && !DisableCutsceneUiHide ||
- GposeActive && this.dalamud.Configuration.ToggleUiHideDuringGpose && !DisableGposeUiHide)
+ if (this.dalamud.Framework.Gui.GameUiHidden && this.dalamud.Configuration.ToggleUiHide && !(DisableUserUiHide || DisableAutomaticUiHide) ||
+ CutsceneActive && this.dalamud.Configuration.ToggleUiHideDuringCutscenes && !(DisableCutsceneUiHide || DisableAutomaticUiHide) ||
+ GposeActive && this.dalamud.Configuration.ToggleUiHideDuringGpose && !(DisableGposeUiHide || DisableAutomaticUiHide))
return;
ImGui.PushID(this.namespaceName);