Make popups not appear when the player is busy.

This commit is contained in:
Ottermandias 2023-10-31 11:30:24 +01:00
parent b7cd6dfe2d
commit 53b9aa9387

View file

@ -1,6 +1,8 @@
using System.Numerics;
using Dalamud.Game.ClientState.Conditions;
using Dalamud.Interface.Utility;
using Dalamud.Interface.Windowing;
using Dalamud.Plugin.Services;
using ImGuiNET;
using OtterGui;
using OtterGui.Raii;
@ -10,9 +12,11 @@ namespace Glamourer.Gui;
public class GenericPopupWindow : Window
{
private readonly Configuration _config;
private readonly ICondition _condition;
private readonly IClientState _state;
public bool OpenFestivalPopup { get; internal set; } = false;
public GenericPopupWindow(Configuration config)
public GenericPopupWindow(Configuration config, IClientState state, ICondition condition)
: base("Glamourer Popups",
ImGuiWindowFlags.NoBringToFrontOnFocus
| ImGuiWindowFlags.NoDecoration
@ -24,13 +28,15 @@ public class GenericPopupWindow : Window
| ImGuiWindowFlags.NoTitleBar, true)
{
_config = config;
_state = state;
_condition = condition;
DisableWindowSounds = true;
IsOpen = true;
}
public override void Draw()
{
if (OpenFestivalPopup)
if (OpenFestivalPopup && CheckFestivalPopupConditions())
{
ImGui.OpenPopup("FestivalPopup");
OpenFestivalPopup = false;
@ -39,6 +45,18 @@ public class GenericPopupWindow : Window
DrawFestivalPopup();
}
private bool CheckFestivalPopupConditions()
=> !_state.IsPvPExcludingDen
&& !_condition[ConditionFlag.InCombat]
&& !_condition[ConditionFlag.BoundByDuty]
&& !_condition[ConditionFlag.WatchingCutscene]
&& !_condition[ConditionFlag.WatchingCutscene78]
&& !_condition[ConditionFlag.BoundByDuty95]
&& !_condition[ConditionFlag.BoundByDuty56]
&& !_condition[ConditionFlag.InDeepDungeon]
&& !_condition[ConditionFlag.PlayingLordOfVerminion]
&& !_condition[ConditionFlag.ChocoboRacing];
private void DrawFestivalPopup()
{