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

Commit

Permalink
fix: add operators for conditions.
Browse files Browse the repository at this point in the history
  • Loading branch information
ArchiDog1998 committed Nov 5, 2023
1 parent f6d522f commit 561718d
Show file tree
Hide file tree
Showing 4 changed files with 125 additions and 12 deletions.
22 changes: 20 additions & 2 deletions RotationSolver.Basic/Configuration/Conditions/ActionCondition.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,28 @@ protected override bool IsTrueInside(ICustomRotation rotation)
return _action.IsCoolingDown;

case ActionConditionType.CurrentCharges:
return _action.CurrentCharges > Param1;
switch (Param2)
{
case 0:
return _action.CurrentCharges > Param1;
case 1:
return _action.CurrentCharges < Param1;
case 2:
return _action.CurrentCharges == Param1;
}
break;

case ActionConditionType.MaxCharges:
return _action.MaxCharges > Param1;
switch (Param2)
{
case 0:
return _action.MaxCharges > Param1;
case 1:
return _action.MaxCharges < Param1;
case 2:
return _action.MaxCharges == Param1;
}
break;
}
return false;
}
Expand Down
83 changes: 75 additions & 8 deletions RotationSolver.Basic/Configuration/Conditions/TargetCondition.cs
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,18 @@ protected override bool IsTrueInside(ICustomRotation rotation)
break;

case TargetConditionType.Distance:
result = tar.DistanceToPlayer() > DistanceOrTime;
switch (Param2)
{
case 0:
result = tar.DistanceToPlayer() > DistanceOrTime;
break;
case 1:
result = tar.DistanceToPlayer() < DistanceOrTime;
break;
case 2:
result = tar.DistanceToPlayer() == DistanceOrTime;
break;
}
break;

case TargetConditionType.StatusEnd:
Expand All @@ -81,7 +92,18 @@ protected override bool IsTrueInside(ICustomRotation rotation)
break;

case TargetConditionType.TimeToKill:
result = tar.GetTimeToKill() > DistanceOrTime;
switch (Param2)
{
case 0:
result = tar.GetTimeToKill() > DistanceOrTime;
break;
case 1:
result = tar.GetTimeToKill() < DistanceOrTime;
break;
case 2:
result = tar.GetTimeToKill() == DistanceOrTime;
break;
}
break;

case TargetConditionType.CastingAction:
Expand All @@ -96,7 +118,7 @@ protected override bool IsTrueInside(ICustomRotation rotation)
result = CastingActionName == castName;
break;

case TargetConditionType.CastingActionTimeUntil:
case TargetConditionType.CastingActionTime:

if (!tar.IsCasting || tar.CastActionId == 0)
{
Expand All @@ -105,19 +127,64 @@ protected override bool IsTrueInside(ICustomRotation rotation)
}

float castTime = tar.TotalCastTime - tar.CurrentCastTime;
result = castTime > DistanceOrTime + DataCenter.WeaponRemain;

switch (Param2)
{
case 0:
result = castTime > DistanceOrTime + DataCenter.WeaponRemain;
break;
case 1:
result = castTime < DistanceOrTime + DataCenter.WeaponRemain;
break;
case 2:
result = castTime == DistanceOrTime + DataCenter.WeaponRemain;
break;
}
break;

case TargetConditionType.HP:
result = tar.CurrentHp > GCD;
switch (Param2)
{
case 0:
result = tar.CurrentHp > GCD;
break;
case 1:
result = tar.CurrentHp < GCD;
break;
case 2:
result = tar.CurrentHp == GCD;
break;
}
break;

case TargetConditionType.HPRatio:
result = tar.GetHealthRatio() > DistanceOrTime;
switch (Param2)
{
case 0:
result = tar.GetHealthRatio() > DistanceOrTime;
break;
case 1:
result = tar.GetHealthRatio() < DistanceOrTime;
break;
case 2:
result = tar.GetHealthRatio() == DistanceOrTime;
break;
}
break;

case TargetConditionType.MP:
result = tar.CurrentMp > GCD;
switch (Param2)
{
case 0:
result = tar.CurrentMp > GCD;
break;
case 1:
result = tar.CurrentMp < GCD;
break;
case 2:
result = tar.CurrentMp == GCD;
break;
}
break;

case TargetConditionType.TargetName:
Expand Down Expand Up @@ -185,7 +252,7 @@ internal enum TargetConditionType : byte
StatusEnd,
StatusEndGCD,
CastingAction,
CastingActionTimeUntil,
CastingActionTime,
TimeToKill,
HP,
HPRatio,
Expand Down
2 changes: 1 addition & 1 deletion RotationSolver/Localization/EnumTranslations.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ internal static class EnumTranslations
TargetConditionType.StatusEnd => LocalizationManager.RightLang.TargetConditionType_StatusEnd,
TargetConditionType.StatusEndGCD => LocalizationManager.RightLang.TargetConditionType_StatusEndGCD,
TargetConditionType.CastingAction => LocalizationManager.RightLang.TargetConditionType_CastingAction,
TargetConditionType.CastingActionTimeUntil => LocalizationManager.RightLang.TargetConditionType_CastingActionTimeUntil,
TargetConditionType.CastingActionTime => LocalizationManager.RightLang.TargetConditionType_CastingActionTimeUntil,
TargetConditionType.TimeToKill => LocalizationManager.RightLang.TargetConditionType_TimeToKill,
TargetConditionType.HP => LocalizationManager.RightLang.TargetConditionType_HP,
TargetConditionType.HPRatio => LocalizationManager.RightLang.TargetConditionType_HPRatio,
Expand Down
30 changes: 29 additions & 1 deletion RotationSolver/UI/ConditionDrawer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -477,6 +477,10 @@ private static void DrawAfter(this ActionCondition actionCondition, ICustomRotat

case ActionConditionType.CurrentCharges:
case ActionConditionType.MaxCharges:
ImGuiHelper.SelectableCombo($"##Comparation{actionCondition.GetHashCode()}", new string[] { ">", "<", "=" }, ref actionCondition.Param2);

ImGui.SameLine();

if (DrawDragInt($"{LocalizationManager.RightLang.ActionSequencer_Charges}##Charges{actionCondition.GetHashCode()}", ref actionCondition.Param1))
{
actionCondition.Param1 = Math.Max(0, actionCondition.Param1);
Expand Down Expand Up @@ -822,6 +826,10 @@ void DrawStatusIcon()
targetCondition.FromSelf = check != 0;
}

ImGui.SameLine();

ImGuiHelper.SelectableCombo($"##Comparation{targetCondition.GetHashCode()}", new string[] { ">", "<", "=" }, ref targetCondition.Param2);

DrawDragFloat($"s##Seconds{targetCondition.GetHashCode()}", ref targetCondition.DistanceOrTime);
break;

Expand All @@ -847,6 +855,10 @@ void DrawStatusIcon()
break;

case TargetConditionType.Distance:
ImGui.SameLine();

ImGuiHelper.SelectableCombo($"##Comparation{targetCondition.GetHashCode()}", new string[] { ">", "<", "=" }, ref targetCondition.Param2);

if (DrawDragFloat($"yalm##yalm{targetCondition.GetHashCode()}", ref targetCondition.DistanceOrTime))
{
targetCondition.DistanceOrTime = Math.Max(0, targetCondition.DistanceOrTime);
Expand All @@ -859,26 +871,42 @@ void DrawStatusIcon()
ImGui.InputText($"Ability Name##CastingActionName{targetCondition.GetHashCode()}", ref targetCondition.CastingActionName, 128);
break;

case TargetConditionType.CastingActionTimeUntil:
case TargetConditionType.CastingActionTime:
ImGui.SameLine();

ImGuiHelper.SelectableCombo($"##Comparation{targetCondition.GetHashCode()}", new string[] { ">", "<", "=" }, ref targetCondition.Param2);

ImGui.SameLine();
ImGui.SetNextItemWidth(Math.Max(150 * ImGuiHelpers.GlobalScale, ImGui.CalcTextSize(targetCondition.DistanceOrTime.ToString()).X));
ImGui.DragFloat($"s##CastingActionTimeUntil{targetCondition.GetHashCode()}", ref targetCondition.DistanceOrTime, .1f);
break;

case TargetConditionType.HPRatio:
ImGui.SameLine();

ImGuiHelper.SelectableCombo($"##Comparation{targetCondition.GetHashCode()}", new string[] { ">", "<", "=" }, ref targetCondition.Param2);

ImGui.SameLine();
ImGui.SetNextItemWidth(Math.Max(150 * ImGuiHelpers.GlobalScale, ImGui.CalcTextSize(targetCondition.DistanceOrTime.ToString()).X));
ImGui.DragFloat($"##HPRatio{targetCondition.GetHashCode()}", ref targetCondition.DistanceOrTime, .1f);
break;

case TargetConditionType.MP:
case TargetConditionType.HP:
ImGui.SameLine();

ImGuiHelper.SelectableCombo($"##Comparation{targetCondition.GetHashCode()}", new string[] { ">", "<", "=" }, ref targetCondition.Param2);

ImGui.SameLine();
ImGui.SetNextItemWidth(Math.Max(150 * ImGuiHelpers.GlobalScale, ImGui.CalcTextSize(targetCondition.GCD.ToString()).X));
ImGui.DragInt($"##HPorMP{targetCondition.GetHashCode()}", ref targetCondition.GCD, .1f);
break;

case TargetConditionType.TimeToKill:
ImGui.SameLine();

ImGuiHelper.SelectableCombo($"##Comparation{targetCondition.GetHashCode()}", new string[] { ">", "<", "=" }, ref targetCondition.Param2);

ImGui.SameLine();
ImGui.SetNextItemWidth(Math.Max(150 * ImGuiHelpers.GlobalScale, ImGui.CalcTextSize(targetCondition.DistanceOrTime.ToString()).X));
ImGui.DragFloat($"##TimeToKill{targetCondition.GetHashCode()}", ref targetCondition.DistanceOrTime, .1f);
Expand Down

0 comments on commit 561718d

Please sign in to comment.