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

Commit

Permalink
fix: add min/max value.
Browse files Browse the repository at this point in the history
  • Loading branch information
ArchiDog1998 committed Aug 13, 2023
1 parent a46957e commit 58ac6cf
Show file tree
Hide file tree
Showing 6 changed files with 166 additions and 114 deletions.
137 changes: 92 additions & 45 deletions RotationSolver.Basic/Configuration/Configs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,19 +50,62 @@ public Vector4 GetDefault(PluginConfigVector4 config)
=> GlobalConfig.Vectors.GetDefault(config);

public void SetValue(Job job, JobConfigInt config, int value)
=> GetJobConfig(job).Ints.SetValue(config, value);
{
var attr = config.GetAttribute<DefaultAttribute>();
if(attr != null)
{
var min = attr.Min; var max = attr.Max;
if(min != null && max != null)
{
value = Math.Min(Math.Max(value, (int)min), (int)max);
}
}
GetJobConfig(job).Ints.SetValue(config, value);
}

public void SetValue(Job job, JobConfigFloat config, float value)
=> GetJobConfig(job).Floats.SetValue(config, value);
{
var attr = config.GetAttribute<DefaultAttribute>();
if (attr != null)
{
var min = attr.Min; var max = attr.Max;
if (min != null && max != null)
{
value = MathF.Min(MathF.Max(value, (float)min), (float)max);
}
}
GetJobConfig(job).Floats.SetValue(config, value);
}

public void SetValue(PluginConfigInt config, int value)
=> GlobalConfig.Ints.SetValue(config, value);

{
var attr = config.GetAttribute<DefaultAttribute>();
if (attr != null)
{
var min = attr.Min; var max = attr.Max;
if (min != null && max != null)
{
value = Math.Min(Math.Max(value, (int)min), (int)max);
}
}
GlobalConfig.Ints.SetValue(config, value);
}
public void SetValue(PluginConfigBool config, bool value)
=> GlobalConfig.Bools.SetValue(config, value);

public void SetValue(PluginConfigFloat config, float value)
=> GlobalConfig.Floats.SetValue(config, value);
{
var attr = config.GetAttribute<DefaultAttribute>();
if (attr != null)
{
var min = attr.Min; var max = attr.Max;
if (min != null && max != null)
{
value = MathF.Min(MathF.Max(value, (float)min), (float)max);
}
}
GlobalConfig.Floats.SetValue(config, value);
}

public void SetValue(PluginConfigVector4 config, Vector4 value)
=> GlobalConfig.Vectors.SetValue(config, value);
Expand Down Expand Up @@ -91,7 +134,7 @@ public enum JobConfigInt : byte
{
//TODO : Type binding by jobs.
[Default(2)] HostileType,
[Default(2)] AddDotGCDCount,
[Default(2, 0, 3)] AddDotGCDCount,
}

public enum JobConfigFloat : byte
Expand Down Expand Up @@ -146,15 +189,15 @@ public enum PluginConfigInt : byte
{
[Default(0)] ActionSequencerIndex,
[Default(0)] PoslockModifier,
[Default(0)] LessMPNoRaise,
[Default(2)] KeyBoardNoiseMin,
[Default(0, 0, 10000)] LessMPNoRaise,
[Default(2, 0, 5)] KeyBoardNoiseMin,
[Default(3)] KeyBoardNoiseMax,

[Default(0)] TargetingIndex,

[Obsolete]
[Default(15)] CooldownActionOneLine,
[Default(0)] MoveTargetAngle
[Default(15, 1, 30)] CooldownActionOneLine,
[Default(0, 0, 100)] MoveTargetAngle
}

public enum PluginConfigBool : byte
Expand Down Expand Up @@ -260,74 +303,74 @@ public enum PluginConfigBool : byte

public enum PluginConfigFloat : byte
{
[Default(8f)] AutoOffAfterCombat,
[Default(3f)] DrawingHeight,
[Default(0.2f)] SampleLength,
[Default(8f, 0f, 10f)] AutoOffAfterCombat,
[Default(3f, 0f, 8f)] DrawingHeight,
[Default(0.2f, 0.005f, 0.05f)] SampleLength,
[Default(0.1f)] KeyBoardNoiseTimeMin,
[Default(0.2f)] KeyBoardNoiseTimeMax,

[Default(0.25f)] HealthDifference,
[Default(1f)] MeleeRangeOffset,
[Default(0.1f)] MinLastAbilityAdvanced,
[Default(0.8f)] HealWhenNothingTodoBelow,
[Default(0.6f)] TargetIconSize,
[Default(0.25f, 0f, 0.5f)] HealthDifference,
[Default(1f, 0f, 5f)] MeleeRangeOffset,
[Default(0.1f, 0f, 0.4f)] MinLastAbilityAdvanced,
[Default(0.8f, 0f, 1f)] HealWhenNothingTodoBelow,
[Default(0.6f, 0f, 1f)] TargetIconSize,

[Default(0f)] MistakeRatio,
[Default(0f, 0f, 1f)] MistakeRatio,

[Default(0.4f)] HealthTankRatio,
[Default(0.4f)] HealthHealerRatio,
[Default(0.4f, 0f, 1f)] HealthTankRatio,
[Default(0.4f, 0f, 1f)] HealthHealerRatio,

[Default(3f)] SpecialDuration,
[Default(3f, 1f, 20f)] SpecialDuration,

[Default(0.08f)] ActionAhead,
[Default(0.08f, 0f, 0.5f)] ActionAhead,
[Default(0.06f)] ActionAheadForLast0GCD,

[Default(0f)] WeaponDelayMin,
[Default(0f, 0f, 1f)] WeaponDelayMin,
[Default(0f)] WeaponDelayMax,

[Default(1f)] DeathDelayMin,
[Default(1f, 0f, 3f)] DeathDelayMin,
[Default(1.5f)] DeathDelayMax,

[Default(0.5f)] WeakenDelayMin,
[Default(0.5f, 0f, 3f)] WeakenDelayMin,
[Default(1f)] WeakenDelayMax,

[Default(0f)] HostileDelayMin,
[Default(0f, 0f, 3f)] HostileDelayMin,
[Default(0f)] HostileDelayMax,

[Default(0f)] HealDelayMin,
[Default(0f, 0f, 3f)] HealDelayMin,
[Default(0f)] HealDelayMax,

[Default(0.5f)] StopCastingDelayMin,
[Default(0.5f, 0f, 3f)] StopCastingDelayMin,
[Default(1f)] StopCastingDelayMax,

[Default(0.5f)] InterruptDelayMin,
[Default(0.5f, 0f, 3f)] InterruptDelayMin,
[Default(1f)] InterruptDelayMax,

[Default(3f)] NotInCombatDelayMin,
[Default(3f, 0f, 10f)] NotInCombatDelayMin,
[Default(4f)] NotInCombatDelayMax,

[Default(0.1f)] ClickingDelayMin,
[Default(0.1f, 0.05f, 0.25f)] ClickingDelayMin,
[Default(0.15f)] ClickingDelayMax,

[Default(0.5f)] CountdownDelayMin,
[Default(0.5f, 0f, 3f)] CountdownDelayMin,
[Default(1f)] CountdownDelayMax,

[Default(0.6f)] CountDownAhead,
[Default(0.6f, 0.5f, 0.7f)] CountDownAhead,

[Default(24f)] MoveTargetAngle,
[Default(1.85f)] HealthRatioBoss,
[Default(0.8f)] HealthRatioDying,
[Default(1.2f)] HealthRatHealthRatioDotioBoss,
[Default(1.85f, 0f, 10f)] HealthRatioBoss,
[Default(0.8f, 0f, 10f)] HealthRatioDying,
[Default(1.2f, 0f, 10f)] HealthRatHealthRatioDotioBoss,

[Default(16f)] CooldownFontSize,
[Default(16f, 9.6f, 96f)] CooldownFontSize,

[Default(40f)] ControlWindowGCDSize,
[Default(30f)] ControlWindow0GCDSize,
[Default(30f)] CooldownWindowIconSize,
[Default(1.5f)] ControlWindowNextSizeRatio,
[Default(40f, 0f, 80f)] ControlWindowGCDSize,
[Default(30f, 0f, 80f)] ControlWindow0GCDSize,
[Default(30f, 0f, 80f)] CooldownWindowIconSize,
[Default(1.5f, 0f, 10f)] ControlWindowNextSizeRatio,
[Default(8f)] ControlProgressHeight,
[Default(1.2f)] DistanceForMoving,
[Default(0.2f)] MaxPing,
[Default(1.2f, 0f, 30f)] DistanceForMoving,
[Default(0.2f, 0.01f, 0.5f)] MaxPing,

[Default(1.8f)] HealthRatioDot,

Expand All @@ -348,10 +391,14 @@ public enum PluginConfigVector4 : byte
[AttributeUsage(AttributeTargets.Field)] public class DefaultAttribute : Attribute
{
public object Default { get; set; }
public object Min { get; set; }
public object Max { get; set; }

public DefaultAttribute(object @default)
public DefaultAttribute(object @default, object min = null, object max = null)
{
Default = @default;
Min = min;
Max = max;
}
}

Expand Down
85 changes: 42 additions & 43 deletions RotationSolver/UI/RotationConfigWindowNew_Config.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
using F23.StringSimilarity;
using RotationSolver.Basic.Configuration;
using RotationSolver.Localization;
using RotationSolver.UI.SearchableConfigs;
using RotationSolver.UI.SearchableSettings;

Expand Down Expand Up @@ -51,23 +50,23 @@ private static ISearchable GetParent(ISearchable searchable)
private static readonly ISearchable[] _basicParamsSearchable = new ISearchable[]
{
new CheckBoxSearchPlugin(PluginConfigBool.UseWorkTask),
new DragIntSearchJob(JobConfigInt.AddDotGCDCount,0,3,1),
new DragFloatSearchPlugin(PluginConfigFloat.ActionAhead, 0, 0.5f, 0.002f),
new DragFloatSearchPlugin(PluginConfigFloat.MinLastAbilityAdvanced, 0, 0.4f, 0.002f),
new DragFloatSearchPlugin(PluginConfigFloat.CountDownAhead, 0.5f, 0.7f, 0.002f),
new DragFloatSearchPlugin(PluginConfigFloat.SpecialDuration, 1.0f, 20.0f, 1f),
new DragFloatSearchPlugin(PluginConfigFloat.MaxPing, 0.01f, 0.5f, 0.002f),
new DragFloatSearchPlugin(PluginConfigFloat.MistakeRatio, 0, 1, 0.002f),

new DragFloatRangeSearchPlugin(PluginConfigFloat.WeaponDelayMin, PluginConfigFloat.WeaponDelayMax, 0, 1f, 0.002f),
new DragFloatRangeSearchPlugin(PluginConfigFloat.HostileDelayMin, PluginConfigFloat.HostileDelayMax, 0, 3, 0.002f),
new DragFloatRangeSearchPlugin(PluginConfigFloat.InterruptDelayMin, PluginConfigFloat.InterruptDelayMax, 0, 3, 0.002f),
new DragFloatRangeSearchPlugin(PluginConfigFloat.DeathDelayMin, PluginConfigFloat.DeathDelayMax, 0, 3, 0.002f),
new DragFloatRangeSearchPlugin(PluginConfigFloat.WeakenDelayMin, PluginConfigFloat.WeakenDelayMax, 0, 3, 0.002f),
new DragFloatRangeSearchPlugin(PluginConfigFloat.HealDelayMin, PluginConfigFloat.HealDelayMin, 0, 3, 0.002f),
new DragFloatRangeSearchPlugin(PluginConfigFloat.CountdownDelayMin, PluginConfigFloat.CountdownDelayMax, 0, 3, 0.002f),
new DragFloatRangeSearchPlugin(PluginConfigFloat.NotInCombatDelayMin, PluginConfigFloat.NotInCombatDelayMax, 0, 3, 0.002f),
new DragFloatRangeSearchPlugin(PluginConfigFloat.ClickingDelayMin, PluginConfigFloat.ClickingDelayMax, 0.05f, 0.25f, 0.002f),
new DragIntSearchJob(JobConfigInt.AddDotGCDCount, 1),
new DragFloatSearchPlugin(PluginConfigFloat.ActionAhead, 0.002f),
new DragFloatSearchPlugin(PluginConfigFloat.MinLastAbilityAdvanced, 0.002f),
new DragFloatSearchPlugin(PluginConfigFloat.CountDownAhead, 0.002f),
new DragFloatSearchPlugin(PluginConfigFloat.SpecialDuration, 1f),
new DragFloatSearchPlugin(PluginConfigFloat.MaxPing, 0.002f),
new DragFloatSearchPlugin(PluginConfigFloat.MistakeRatio, 0.002f),

new DragFloatRangeSearchPlugin(PluginConfigFloat.WeaponDelayMin, PluginConfigFloat.WeaponDelayMax, 0.002f),
new DragFloatRangeSearchPlugin(PluginConfigFloat.HostileDelayMin, PluginConfigFloat.HostileDelayMax, 0.002f),
new DragFloatRangeSearchPlugin(PluginConfigFloat.InterruptDelayMin, PluginConfigFloat.InterruptDelayMax, 0.002f),
new DragFloatRangeSearchPlugin(PluginConfigFloat.DeathDelayMin, PluginConfigFloat.DeathDelayMax, 0.002f),
new DragFloatRangeSearchPlugin(PluginConfigFloat.WeakenDelayMin, PluginConfigFloat.WeakenDelayMax, 0.002f),
new DragFloatRangeSearchPlugin(PluginConfigFloat.HealDelayMin, PluginConfigFloat.HealDelayMin, 0.002f),
new DragFloatRangeSearchPlugin(PluginConfigFloat.CountdownDelayMin, PluginConfigFloat.CountdownDelayMax, 0.002f),
new DragFloatRangeSearchPlugin(PluginConfigFloat.NotInCombatDelayMin, PluginConfigFloat.NotInCombatDelayMax, 0.002f),
new DragFloatRangeSearchPlugin(PluginConfigFloat.ClickingDelayMin, PluginConfigFloat.ClickingDelayMax, 0.002f),
};

// 插件整体控制,如自动开关,模式变换啥的
Expand All @@ -83,7 +82,7 @@ private static ISearchable GetParent(ISearchable searchable)
new CheckBoxSearchPlugin(PluginConfigBool.AutoOffBetweenArea),
new CheckBoxSearchPlugin(PluginConfigBool.AutoOffCutScene),
new CheckBoxSearchPlugin(PluginConfigBool.AutoOffWhenDead),
new DragFloatSearchPlugin(PluginConfigFloat.AutoOffAfterCombat, 0f, 10f, 1f),
new DragFloatSearchPlugin(PluginConfigFloat.AutoOffAfterCombat, 1f),
};

private static readonly CollapsingHeaderGroup _baseHeader = new(new()
Expand Down Expand Up @@ -128,27 +127,27 @@ private static void DrawBasic()
}),
new CheckBoxSearchPlugin(PluginConfigBool.KeyBoardNoise, new ISearchable[]
{
new DragIntRangeSearchPlugin(PluginConfigInt.KeyBoardNoiseMin, PluginConfigInt.KeyBoardNoiseMax, 0, 3, 1)
new DragIntRangeSearchPlugin(PluginConfigInt.KeyBoardNoiseMin, PluginConfigInt.KeyBoardNoiseMax, 1)
}),
new CheckBoxSearchPlugin(PluginConfigBool.ShowMoveTarget, new ISearchable[]
{
new ColorEditSearchPlugin(PluginConfigVector4.MovingTargetColor)
}),
new CheckBoxSearchPlugin(PluginConfigBool.ShowTarget, new ISearchable[]
{
new DragFloatSearchPlugin(PluginConfigFloat.TargetIconSize,0, 1, 0.002f),
new DragFloatSearchPlugin(PluginConfigFloat.TargetIconSize, 0.002f),
new ColorEditSearchPlugin(PluginConfigVector4.TargetColor),
new ColorEditSearchPlugin(PluginConfigVector4.SubTargetColor),
}),
new CheckBoxSearchPlugin(PluginConfigBool.DrawPositional, new ISearchable[]
{
new DragFloatSearchPlugin(PluginConfigFloat.DrawingHeight,0, 8, 0.02f),
new DragFloatSearchPlugin(PluginConfigFloat.SampleLength,0.005f, 0.05f, 0.001f),
new DragFloatSearchPlugin(PluginConfigFloat.DrawingHeight, 0.02f),
new DragFloatSearchPlugin(PluginConfigFloat.SampleLength, 0.001f),
}),
new CheckBoxSearchPlugin(PluginConfigBool.DrawMeleeOffset, new ISearchable[]
{
new DragFloatSearchPlugin(PluginConfigFloat.DrawingHeight,0, 8, 0.02f),
new DragFloatSearchPlugin(PluginConfigFloat.SampleLength,0.005f, 0.05f, 0.001f),
new DragFloatSearchPlugin(PluginConfigFloat.DrawingHeight, 0.02f),
new DragFloatSearchPlugin(PluginConfigFloat.SampleLength, 0.001f),
}),

};
Expand All @@ -164,9 +163,9 @@ private static void DrawBasic()
new CheckBoxSearchPlugin(PluginConfigBool.OnlyShowWithHostileOrInDuty),
new CheckBoxSearchPlugin(PluginConfigBool.IsControlWindowLock),

new DragFloatSearchPlugin(PluginConfigFloat.ControlWindowNextSizeRatio,0f, 10f, 0.02f),
new DragFloatSearchPlugin(PluginConfigFloat.ControlWindowGCDSize,0f, 80f, 0.2f),
new DragFloatSearchPlugin(PluginConfigFloat.ControlWindow0GCDSize,0f, 80f, 0.2f),
new DragFloatSearchPlugin(PluginConfigFloat.ControlWindowNextSizeRatio, 0.02f),
new DragFloatSearchPlugin(PluginConfigFloat.ControlWindowGCDSize, 0.2f),
new DragFloatSearchPlugin(PluginConfigFloat.ControlWindow0GCDSize, 0.2f),

new ColorEditSearchPlugin(PluginConfigVector4.ControlWindowUnlockBg),
new ColorEditSearchPlugin(PluginConfigVector4.ControlWindowLockBg),
Expand All @@ -188,9 +187,9 @@ private static void DrawBasic()
new CheckBoxSearchPlugin(PluginConfigBool.ShowGCDCooldown),
new CheckBoxSearchPlugin(PluginConfigBool.ShowItemsCooldown),

new DragIntSearchPlugin(PluginConfigInt.CooldownActionOneLine,1, 30, 1),
new DragFloatSearchPlugin(PluginConfigFloat.CooldownFontSize,9.6f, 96f, 0.1f),
new DragFloatSearchPlugin(PluginConfigFloat.CooldownWindowIconSize,0f, 80f, 0.2f),
new DragIntSearchPlugin(PluginConfigInt.CooldownActionOneLine, 1),
new DragFloatSearchPlugin(PluginConfigFloat.CooldownFontSize, 0.1f),
new DragFloatSearchPlugin(PluginConfigFloat.CooldownWindowIconSize, 0.2f),

new ColorEditSearchPlugin(PluginConfigVector4.InfoWindowBg),
}),
Expand Down Expand Up @@ -256,19 +255,19 @@ private static void DrawUI()
}),
new CheckBoxSearchPlugin(PluginConfigBool.RaisePlayerByCasting),
new CheckBoxSearchPlugin(PluginConfigBool.UseHealWhenNotAHealer),
new DragIntSearchPlugin(PluginConfigInt.LessMPNoRaise, 0, 10000, 200),
new DragIntSearchPlugin(PluginConfigInt.LessMPNoRaise, 200),

new CheckBoxSearchPlugin(PluginConfigBool.InterruptibleMoreCheck),
new CheckBoxSearchPlugin(PluginConfigBool.EsunaAll),
new CheckBoxSearchPlugin(PluginConfigBool.HealOutOfCombat),
new DragFloatSearchPlugin(PluginConfigFloat.HealWhenNothingTodoBelow,0,1,0.002f),
new DragFloatSearchPlugin(PluginConfigFloat.HealWhenNothingTodoBelow, 0.002f),
new CheckBoxSearchPlugin(PluginConfigBool.OnlyHotOnTanks),
new CheckBoxSearchPlugin(PluginConfigBool.BeneficialAreaOnTarget),
new DragFloatSearchPlugin(PluginConfigFloat.DistanceForMoving,0,30,1f),
new DragFloatSearchPlugin(PluginConfigFloat.MeleeRangeOffset,0,5,0.02f),
new DragFloatSearchPlugin(PluginConfigFloat.HealthDifference,0,0.5f,0.02f),
new DragFloatSearchPlugin(PluginConfigFloat.HealthHealerRatio,0,1,0.02f),
new DragFloatSearchPlugin(PluginConfigFloat.HealthTankRatio,0,1,0.02f),
new DragFloatSearchPlugin(PluginConfigFloat.DistanceForMoving, 1f),
new DragFloatSearchPlugin(PluginConfigFloat.MeleeRangeOffset, 0.02f),
new DragFloatSearchPlugin(PluginConfigFloat.HealthDifference, 0.02f),
new DragFloatSearchPlugin(PluginConfigFloat.HealthHealerRatio, 0.02f),
new DragFloatSearchPlugin(PluginConfigFloat.HealthTankRatio, 0.02f),

};

Expand Down Expand Up @@ -316,7 +315,7 @@ private static void DrawAuto()
new CheckBoxSearchPlugin(PluginConfigBool.ChangeTargetForFate),
new CheckBoxSearchPlugin(PluginConfigBool.OnlyAttackInView),
new CheckBoxSearchPlugin(PluginConfigBool.MoveTowardsScreenCenter),
new DragIntSearchPlugin(PluginConfigInt.MoveTargetAngle,0,100,0.02f),
new DragIntSearchPlugin(PluginConfigInt.MoveTargetAngle, 0.02f),
new CheckBoxSearchPlugin(PluginConfigBool.TargetAllForFriendly),
new CheckBoxSearchPlugin(PluginConfigBool.RaiseAll),
new CheckBoxSearchPlugin(PluginConfigBool.RaiseBrinkOfDeath),
Expand All @@ -343,9 +342,9 @@ private static void DrawTarget()
}),
new CheckBoxSearchPlugin(PluginConfigBool.ShowHealthRatio, new ISearchable[]
{
new DragFloatSearchPlugin(PluginConfigFloat.HealthRatioBoss, 0, 10, 0.02f),
new DragFloatSearchPlugin(PluginConfigFloat.HealthRatioDying, 0, 10, 0.02f),
new DragFloatSearchPlugin(PluginConfigFloat.HealthRatioDot, 0, 10, 0.02f),
new DragFloatSearchPlugin(PluginConfigFloat.HealthRatioBoss, 0.02f),
new DragFloatSearchPlugin(PluginConfigFloat.HealthRatioDying, 0.02f),
new DragFloatSearchPlugin(PluginConfigFloat.HealthRatioDot, 0.02f),

}),
new CheckBoxSearchPlugin(PluginConfigBool.ShowTooltips),
Expand All @@ -354,7 +353,7 @@ private static void DrawTarget()
// 死亡停止读条,待定
new CheckBoxSearchPlugin(PluginConfigBool.UseStopCasting,new ISearchable[]
{
new DragFloatRangeSearchPlugin(PluginConfigFloat.StopCastingDelayMin, PluginConfigFloat.StopCastingDelayMin, 0, 3, 0.002f)
new DragFloatRangeSearchPlugin(PluginConfigFloat.StopCastingDelayMin, PluginConfigFloat.StopCastingDelayMin, 0.002f)
}),

};
Expand Down
Loading

0 comments on commit 58ac6cf

Please sign in to comment.