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

Commit

Permalink
fix: timeline fixing.
Browse files Browse the repository at this point in the history
  • Loading branch information
ArchiDog1998 committed Mar 7, 2024
1 parent 7a441f0 commit ee534f0
Show file tree
Hide file tree
Showing 15 changed files with 97 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,13 @@ public override bool InPeriod(TimelineItem item)
if (time < 0) return false;

if (time > Time || Time - time > 3) return false;

if (!Condition.IsTrue(item)) return false;

return true;
}

protected override void OnEnable()
internal override void OnEnable()
{
var act = DataCenter.RightNowRotation?.AllBaseActions.FirstOrDefault(a => (ActionID)a.ID == ID);

Expand Down
10 changes: 7 additions & 3 deletions RotationSolver.Basic/Configuration/Timeline/BaseTimelineItem.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
namespace RotationSolver.Basic.Configuration.Timeline;
using RotationSolver.Basic.Configuration.Timeline.TimelineCondition;

namespace RotationSolver.Basic.Configuration.Timeline;

internal abstract class BaseTimelineItem
{
public TimelineConditionSet Condition { get; set; } = new();

public float Time { get; set; } = 3;
private bool _enable = false;
internal bool Enable
Expand All @@ -24,6 +28,6 @@ internal bool Enable
}
public abstract bool InPeriod(TimelineItem item);

protected virtual void OnEnable() { }
protected virtual void OnDisable() { }
internal virtual void OnEnable() { }
internal virtual void OnDisable() { }
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ internal class DrawingTimeline : BaseTimelineItem
{
public float Duration { get; set; } = 5;

public TimelineConditionSet Condition { get; set; } = new();
public List<IDrawingGetter> DrawingGetters { get; set; } = [];

private IDisposable[] _drawings = [];
Expand All @@ -31,7 +30,7 @@ public override bool InPeriod(TimelineItem item)
return true;
}

protected override void OnEnable()
internal override void OnEnable()
{
foreach (var item in _drawings)
{
Expand All @@ -46,7 +45,7 @@ protected override void OnEnable()
base.OnEnable();
}

protected override void OnDisable()
internal override void OnDisable()
{
foreach (var item in _drawings)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,13 @@ public override bool InPeriod(TimelineItem item)
if (time < 0) return false;

if (time > Time || Time - time > 3) return false;

if (!Condition.IsTrue(item)) return false;

return true;
}

protected override void OnEnable()
internal override void OnEnable()
{
if (!string.IsNullOrEmpty(Macro))
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,23 @@ public override bool InPeriod(TimelineItem item)
if (time < 0) return false;

if (time > Time || Time - time > 3) return false;

if (!Condition.IsTrue(item)) return false;

return true;
}

protected override void OnEnable()
internal override void OnEnable()
{
base.OnEnable();

var ipc = Svc.PluginInterface.GetIpcSubscriber<List<Vector3>, bool, object>("vnavmesh.Path.MoveTo");

if(ipc == null)
if (ipc == null)
{
Svc.Log.Error("Can't find the vnavmesh to move.");
return;
}
ipc.InvokeAction(Points, false);
ipc.InvokeAction(new (Points), false);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,13 @@ public override bool InPeriod(TimelineItem item)
if (time < 0) return false;

if (time > Time || Time - time > 3) return false;

if (!Condition.IsTrue(item)) return false;

return true;
}

protected override void OnEnable()
internal override void OnEnable()
{
DataCenter.SpecialType = State;
#if DEBUG
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
namespace RotationSolver.Basic.Configuration.Timeline.TimelineCondition;

[Description("Action Condition")]
internal class TimelineConditionAction : ITimelineCondition
{
public uint ActionID { get; set; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace RotationSolver.Basic.Configuration.Timeline.TimelineCondition;

[Description("Condition Set")]
internal class TimelineConditionSet : ITimelineCondition
{
public List<ITimelineCondition> Conditions { get; set; } = [];
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
using ECommons.DalamudServices;

namespace RotationSolver.Basic.Configuration.Timeline.TimelineCondition;

[Description("Target Count Condition")]
internal class TimelineConditionTargetCount : ITimelineCondition
{
public int Count { get; set; }
Expand Down
6 changes: 5 additions & 1 deletion RotationSolver/Localization/Localization.json
Original file line number Diff line number Diff line change
Expand Up @@ -376,5 +376,9 @@
"RotationSolver.Basic.Configuration.Timeline.TimelineCondition.ObjectType.BattleCharactor": "BattleCharactor",
"RotationSolver.Basic.Configuration.Timeline.TimelineCondition.ObjectType.PlayerCharactor": "PlayerCharactor",
"RotationSolver.Basic.Configuration.Timeline.TimelineCondition.ObjectType.Myself": "Myself",
"RotationSolver.Basic.Configuration.Timeline.MacroTimelineItem": "Macro Time line"
"RotationSolver.Basic.Configuration.Timeline.MacroTimelineItem": "Macro Time line",
"RotationSolver.Basic.Configuration.Timeline.MoveTimelineItem": "Move Time line",
"RotationSolver.Basic.Configuration.Timeline.TimelineCondition.TimelineConditionSet": "RotationSolver.Basic.Configuration.Timeline.TimelineCondition.TimelineConditionSet",
"RotationSolver.Basic.Configuration.Timeline.TimelineCondition.TimelineConditionAction": "RotationSolver.Basic.Configuration.Timeline.TimelineCondition.TimelineConditionAction",
"RotationSolver.Basic.Configuration.Timeline.TimelineCondition.TimelineConditionTargetCount": "RotationSolver.Basic.Configuration.Timeline.TimelineCondition.TimelineConditionTargetCount"
}
21 changes: 1 addition & 20 deletions RotationSolver/RotationSolverPlugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -98,26 +98,7 @@ public RotationSolverPlugin(DalamudPluginInterface pluginInterface)
#if DEBUG
if (Player.Available)
{
Task.Run(async () =>
{
var player = Player.Object;
var target = Svc.Targets.Target ?? player;

foreach (var str in Svc.Data.GetExcelSheet<Lumina.Excel.GeneratedSheets2.Lockon>()!.Select(i => i.Unknown0.RawString))
{
using var i = new ActorVfx(str.LockOn(), player, target);
Svc.Toasts.ShowError(str);
await Task.Delay(5000);
}

Svc.Toasts.ShowQuest("That's All Lock On!", new Dalamud.Game.Gui.Toast.QuestToastOptions()
{
DisplayCheckmark = true,
PlaySound = true,
});
});

_ = XIVPainterMain.ShowOff();
//_ = XIVPainterMain.ShowOff();
}
#endif
}
Expand Down
15 changes: 13 additions & 2 deletions RotationSolver/UI/ConditionDrawer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -109,9 +109,20 @@ public static bool DrawDragFloat2(ConfigUnitType type, string name, ref Vector2
return result;
}

public static bool DrawDragFloat3(ConfigUnitType type, string name, ref Vector3 value, string id, string name1, string name2, string name3)
public static bool DrawDragFloat3(ConfigUnitType type, string name, ref Vector3 value, string id, string name1, string name2, string name3, Func<Vector3>? func = null)
{
ImGui.Text(name);
if(func == null)
{
ImGui.Text(name);
}
else
{
if(ImGui.Button(name + "##" + id))
{
value = func();
}
}

id = "##" + id;
var result = DrawDragFloat(type, name1 + id, ref value.X);
result |= DrawDragFloat(type, name2 + id, ref value.Y);
Expand Down
1 change: 1 addition & 0 deletions RotationSolver/UI/ImGuiHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@ public static unsafe bool SelectableCombo(string popUp, string[] items, ref int
ImGui.SetMouseCursor(ImGuiMouseCursor.Hand);
}

ImGui.SetNextWindowSizeConstraints(Vector2.Zero, Vector2.One * 500);
if (ImGui.BeginPopup(popUp))
{
for (int i = 0; i < count; i++)
Expand Down
57 changes: 44 additions & 13 deletions RotationSolver/UI/TimelineDrawer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
using RotationSolver.Basic.Configuration.Timeline;
using RotationSolver.Basic.Configuration.Timeline.TimelineCondition;
using RotationSolver.Basic.Configuration.Timeline.TimelineDrawing;
using RotationSolver.Basic.Data;
using RotationSolver.Data;
using RotationSolver.Localization;
using RotationSolver.Updaters;
Expand Down Expand Up @@ -153,6 +154,10 @@ static string GetName(TerritoryType? territory)

for (int i = 0; i < timeLineItems.Count; i++)
{
if (i != 0)
{
ImGui.Separator();
}
var timeLineItem = timeLineItems[i];

void Delete()
Expand All @@ -172,25 +177,38 @@ void Down()
timeLineItems.Insert(Math.Min(timeLineItems.Count, i + 1), timeLineItem);
}

void Execute()
{
Task.Run(async () =>
{
timeLineItem.OnEnable();
await Task.Delay(3000);
timeLineItem.OnDisable();
});
}

var key = $"TimelineItem Pop Up: {timeLineItem.GetHashCode()}";

ImGuiHelper.DrawHotKeysPopup(key, string.Empty,
(UiString.ConfigWindow_List_Remove.Local(), Delete, ["Delete"]),
(UiString.ConfigWindow_Actions_MoveUp.Local(), Up, ["↑"]),
(UiString.ConfigWindow_Actions_MoveDown.Local(), Down, ["↓"]));
(UiString.ConfigWindow_Actions_MoveDown.Local(), Down, ["↓"]),
("Execute", Execute, ["→"]));

ConditionDrawer.DrawCondition(timeLineItem.InPeriod(item));

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

ImGui.SameLine();

using var grp = ImRaii.Group();

DrawTimelineItem(timeLineItem, item);

}

ImGui.TableNextRow();
Expand Down Expand Up @@ -270,13 +288,14 @@ private static void DrawTimelineItem(BaseTimelineItem timeLineItem, TimelineItem
ImGui.SameLine();

var macro = macroItem.Macro;
if (ImGui.InputTextMultiline("Macro: ##" + macroItem.GetHashCode(), ref macro, 500, Vector2.One * -1))
if (ImGui.InputTextMultiline("Macro: ##" + macroItem.GetHashCode(), ref macro, 500, new Vector2( -1, 50)))
{
macroItem.Macro = macro;
}
}
else if (timeLineItem is MoveTimelineItem moveItem)
{
ImGui.SameLine();
if (ImGuiEx.IconButton(FontAwesomeIcon.Plus, "AddPoint" + moveItem.GetHashCode())
&& Player.Available)
{
Expand Down Expand Up @@ -313,7 +332,7 @@ void Down()

if (IconSet.GetTexture(10, out var texture))
{
if (ImGuiHelper.NoPaddingNoColorImageButton(texture.ImGuiHandle, ConditionDrawer.IconSize * Vector2.One, "Position " + i))
if (ImGuiHelper.NoPaddingNoColorImageButton(texture.ImGuiHandle, ConditionDrawer.IconSize * Vector2.One, "Position " + moveItem.GetHashCode() + i))
{
if (_previewItems == null)
{
Expand All @@ -336,8 +355,18 @@ void Down()
(Down, [VirtualKey.DOWN]));

ImGui.SameLine();

if (ConditionDrawer.DrawDragFloat3(ConfigUnitType.Yalms, "Position", ref point, "Pos" + moveItem.GetHashCode(), "X", "Y", "Z", () => Player.Object?.Position ?? default))
{
moveItem.Points[i] = point;
}
}
}

ImGui.Spacing();
ImGui.Spacing();

TimelineConditionDraw(timeLineItem.Condition, item);
}

private static void DrawDrawingTimeline(DrawingTimeline drawingItem, TimelineItem timelineItem)
Expand All @@ -354,6 +383,10 @@ private static void DrawDrawingTimeline(DrawingTimeline drawingItem, TimelineIte

for (int i = 0; i < drawingItem.DrawingGetters.Count; i++)
{
if(i != 0)
{
ImGui.Spacing();
}
var item = drawingItem.DrawingGetters[i];

void Delete()
Expand Down Expand Up @@ -409,11 +442,6 @@ void Down()
DrawingGetterDraw(item, timelineItem.ActionIDs);
}

ImGui.Spacing();
ImGui.Spacing();

TimelineConditionDraw(drawingItem.Condition, timelineItem);

void AddButton()
{
if (ImGuiEx.IconButton(FontAwesomeIcon.Plus, "AddDrawingButton" + drawingItem.GetHashCode()))
Expand Down Expand Up @@ -633,7 +661,7 @@ private static void DrawingGetterDraw(IDrawingGetter drawing, uint[] actionIds)
}

var pos = staticDrawing.Position;
if (ConditionDrawer.DrawDragFloat3(ConfigUnitType.Yalms, "Position: ", ref pos, drawing.GetHashCode().ToString() + "Position", "X", "Y", "Z"))
if (ConditionDrawer.DrawDragFloat3(ConfigUnitType.Yalms, "Position: ", ref pos, drawing.GetHashCode().ToString() + "Position", "X", "Y", "Z", () => Player.Object?.Position ?? default))
{
staticDrawing.Position = pos;
}
Expand Down Expand Up @@ -678,7 +706,7 @@ private static void DrawingGetterDraw(IDrawingGetter drawing, uint[] actionIds)
}

var pos = objectDrawing.Position;
if (ConditionDrawer.DrawDragFloat3(ConfigUnitType.Yalms, "Position: ", ref pos, drawing.GetHashCode().ToString() + "Position", "X", "Y", "Z"))
if (ConditionDrawer.DrawDragFloat3(ConfigUnitType.Yalms, "Position: ", ref pos, drawing.GetHashCode().ToString() + "Position", "X", "Y", "Z", () => Player.Object?.Position ?? default))
{
objectDrawing.Position = pos;
}
Expand Down Expand Up @@ -739,7 +767,7 @@ private static void DrawingGetterDraw(IDrawingGetter drawing, uint[] actionIds)
}

var pos = actionDrawing.Position;
if (ConditionDrawer.DrawDragFloat3(ConfigUnitType.Yalms, "Position: ", ref pos, drawing.GetHashCode().ToString(), "X", "Y", "Z"))
if (ConditionDrawer.DrawDragFloat3(ConfigUnitType.Yalms, "Position: ", ref pos, drawing.GetHashCode().ToString(), "X", "Y", "Z", () => Player.Object?.Position ?? default))
{
actionDrawing.Position = pos;
}
Expand All @@ -763,7 +791,7 @@ private static void DrawingGetterDraw(IDrawingGetter drawing, uint[] actionIds)
private static Status[]? _badStatus = null;
internal static Status[] BadStatus
=> _badStatus ??= Service.GetSheet<Status>()
.Where(s => s.StatusCategory == 2)
.Where(s => s.StatusCategory == 2 && s.Icon != 0)
.ToArray();

private static void DrawObjectGetter(ObjectGetter getter, string getterName)
Expand Down Expand Up @@ -857,11 +885,13 @@ private static void DrawObjectGetter(ObjectGetter getter, string getterName)
}

var vfx = getter.VfxPath;
ImGui.SetNextItemWidth(300 * Scale);
if (ImGui.InputText("Vfx ## " + getter.GetHashCode(), ref vfx, 256))
{
getter.VfxPath = vfx;
}

ImGui.NewLine();
var param = (int)getter.ObjectEffect1;
if (ConditionDrawer.DrawDragInt("Effect Param1##" + getter.GetHashCode(), ref param))
{
Expand All @@ -878,6 +908,7 @@ private static void DrawObjectGetter(ObjectGetter getter, string getterName)
private static void DrawTextDrawing(TextDrawing textDrawing, string name)
{
var text = textDrawing.Text;
ImGui.SetNextItemWidth(300 * Scale);
if (ImGui.InputText(name + "##" + textDrawing.GetHashCode(), ref text, 256))
{
textDrawing.Text = text;
Expand Down
Loading

0 comments on commit ee534f0

Please sign in to comment.