Skip to content

Commit

Permalink
Merge pull request #516 from FFXIV-CombatReborn/bunchafixes
Browse files Browse the repository at this point in the history
Bunchafixes
  • Loading branch information
LTS-FFXIV authored Jan 2, 2025
2 parents 58382c2 + aa427f2 commit 7e0229d
Show file tree
Hide file tree
Showing 8 changed files with 60 additions and 32 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ obj/
lib/
.idea/
RotationSolver/Localization/Localization.json
/Resources/AutoStatusOrder.json
13 changes: 8 additions & 5 deletions RotationSolver.Basic/Configuration/Configs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,6 @@ public const string
List2 = "List2",
Debug = "Debug";

public List<AutoStatus> AutoStatusOrder { get; set; } = Enum.GetValues(typeof(AutoStatus))
.Cast<AutoStatus>()
.Where(status => status != AutoStatus.None)
.ToList();

public const int CurrentVersion = 12;
public int Version { get; set; } = CurrentVersion;

Expand Down Expand Up @@ -64,6 +59,10 @@ public const string
Filter = BasicAutoSwitch)]
private static readonly bool _autoOffWhenDead = true;

[ConditionBool, UI("Auto turn off when dead in PvP.",
Filter = BasicAutoSwitch)]
private static readonly bool _autoOffWhenDeadPvP = true;

[ConditionBool, UI("Auto turn off when duty completed.",
Filter = BasicAutoSwitch)]
private static readonly bool _autoOffWhenDutyCompleted = true;
Expand All @@ -77,6 +76,10 @@ public const string
Filter = UiInformation)]
private static readonly bool _sayOutStateChanged = false;

[ConditionBool, UI("Enable changelog window popup on update",
Filter = UiInformation)]
private static readonly bool _changelogPopup = true;

[ConditionBool, UI("Show plugin status in server info bar.",
Filter = UiInformation)]
private static readonly bool _showInfoOnDtr = true;
Expand Down
16 changes: 15 additions & 1 deletion RotationSolver.Basic/Configuration/OtherConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ internal class OtherConfiguration
public static HashSet<uint> InvincibleStatus = [];
public static HashSet<uint> NoCastingStatus = [];
public static HashSet<uint> PrioTargetId = [];
public static HashSet<uint> AutoStatusOrder = [];

public static RotationSolverRecord RotationSolverRecord = new();

Expand All @@ -33,6 +34,7 @@ public static void Init()
Task.Run(() => InitOne(ref PriorityStatus, nameof(PriorityStatus)));
Task.Run(() => InitOne(ref InvincibleStatus, nameof(InvincibleStatus)));
Task.Run(() => InitOne(ref PrioTargetId, nameof(PrioTargetId)));
Task.Run(() => InitOne(ref AutoStatusOrder, nameof(AutoStatusOrder)));
Task.Run(() => InitOne(ref NoHostileNames, nameof(NoHostileNames)));
Task.Run(() => InitOne(ref NoProvokeNames, nameof(NoProvokeNames)));
Task.Run(() => InitOne(ref AnimationLockTime, nameof(AnimationLockTime)));
Expand All @@ -52,6 +54,7 @@ public static Task Save()
await SaveDangerousStatus();
await SaveInvincibleStatus();
await SavePrioTargetId();
await SaveAutoStatusOrder();
await SaveNoHostileNames();
await SaveAnimationLockTime();
await SaveHostileCastingArea();
Expand Down Expand Up @@ -162,14 +165,25 @@ public static Task SaveBeneficialPositions()
public static void ResetPrioTargetId()
{
InitOne(ref PrioTargetId, nameof(PrioTargetId), true, true);
SaveHostileCastingKnockback().Wait();
SavePrioTargetId().Wait();
}

public static Task SavePrioTargetId()
{
return Task.Run(() => Save(PrioTargetId, nameof(PrioTargetId)));
}

public static void ResetAutoStatusOrder()
{
InitOne(ref AutoStatusOrder, nameof(AutoStatusOrder), true, true);
SaveAutoStatusOrder().Wait();
}

public static Task SaveAutoStatusOrder()
{
return Task.Run(() => Save(AutoStatusOrder, nameof(AutoStatusOrder)));
}

public static Task SaveNoHostileNames()
{
return Task.Run(() => Save(NoHostileNames, nameof(NoHostileNames)));
Expand Down
5 changes: 5 additions & 0 deletions RotationSolver.Basic/Rotations/CustomRotation_Actions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@ static partial void ModifyTrueNorthPvE(ref ActionSetting setting)
setting.ActionCheck = () => !IsLastAction(ActionID.TrueNorthPvE);
}

static partial void ModifyShirkPvE(ref ActionSetting setting)
{
setting.TargetType = TargetType.Tank;
}

static partial void ModifyAddlePvE(ref ActionSetting setting)
{
setting.TargetStatusProvide = new[] { StatusID.Addle };
Expand Down
6 changes: 6 additions & 0 deletions RotationSolver/Commands/RSCommands_Actions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,12 @@ internal static void UpdateRotationState()
{
CancelState();
}
else if (Service.Config.AutoOffWhenDeadPvP && DataCenter.Territory?.IsPvP == true
&& Player.Available
&& Player.Object.CurrentHp == 0)
{
CancelState();
}
else if (Service.Config.AutoOffCutScene
&& Svc.Condition[ConditionFlag.OccupiedInCutSceneEvent])
{
Expand Down
16 changes: 7 additions & 9 deletions RotationSolver/UI/RotationConfigWindow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public partial class RotationConfigWindow : Window
private const float JOB_ICON_WIDTH = 50;

public RotationConfigWindow()
: base("", ImGuiWindowFlags.NoScrollbar, false)
: base("", ImGuiWindowFlags.NoScrollbar, false)
{
SizeCondition = ImGuiCond.FirstUseEver;
Size = new Vector2(740f, 490f);
Expand Down Expand Up @@ -765,15 +765,11 @@ private void DrawAutoStatusOrderConfig()

if (ImGui.Button("Reset to Default"))
{
Service.Config.AutoStatusOrder = Enum.GetValues(typeof(AutoStatus))
.Cast<AutoStatus>()
.Where(status => status != AutoStatus.None)
.ToList();
Service.Config.Save();
OtherConfiguration.ResetAutoStatusOrder();
}
ImGui.Spacing();

var autoStatusOrder = Service.Config.AutoStatusOrder;
var autoStatusOrder = OtherConfiguration.AutoStatusOrder.ToList(); // Convert HashSet to List
bool orderChanged = false;

// Begin a child window to contain the list
Expand All @@ -784,6 +780,7 @@ private void DrawAutoStatusOrderConfig()
for (int i = 0; i < itemCount; i++)
{
var item = autoStatusOrder[i];
var itemName = Enum.GetName(typeof(AutoStatus), item) ?? item.ToString(); // Retrieve the status name by its enum value

// Draw up button
if (ImGuiEx.IconButton(FontAwesomeIcon.ArrowUp, $"##Up{i}") && i > 0)
Expand All @@ -810,7 +807,7 @@ private void DrawAutoStatusOrderConfig()
ImGui.SameLine();

// Draw the item
ImGui.Text(item.ToString());
ImGui.Text(itemName);

// Optionally, add tooltips or additional information
if (ImGui.IsItemHovered())
Expand All @@ -825,7 +822,8 @@ private void DrawAutoStatusOrderConfig()

if (orderChanged)
{
Service.Config.Save();
OtherConfiguration.AutoStatusOrder = new HashSet<uint>(autoStatusOrder); // Convert List back to HashSet
OtherConfiguration.SaveAutoStatusOrder();
}
}

Expand Down
4 changes: 2 additions & 2 deletions RotationSolver/UI/WelcomeWindow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public WelcomeWindow() : base($"Welcome to Rotation Solver Reborn!", BaseFlags)
{
Size = new Vector2(650, 500);
SizeCondition = ImGuiCond.FirstUseEver;
if (_lastSeenChangelog != _assemblyVersion || !Service.Config.FirstTimeSetupDone)
if ((_lastSeenChangelog != _assemblyVersion && Service.Config.ChangelogPopup || !Service.Config.FirstTimeSetupDone) && Service.Config.ChangelogPopup)
{
PopulateChangelogs();
IsOpen = true;
Expand All @@ -25,7 +25,7 @@ public WelcomeWindow() : base($"Welcome to Rotation Solver Reborn!", BaseFlags)
#if DEBUG
private string _assemblyVersion = "6.9.6.9"; //kekw
#else
private string _assemblyVersion = typeof(RotationConfigWindow).Assembly.GetName().Version?.ToString() ?? "4.0.5.4";
private string _assemblyVersion = typeof(RotationConfigWindow).Assembly.GetName().Version?.ToString() ?? "7.1.5.24";
#endif

private string _lastSeenChangelog = Service.Config.LastSeenChangelog;
Expand Down
31 changes: 16 additions & 15 deletions RotationSolver/Updaters/StateUpdater.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using ECommons.GameHelpers;
using RotationSolver.Basic.Configuration;
using RotationSolver.Basic.Configuration.Conditions;

namespace RotationSolver.Updaters;
Expand All @@ -24,78 +25,78 @@ private static AutoStatus StatusFromAutomatic()
AutoStatus status = AutoStatus.None;

// Get the user-defined order of AutoStatus flags
var autoStatusOrder = Service.Config.AutoStatusOrder;
var autoStatusOrder = OtherConfiguration.AutoStatusOrder;

foreach (var autoStatus in autoStatusOrder)
{
switch (autoStatus)
{
case AutoStatus.Dispel:
case (uint)AutoStatus.Dispel:
if (ShouldAddDispel())
status |= AutoStatus.Dispel;
break;

case AutoStatus.Interrupt:
case (uint)AutoStatus.Interrupt:
if (ShouldAddInterrupt())
status |= AutoStatus.Interrupt;
break;

case AutoStatus.AntiKnockback:
case (uint)AutoStatus.AntiKnockback:
if (ShouldAddAntiKnockback())
status |= AutoStatus.AntiKnockback;
break;

case AutoStatus.Positional:
case (uint)AutoStatus.Positional:
if (ShouldAddPositional())
status |= AutoStatus.Positional;
break;

case AutoStatus.HealAreaAbility:
case (uint)AutoStatus.HealAreaAbility:
if (ShouldAddHealAreaAbility())
status |= AutoStatus.HealAreaAbility;
break;

case AutoStatus.HealAreaSpell:
case (uint)AutoStatus.HealAreaSpell:
if (ShouldAddHealAreaSpell())
status |= AutoStatus.HealAreaSpell;
break;

case AutoStatus.HealSingleAbility:
case (uint)AutoStatus.HealSingleAbility:
if (ShouldAddHealSingleAbility())
status |= AutoStatus.HealSingleAbility;
break;

case AutoStatus.HealSingleSpell:
case (uint)AutoStatus.HealSingleSpell:
if (ShouldAddHealSingleSpell())
status |= AutoStatus.HealSingleSpell;
break;

case AutoStatus.DefenseArea:
case (uint)AutoStatus.DefenseArea:
if (ShouldAddDefenseArea())
status |= AutoStatus.DefenseArea;
break;

case AutoStatus.DefenseSingle:
case (uint)AutoStatus.DefenseSingle:
if (ShouldAddDefenseSingle())
status |= AutoStatus.DefenseSingle;
break;

case AutoStatus.Raise:
case (uint)AutoStatus.Raise:
if (ShouldAddRaise())
status |= AutoStatus.Raise;
break;

case AutoStatus.Provoke:
case (uint)AutoStatus.Provoke:
if (ShouldAddProvoke())
status |= AutoStatus.Provoke;
break;

case AutoStatus.TankStance:
case (uint)AutoStatus.TankStance:
if (ShouldAddTankStance())
status |= AutoStatus.TankStance;
break;

case AutoStatus.Speed:
case (uint)AutoStatus.Speed:
if (ShouldAddSpeed())
status |= AutoStatus.Speed;
break;
Expand Down

0 comments on commit 7e0229d

Please sign in to comment.