feat: add option to only alternate in combat

This commit is contained in:
Anna 2024-07-31 21:44:25 -04:00
parent 05fffe39f8
commit 07b62ba03b
Signed by: anna
GPG Key ID: D0943384CD9F87D1
3 changed files with 10 additions and 2 deletions

View File

@ -19,6 +19,7 @@ public class Configuration : IPluginConfiguration {
public bool Alternate = true; public bool Alternate = true;
public bool ManaModeAlternateOnlyManaUsers = true; public bool ManaModeAlternateOnlyManaUsers = true;
public float AlternateSeconds = 3.0f; public float AlternateSeconds = 3.0f;
public bool OnlyAlternateInCombat = true;
public uint TextColour = 0xEDFFEC; public uint TextColour = 0xEDFFEC;
public int TextAddRed; public int TextAddRed;
public int TextAddGreen; public int TextAddGreen;

View File

@ -3,6 +3,7 @@ using System.Globalization;
using System.Text; using System.Text;
using Dalamud.Game.Addon.Lifecycle; using Dalamud.Game.Addon.Lifecycle;
using Dalamud.Game.Addon.Lifecycle.AddonArgTypes; using Dalamud.Game.Addon.Lifecycle.AddonArgTypes;
using Dalamud.Game.ClientState.Conditions;
using Dalamud.Game.Gui.ContextMenu; using Dalamud.Game.Gui.ContextMenu;
using Dalamud.Game.Text; using Dalamud.Game.Text;
using Dalamud.IoC; using Dalamud.IoC;
@ -51,6 +52,9 @@ public class Plugin : IDalamudPlugin {
[PluginService] [PluginService]
internal IDataManager DataManager { get; init; } internal IDataManager DataManager { get; init; }
[PluginService]
internal ICondition Condition { get; init; }
// [PluginService] // [PluginService]
// internal ITextureProvider TextureProvider { get; init; } // internal ITextureProvider TextureProvider { get; init; }
@ -617,6 +621,8 @@ public class Plugin : IDalamudPlugin {
); );
} }
var inCombat = this.Condition[ConditionFlag.InCombat];
if (this.Config.Mode == MeterMode.Mana && info.IsChocobo) { if (this.Config.Mode == MeterMode.Mana && info.IsChocobo) {
var chocoboTimer = list->GetTextNodeById(5); var chocoboTimer = list->GetTextNodeById(5);
var chocoboTimerIcon = list->GetTextNodeById(4); var chocoboTimerIcon = list->GetTextNodeById(4);
@ -624,7 +630,7 @@ public class Plugin : IDalamudPlugin {
var hasTimer = chocoboTimer != null && chocoboTimer->IsVisible(); var hasTimer = chocoboTimer != null && chocoboTimer->IsVisible();
var hasTimerIcon = chocoboTimerIcon != null && chocoboTimerIcon->IsVisible(); var hasTimerIcon = chocoboTimerIcon != null && chocoboTimerIcon->IsVisible();
if (this.Config.Alternate && !this._showDps) { if (this.Config.Alternate && (!this.Config.OnlyAlternateInCombat || inCombat) && !this._showDps) {
this.ResetMember(list, info, false, false); this.ResetMember(list, info, false, false);
} else { } else {
if (hasTimer) { if (hasTimer) {
@ -647,7 +653,7 @@ public class Plugin : IDalamudPlugin {
return; return;
} }
if (this.Config.Alternate && !this._showDps && info.ClassJob is { } classJob) { if (this.Config.Alternate && (!this.Config.OnlyAlternateInCombat || inCombat) && !this._showDps && info.ClassJob is { } classJob) {
var isCaster = Array.IndexOf(this._manaUsers, classJob) != -1; var isCaster = Array.IndexOf(this._manaUsers, classJob) != -1;
if (!this.Config.ManaModeAlternateOnlyManaUsers || isCaster) { if (!this.Config.ManaModeAlternateOnlyManaUsers || isCaster) {
this.ResetMember(list, info, false, false); this.ResetMember(list, info, false, false);

View File

@ -118,6 +118,7 @@ public class PluginUi : IDisposable {
} }
using (ImGuiHelper.DisabledUnless(this.Plugin.Config is { Alternate: true, Mode: MeterMode.Mana })) { using (ImGuiHelper.DisabledUnless(this.Plugin.Config is { Alternate: true, Mode: MeterMode.Mana })) {
anyChanged |= ImGui.Checkbox("Only alternate when in combat", ref this.Plugin.Config.OnlyAlternateInCombat);
anyChanged |= ImGui.Checkbox("Only alternate on jobs that use mana", ref this.Plugin.Config.ManaModeAlternateOnlyManaUsers); anyChanged |= ImGui.Checkbox("Only alternate on jobs that use mana", ref this.Plugin.Config.ManaModeAlternateOnlyManaUsers);
} }