Skip to content
This repository has been archived by the owner on Aug 28, 2024. It is now read-only.

Commit

Permalink
fix: changed the status saving location.
Browse files Browse the repository at this point in the history
  • Loading branch information
ArchiDog1998 committed Apr 27, 2023
1 parent e4987f9 commit ec2044f
Show file tree
Hide file tree
Showing 5 changed files with 100 additions and 44 deletions.
2 changes: 2 additions & 0 deletions Resources/AnimationLockTime.json
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@
"7480": 0.6,
"7481": 0.6,
"7482": 0.6,
"7486": 0.6,
"7487": 0.1,
"7489": 0.1,
"7490": 0.6,
Expand All @@ -185,6 +186,7 @@
"7528": 0.6,
"7529": 0.6,
"7541": 0.6,
"7542": 0.6,
"7546": 0.6,
"7548": 0.6,
"7557": 0.6,
Expand Down
33 changes: 0 additions & 33 deletions RotationSolver.Basic/Configuration/PluginConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -89,39 +89,6 @@ public class PluginConfiguration : IPluginConfiguration
public float AlphaInFill = 0.15f;
public float MinLastAbilityAdvanced = 0.1f;

public SortedSet<uint> DangerousStatus { get; set; } = new SortedSet<uint>()
{
(uint)StatusID.Doom,
(uint)StatusID.Amnesia,
(uint)StatusID.Stun,
(uint)StatusID.Stun2,
(uint)StatusID.Sleep,
(uint)StatusID.Sleep2,
(uint)StatusID.Sleep3,
(uint)StatusID.Pacification,
(uint)StatusID.Pacification2,
(uint)StatusID.Silence,
(uint)StatusID.Slow,
(uint)StatusID.Slow2,
(uint)StatusID.Slow3,
(uint)StatusID.Slow4,
(uint)StatusID.Slow5,
(uint)StatusID.Blind,
(uint)StatusID.Blind2,
(uint)StatusID.Blind3,
(uint)StatusID.Paralysis,
(uint)StatusID.Paralysis2,
(uint)StatusID.Nightmare,
(uint)StatusID.Necrosis,
};

public SortedSet<uint> InvincibleStatus = new SortedSet<uint>()
{
(uint)StatusID.StoneSkin,
(uint)StatusID.IceSpikesInvincible,
(uint)StatusID.VortexBarrier,
};

public Dictionary<ClassJobID, float> HealingOfTimeSubtractSingles { get; set; } = new Dictionary<ClassJobID, float>();

public Dictionary<ClassJobID, float> HealingOfTimeSubtractAreas { get; set; } = new Dictionary<ClassJobID, float>();
Expand Down
85 changes: 82 additions & 3 deletions RotationSolver.Basic/Helpers/StatusHelper.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using Dalamud.Game.ClientState.Statuses;

using Dalamud.Logging;

namespace RotationSolver.Basic.Helpers;

Expand All @@ -25,6 +25,85 @@ public static class StatusHelper
StatusID.Holmgang, StatusID.WillDead, StatusID.LivingDead
};

public static SortedSet<uint> DangerousStatus { get; set; } = new SortedSet<uint>()
{
(uint)StatusID.Doom,
(uint)StatusID.Amnesia,
(uint)StatusID.Stun,
(uint)StatusID.Stun2,
(uint)StatusID.Sleep,
(uint)StatusID.Sleep2,
(uint)StatusID.Sleep3,
(uint)StatusID.Pacification,
(uint)StatusID.Pacification2,
(uint)StatusID.Silence,
(uint)StatusID.Slow,
(uint)StatusID.Slow2,
(uint)StatusID.Slow3,
(uint)StatusID.Slow4,
(uint)StatusID.Slow5,
(uint)StatusID.Blind,
(uint)StatusID.Blind2,
(uint)StatusID.Blind3,
(uint)StatusID.Paralysis,
(uint)StatusID.Paralysis2,
(uint)StatusID.Nightmare,
(uint)StatusID.Necrosis,
};

public static SortedSet<uint> InvincibleStatus { get; set; } = new SortedSet<uint>()
{
(uint)StatusID.StoneSkin,
(uint)StatusID.IceSpikesInvincible,
(uint)StatusID.VortexBarrier,
};

static string s_dangerousStatusFile => Service.Interface.ConfigDirectory.FullName + $"\\{nameof(DangerousStatus)}.json";

static string s_invincibleStatusFile => Service.Interface.ConfigDirectory.FullName + $"\\{nameof(InvincibleStatus)}.json";
public static async void Enable()
{
if(File.Exists(s_dangerousStatusFile))
{
try
{
DangerousStatus = JsonConvert.DeserializeObject<SortedSet<uint>>(await File.ReadAllTextAsync(s_dangerousStatusFile));
}
catch(Exception ex)
{
PluginLog.Warning(ex, "Failed to load Dangerous Status List.");
SaveDangerousStatus();
}
}
else SaveDangerousStatus();

if (File.Exists(s_invincibleStatusFile))
{
try
{
InvincibleStatus = JsonConvert.DeserializeObject<SortedSet<uint>>(await File.ReadAllTextAsync(s_invincibleStatusFile));
}
catch (Exception ex)
{
PluginLog.Warning(ex, "Failed to load Invincible Status List.");
SaveInvincibleStatus();
}
}
else SaveInvincibleStatus();
}

public static void SaveDangerousStatus()
{
File.WriteAllTextAsync(s_dangerousStatusFile,
JsonConvert.SerializeObject(DangerousStatus, Formatting.Indented));
}

public static void SaveInvincibleStatus()
{
File.WriteAllTextAsync(s_invincibleStatusFile,
JsonConvert.SerializeObject(InvincibleStatus, Formatting.Indented));
}


internal record Burst2MinsInfo( StatusID status, bool isOnHostile, byte level, params ClassJobID[] jobs);

Expand Down Expand Up @@ -149,14 +228,14 @@ public static bool IsInvincible(this Status status)
{
if (status.GameData.Icon == 15024) return true;

return Service.Config.InvincibleStatus.Any(id => (uint)id == status.StatusId);
return InvincibleStatus.Any(id => (uint)id == status.StatusId);
}

public static bool IsDangerous(this Status status)
{
if (!status.CanDispel()) return false;
if (status.StackCount > 2) return true;
return Service.Config.DangerousStatus.Any(id => id == status.StatusId);
return DangerousStatus.Any(id => id == status.StatusId);
}

public static bool CanDispel(this Status status)
Expand Down
1 change: 1 addition & 0 deletions RotationSolver/RotationSolverPlugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ public unsafe RotationSolverPlugin(DalamudPluginInterface pluginInterface)
Service.Interface.UiBuilder.Draw += OverlayWindow.Draw;

MajorUpdater.Enable();
StatusHelper.Enable();
ActionSequencerUpdater.Enable(pluginInterface.ConfigDirectory.FullName + "\\Conditions");
IActionHelper.GetAnimationLockTimeAsync(pluginInterface.ConfigDirectory.FullName);
SocialUpdater.Enable();
Expand Down
23 changes: 15 additions & 8 deletions RotationSolver/UI/RotationConfigWindow_List.cs
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,9 @@ private void DrawListTab()
"Add One",
ref searchText, AllInvStatus, s =>
{
Service.Config.InvincibleStatus.Add((uint)s.ID);
StatusHelper.InvincibleStatus.Add((uint)s.ID);
StatusHelper.SaveInvincibleStatus();

});

ImGui.SameLine();
Expand All @@ -89,7 +91,8 @@ private void DrawListTab()
"Add One",
ref searchText, AllDispelStatus, s =>
{
Service.Config.DangerousStatus.Add((uint)s.ID);
StatusHelper.DangerousStatus.Add((uint)s.ID);
StatusHelper.SaveDangerousStatus();
});

ImGui.SameLine();
Expand Down Expand Up @@ -160,7 +163,7 @@ private void DrawDangerousStatus()
{
uint removeId = 0;
uint addId = 0;
foreach (var statusId in Service.Config.DangerousStatus)
foreach (var statusId in StatusHelper.DangerousStatus)
{
var status = Service.GetSheet<Status>().GetRow(statusId);
ImGui.Image(IconSet.GetTexture(status.Icon).ImGuiHandle, new Vector2(24, 30));
Expand Down Expand Up @@ -190,19 +193,21 @@ private void DrawDangerousStatus()

if(removeId != 0)
{
Service.Config.DangerousStatus.Remove(removeId);
StatusHelper.DangerousStatus.Remove(removeId);
StatusHelper.SaveDangerousStatus();
}
if (addId != 0)
{
Service.Config.DangerousStatus.Add(addId);
StatusHelper.DangerousStatus.Add(addId);
StatusHelper.SaveDangerousStatus();
}
}

private void DrawInvincibility()
{
uint removeId = 0;
uint addId = 0;
foreach (var statusId in Service.Config.InvincibleStatus)
foreach (var statusId in StatusHelper.InvincibleStatus)
{
var status = Service.GetSheet<Status>().GetRow(statusId);
ImGui.Image(IconSet.GetTexture(status.Icon).ImGuiHandle, new Vector2(24, 30));
Expand Down Expand Up @@ -231,11 +236,13 @@ private void DrawInvincibility()

if (removeId != 0)
{
Service.Config.InvincibleStatus.Remove(removeId);
StatusHelper.InvincibleStatus.Remove(removeId);
StatusHelper.SaveInvincibleStatus();
}
if (addId != 0)
{
Service.Config.InvincibleStatus.Add(addId);
StatusHelper.InvincibleStatus.Add(addId);
StatusHelper.SaveInvincibleStatus();
}
}
}

0 comments on commit ec2044f

Please sign in to comment.