diff --git a/Dalamud/Configuration/DalamudConfiguration.cs b/Dalamud/Configuration/DalamudConfiguration.cs index a5a700cef..87041e80b 100644 --- a/Dalamud/Configuration/DalamudConfiguration.cs +++ b/Dalamud/Configuration/DalamudConfiguration.cs @@ -42,6 +42,7 @@ namespace Dalamud public bool DoDalamudTest { get; set; } = false; public float GlobalUiScale { get; set; } = 1.0f; + public bool ToggleUiHide { get; set; } = true; [JsonIgnore] public string ConfigPath; diff --git a/Dalamud/Dalamud.cs b/Dalamud/Dalamud.cs index 7513cea3a..d800bf048 100644 --- a/Dalamud/Dalamud.cs +++ b/Dalamud/Dalamud.cs @@ -374,6 +374,9 @@ namespace Dalamud { ImGui.EndMenu(); } + if (this.Framework.Gui.GameUiHidden) + ImGui.BeginMenu("UI is hidden...", false); + ImGui.EndMainMenuBar(); } } diff --git a/Dalamud/Interface/DalamudSettingsWindow.cs b/Dalamud/Interface/DalamudSettingsWindow.cs index acdffcbdb..8876295af 100644 --- a/Dalamud/Interface/DalamudSettingsWindow.cs +++ b/Dalamud/Interface/DalamudSettingsWindow.cs @@ -1,23 +1,13 @@ using System; -using System.Collections.Generic; -using System.Dynamic; using System.Linq; -using System.Net.Mime; using System.Numerics; using CheapLoc; using Dalamud.Game.Chat; -using Dalamud.Game.ClientState.Actors.Types; -using Dalamud.Game.ClientState.Actors.Types.NonPlayer; -using Dalamud.Plugin; using ImGuiNET; -using JetBrains.Annotations; -using Newtonsoft.Json; -using Serilog; -using SharpDX.Direct3D11; namespace Dalamud.Interface { - class DalamudSettingsWindow { + internal class DalamudSettingsWindow { private readonly Dalamud dalamud; public DalamudSettingsWindow(Dalamud dalamud) { @@ -30,6 +20,7 @@ namespace Dalamud.Interface this.doCfChatMessage = this.dalamud.Configuration.DutyFinderChatMessage; this.globalUiScale = this.dalamud.Configuration.GlobalUiScale; + this.doToggleUiHide = this.dalamud.Configuration.ToggleUiHide; this.doPluginTest = this.dalamud.Configuration.DoPluginTest; this.doDalamudTest = this.dalamud.Configuration.DoDalamudTest; @@ -53,6 +44,7 @@ namespace Dalamud.Interface private const float MinScale = 0.3f; private const float MaxScale = 2.0f; private float globalUiScale; + private bool doToggleUiHide; #region Experimental @@ -105,6 +97,11 @@ 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.Checkbox(Loc.Localize("DalamudSettingToggleUiHide", "Hide plugin UI when the game UI is hidden"), 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.EndTabItem(); } @@ -152,6 +149,7 @@ namespace Dalamud.Interface this.dalamud.Configuration.DutyFinderChatMessage = this.doCfChatMessage; this.dalamud.Configuration.GlobalUiScale = this.globalUiScale; + this.dalamud.Configuration.ToggleUiHide = this.doToggleUiHide; 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 97989a518..10c213bd6 100644 --- a/Dalamud/Interface/UiBuilder.cs +++ b/Dalamud/Interface/UiBuilder.cs @@ -40,6 +40,7 @@ namespace Dalamud.Interface private readonly InterfaceManager interfaceManager; private readonly GameGui gameGui; + private readonly DalamudConfiguration config; #if DEBUG internal static bool DoStats { get; set; } = true; #else @@ -55,11 +56,12 @@ namespace Dalamud.Interface /// /// The interface manager to register on. /// The plugin namespace. - internal UiBuilder(InterfaceManager interfaceManager, GameGui gameGui, string namespaceName) { + internal UiBuilder(InterfaceManager interfaceManager, GameGui gameGui, DalamudConfiguration config, string namespaceName) { this.namespaceName = namespaceName; this.interfaceManager = interfaceManager; this.gameGui = gameGui; + this.config = config; this.interfaceManager.OnDraw += OnDraw; this.stopwatch = new System.Diagnostics.Stopwatch(); } @@ -128,7 +130,7 @@ namespace Dalamud.Interface private void OnDraw() { - if (this.gameGui.GameUiHidden && !DisableAutomaticUiHide) + if (this.gameGui.GameUiHidden && this.config.ToggleUiHide && !DisableAutomaticUiHide) return; ImGui.PushID(this.namespaceName); diff --git a/Dalamud/Plugin/DalamudPluginInterface.cs b/Dalamud/Plugin/DalamudPluginInterface.cs index 940cd7497..6f39c2d2b 100644 --- a/Dalamud/Plugin/DalamudPluginInterface.cs +++ b/Dalamud/Plugin/DalamudPluginInterface.cs @@ -75,7 +75,7 @@ namespace Dalamud.Plugin this.CommandManager = dalamud.CommandManager; this.Framework = dalamud.Framework; this.ClientState = dalamud.ClientState; - this.UiBuilder = new UiBuilder(dalamud.InterfaceManager, dalamud.Framework.Gui, pluginName); + this.UiBuilder = new UiBuilder(dalamud.InterfaceManager, dalamud.Framework.Gui, dalamud.Configuration, pluginName); this.TargetModuleScanner = dalamud.SigScanner; this.Data = dalamud.Data; this.SeStringManager = dalamud.SeStringManager;