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

Commit

Permalink
fix: conditions can be copied.
Browse files Browse the repository at this point in the history
  • Loading branch information
ArchiDog1998 committed Oct 31, 2023
1 parent 509ac67 commit e02234c
Show file tree
Hide file tree
Showing 9 changed files with 72 additions and 23 deletions.
2 changes: 1 addition & 1 deletion Resources/RotationSolverRecord.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"ClickingCount": 40696,
"ClickingCount": 42767,
"SaidUsers": []
}
Original file line number Diff line number Diff line change
Expand Up @@ -131,9 +131,10 @@ public static MajorConditionSet[] Read(string folder)
{
return JsonConvert.DeserializeObject<MajorConditionSet>(str, new IConditionConverter());
}
catch
catch(Exception ex)
{
Svc.Chat.Print($"Failed to load the conditionSet from {p}");
Svc.Log.Warning(ex, $"Failed to load the ConditionSet from {p}");
Svc.Chat.Print($"Failed to load the ConditionSet from {p}");
return null;
}
}).Where(set => set != null && !string.IsNullOrEmpty(set.Name)).ToArray();
Expand Down
6 changes: 5 additions & 1 deletion RotationSolver.Basic/Data/MapEffectData.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
namespace RotationSolver.Basic.Data;
using ECommons.DalamudServices;

namespace RotationSolver.Basic.Data;

internal readonly struct MapEffectData
{
Expand All @@ -17,4 +19,6 @@ public MapEffectData(uint position, ushort param1, ushort param2)
Param1 = param1;
Param2 = param2;
}

public override string ToString() => $"MapEffect: Pos: {Position}, P1: {Param1}, P2: {Param2}";
}
6 changes: 5 additions & 1 deletion RotationSolver.Basic/Data/ObjectEffectData.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
namespace RotationSolver.Basic.Data;
using ECommons.DalamudServices;

namespace RotationSolver.Basic.Data;

internal readonly struct ObjectEffectData
{
Expand All @@ -17,4 +19,6 @@ public ObjectEffectData(uint objectId, ushort param1, ushort param2)
Param1 = param1;
Param2 = param2;
}

public override string ToString() => $"Object Effect: {Svc.Objects.SearchById(ObjectId)?.Name ?? "Object"}, P1: {Param1}, P2: {Param2}";
}
4 changes: 4 additions & 0 deletions RotationSolver/Localization/Localization.json
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,7 @@
"ActionSequencer_RotationCondition": "Rotation Condition",
"ActionSequencer_NamedCondition": "Named Condition",
"ActionSequencer_TerritoryCondition": "Territory Condition",
"ActionSequencer_FromClipboard": "From Clipboard",
"ActionSequencer_TraitCondition": "Trait Condition",
"ActionSequencer_ActionTarget": "{0}'s target",
"ActionSequencer_Target": "Target",
Expand Down Expand Up @@ -271,8 +272,10 @@
"TargetConditionType_CastingAction": "Casting Action",
"TargetConditionType_CastingActionTimeUntil": "Casting Action Time Until",
"TargetConditionType_HP": "HP",
"TargetConditionType_HPRatio": "HP%",
"TargetConditionType_MP": "MP",
"TargetConditionType_TargetName": "Target Name",
"TargetConditionType_ObjectEffect": "Object Effect",
"TerritoryConditionType_TerritoryContentType": "Territory Content Type",
"TerritoryConditionType_TeritoryName": "Teritory Name",
"TerritoryConditionType_DutyName": "Duty Name",
Expand Down Expand Up @@ -515,6 +518,7 @@
"ConfigWindow_List_AddPosition": "Add beneficial AoE location",
"ConfigWindow_Actions_MoveUp": "Move Up",
"ConfigWindow_Actions_MoveDown": "Move Down",
"ConfigWindow_Actions_Copy": "Copy to clipboard",
"ConfigWindow_NotInJob": "This option is unavailable while using your current job\n \nRoles or jobs needed:\n{0}",
"ConfigWindow_Searching": "Search...",
"ConfigWindow_UI_HideWarning": "Hide all warnings",
Expand Down
2 changes: 2 additions & 0 deletions RotationSolver/Localization/Strings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -309,6 +309,7 @@ internal class Strings
public string ActionSequencer_RotationCondition { get; set; } = "Rotation Condition";
public string ActionSequencer_NamedCondition { get; set; } = "Named Condition";
public string ActionSequencer_TerritoryCondition { get; set; } = "Territory Condition";
public string ActionSequencer_FromClipboard { get; set; } = "From Clipboard";
public string ActionSequencer_TraitCondition { get; set; } = "Trait Condition";
public string ActionSequencer_ActionTarget { get; set; } = "{0}'s target";
public string ActionSequencer_Target { get; set; } = "Target";
Expand Down Expand Up @@ -731,6 +732,7 @@ internal class Strings
public string ConfigWindow_List_AddPosition { get; set; } = "Add beneficial AoE location";
public string ConfigWindow_Actions_MoveUp { get; set; } = "Move Up";
public string ConfigWindow_Actions_MoveDown { get; set; } = "Move Down";
public string ConfigWindow_Actions_Copy { get; set; } = "Copy to clipboard";
public string ConfigWindow_NotInJob { get; set; } = "This option is unavailable while using your current job\n \nRoles or jobs needed:\n{0}";

public string ConfigWindow_Searching { get; set; } = "Search...";
Expand Down
33 changes: 28 additions & 5 deletions RotationSolver/UI/ConditionDrawer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@
using Dalamud.Interface.Utility;
using Dalamud.Interface.Utility.Raii;
using Dalamud.Utility;
using ECommons.DalamudServices;
using ECommons.ImGuiMethods;
using Lumina.Excel.GeneratedSheets;
using RotationSolver.Basic.Configuration.Conditions;
using RotationSolver.Localization;
using RotationSolver.Updaters;
using System.Xml.Linq;
using Action = System.Action;

namespace RotationSolver.UI;
Expand Down Expand Up @@ -295,7 +297,6 @@ private static void DrawAfter(this NamedCondition namedCondition, ICustomRotatio
DataCenter.RightSet.NamedConditions.Select(p => p.Name).ToArray(), i => i.ToString(), i =>
{
namedCondition.ConditionName = i;
}, LocalizationManager.RightLang.ConfigWindow_Condition_ConditionName);

ImGui.SameLine();
Expand Down Expand Up @@ -545,20 +546,28 @@ void Down()
conditionSet.Conditions.Insert(Math.Min(conditionSet.Conditions.Count, i + 1), condition);
}

void Copy()
{
var str = JsonConvert.SerializeObject(conditionSet.Conditions[i], Formatting.Indented);
ImGui.SetClipboardText(str);
}

var key = $"Condition Pop Up: {condition.GetHashCode()}";

ImGuiHelper.DrawHotKeysPopup(key, string.Empty,
(LocalizationManager.RightLang.ConfigWindow_List_Remove, Delete, new string[] { "Delete" }),
(LocalizationManager.RightLang.ConfigWindow_Actions_MoveUp, Up, new string[] { "" }),
(LocalizationManager.RightLang.ConfigWindow_Actions_MoveDown, Down, new string[] { "" }));
(LocalizationManager.RightLang.ConfigWindow_Actions_MoveDown, Down, new string[] { "" }),
(LocalizationManager.RightLang.ConfigWindow_Actions_Copy, Copy, new string[] { "Ctrl" }));

DrawCondition(condition.IsTrue(rotation));

ImGuiHelper.ExecuteHotKeysPopup(key, string.Empty, string.Empty, true,
(Delete, new VirtualKey[] { VirtualKey.DELETE }),
(Up, new VirtualKey[] { VirtualKey.UP }),
(Down, new VirtualKey[] { VirtualKey.DOWN }));

(Down, new VirtualKey[] { VirtualKey.DOWN }),
(Copy, new VirtualKey[] { VirtualKey.CONTROL }));

ImGui.SameLine();

condition.Draw(rotation);
Expand All @@ -574,7 +583,7 @@ void AddButton()
}

using var popUp = ImRaii.Popup("Popup" + conditionSet.GetHashCode().ToString());
if (popUp.Success)
if (popUp)
{
AddOneCondition<ConditionSet>(LocalizationManager.RightLang.ActionSequencer_ConditionSet);
AddOneCondition<ActionCondition>(LocalizationManager.RightLang.ActionSequencer_ActionCondition);
Expand All @@ -583,6 +592,20 @@ void AddButton()
AddOneCondition<RotationCondition>(LocalizationManager.RightLang.ActionSequencer_RotationCondition);
AddOneCondition<NamedCondition>(LocalizationManager.RightLang.ActionSequencer_NamedCondition);
AddOneCondition<TerritoryCondition>(LocalizationManager.RightLang.ActionSequencer_TerritoryCondition);
if (ImGui.Selectable(LocalizationManager.RightLang.ActionSequencer_FromClipboard))
{
var str = ImGui.GetClipboardText();
try
{
var set = JsonConvert.DeserializeObject<ICondition>(str, new IConditionConverter());
conditionSet.Conditions.Add(set);
}
catch (Exception ex)
{
Svc.Log.Warning(ex, "Failed to load the condition.");
}
ImGui.CloseCurrentPopup();
}
}

void AddOneCondition<T>(string name) where T : ICondition
Expand Down
25 changes: 14 additions & 11 deletions RotationSolver/Updaters/TargetUpdater.cs
Original file line number Diff line number Diff line change
Expand Up @@ -145,17 +145,19 @@ private unsafe static void UpdateHostileTargets(IEnumerable<BattleChara> allTarg
DataCenter.MobsTime = DataCenter.HostileTargets.Count(o => o.DistanceToPlayer() <= JobRange && o.CanSee())
>= Service.Config.GetValue(PluginConfigInt.AutoDefenseNumber);

if (DataCenter.HostileTargets.Count() == 1)
{
var tar = DataCenter.HostileTargets.FirstOrDefault();

DataCenter.IsHostileCastingToTank = IsHostileCastingTank(tar);
DataCenter.IsHostileCastingAOE = IsHostileCastingArea(tar);
}
else
{
DataCenter.IsHostileCastingToTank = DataCenter.IsHostileCastingAOE = false;
}
DataCenter.IsHostileCastingToTank = DataCenter.HostileTargets.Any(IsHostileCastingTank);
DataCenter.IsHostileCastingAOE = DataCenter.HostileTargets.Any(IsHostileCastingArea);
//if (DataCenter.HostileTargets.Count() == 1)
//{
// var tar = DataCenter.HostileTargets.FirstOrDefault();

// DataCenter.IsHostileCastingToTank = IsHostileCastingTank(tar);
// DataCenter.IsHostileCastingAOE = IsHostileCastingArea(tar);
//}
//else
//{
// DataCenter.IsHostileCastingToTank = DataCenter.IsHostileCastingAOE = false;
//}

DataCenter.CanProvoke = _provokeDelay.Delay(TargetFilter.ProvokeTarget(DataCenter.HostileTargets, true).Count() != DataCenter.HostileTargets.Count());
}
Expand Down Expand Up @@ -240,6 +242,7 @@ private static bool IsHostileCastingTank(BattleChara h)

private static bool IsHostileCastingArea(BattleChara h)
{
//TODO: Add some stack effects here!
return IsHostileCastingBase(h, (act) =>
{
return OtherConfiguration.HostileCastingArea.Contains(act.RowId);
Expand Down
12 changes: 10 additions & 2 deletions RotationSolver/Watcher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,11 @@ public static void Enable()
DataCenter.MapEffects.TryDequeue(out _);
}
DataCenter.MapEffects.Enqueue(new MapEffectData(position, param1, param2));
var effect = new MapEffectData(position, param1, param2);
DataCenter.MapEffects.Enqueue(effect);
#if DEBUG
Svc.Log.Debug(effect.ToString());
#endif
});
}

Expand All @@ -78,7 +82,11 @@ private static unsafe long ProcessObjectEffectDetour(GameObject* a1, ushort a2,
DataCenter.ObjectEffects.TryDequeue(out _);
}

DataCenter.ObjectEffects.Enqueue(new ObjectEffectData(a1->ObjectID, a2, a3));
var effect = new ObjectEffectData(a1->ObjectID, a2, a3);
DataCenter.ObjectEffects.Enqueue(effect);
#if DEBUG
Svc.Log.Debug(effect.ToString());
#endif
}
catch (Exception e)
{
Expand Down

0 comments on commit e02234c

Please sign in to comment.