Separate hiding via toggle, cutscenes, and gpose

This commit is contained in:
karashiiro 2020-09-09 16:41:29 -07:00
parent 7da3a6ed67
commit 0f6fbcb4c6
3 changed files with 39 additions and 8 deletions

View file

@ -32,6 +32,8 @@ namespace Dalamud
public float GlobalUiScale { get; set; } = 1.0f; public float GlobalUiScale { get; set; } = 1.0f;
public bool ToggleUiHide { get; set; } = true; public bool ToggleUiHide { get; set; } = true;
public bool ToggleUiHideDuringCutscenes { get; set; } = true;
public bool ToggleUiHideDuringGpose { get; set; } = true;
[JsonIgnore] [JsonIgnore]
public string ConfigPath; public string ConfigPath;

View file

@ -21,6 +21,8 @@ namespace Dalamud.Interface
this.globalUiScale = this.dalamud.Configuration.GlobalUiScale; this.globalUiScale = this.dalamud.Configuration.GlobalUiScale;
this.doToggleUiHide = this.dalamud.Configuration.ToggleUiHide; 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.doPluginTest = this.dalamud.Configuration.DoPluginTest;
this.doDalamudTest = this.dalamud.Configuration.DoDalamudTest; this.doDalamudTest = this.dalamud.Configuration.DoDalamudTest;
@ -45,6 +47,8 @@ namespace Dalamud.Interface
private const float MaxScale = 2.0f; private const float MaxScale = 2.0f;
private float globalUiScale; private float globalUiScale;
private bool doToggleUiHide; private bool doToggleUiHide;
private bool doToggleUiHideDuringCutscenes;
private bool doToggleUiHideDuringGpose;
#region Experimental #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.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("DalamudSettingToggleUiHideOptOutNote", "Plugins may independently opt out of the settings below."));
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.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(); ImGui.EndTabItem();
} }
@ -150,6 +162,8 @@ namespace Dalamud.Interface
this.dalamud.Configuration.GlobalUiScale = this.globalUiScale; this.dalamud.Configuration.GlobalUiScale = this.globalUiScale;
this.dalamud.Configuration.ToggleUiHide = this.doToggleUiHide; 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.DoPluginTest = this.doPluginTest;
this.dalamud.Configuration.DoDalamudTest = this.doDalamudTest; this.dalamud.Configuration.DoDalamudTest = this.doDalamudTest;

View file

@ -35,13 +35,26 @@ namespace Dalamud.Interface
public event RawDX11Scene.BuildUIDelegate OnBuildUi; public event RawDX11Scene.BuildUIDelegate OnBuildUi;
/// <summary> /// <summary>
/// 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).
/// </summary> /// </summary>
public bool DisableAutomaticUiHide { get; set; } = false; public bool DisableAutomaticUiHide { get; set; } = false;
private bool CutsceneOrGposeActive => this.dalamud.ClientState != null && this.dalamud.ClientState.Condition[ConditionFlag.OccupiedInCutSceneEvent] || /// <summary>
this.dalamud.ClientState.Condition[ConditionFlag.WatchingCutscene] || /// Choose if this plugin should hide its UI automatically during cutscenes.
this.dalamud.ClientState.Condition[ConditionFlag.WatchingCutscene78]; /// </summary>
public bool DisableCutsceneUiHide { get; set; } = false;
/// <summary>
/// Choose if this plugin should hide its UI automatically while gpose is active.
/// </summary>
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; private Dalamud dalamud;
@ -135,7 +148,9 @@ namespace Dalamud.Interface
private void OnDraw() { 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; return;
ImGui.PushID(this.namespaceName); ImGui.PushID(this.namespaceName);