mirror of
https://github.com/waynebian01/Shigure.git
synced 2026-09-03 07:15:24 +08:00
更新版本号至 1.2.1.8,添加不带光环的单位选择功能及相关逻辑
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
## Interface: 120100
|
||||
|
||||
## Title: Fuyutsui
|
||||
## Version: 1.2.1.7
|
||||
## Version: 1.2.1.8
|
||||
## Author: Wayne Bian
|
||||
## IconTexture: Interface\AddOns\Fuyutsui\core\Spell_Misc_EmotionHappy.blp
|
||||
## OptionalDeps: LibRangeCheck-3.0
|
||||
|
||||
@@ -11,6 +11,9 @@ public enum UnitSelectorKind
|
||||
/// <summary>拥有任一光环且生命值最低。get_lowest_health_unit_with_any_aura</summary>
|
||||
LowestHealthWithAnyAura,
|
||||
|
||||
/// <summary>不拥有所选任一光环且生命值最低。</summary>
|
||||
LowestHealthWithoutAnyAura,
|
||||
|
||||
/// <summary>不带某光环且生命值最低。get_lowest_health_unit_without_aura</summary>
|
||||
LowestHealthWithoutAura,
|
||||
|
||||
@@ -38,6 +41,9 @@ public enum UnitSelectorKind
|
||||
/// <summary>拥有任一光环、治疗吸收高于阈值且治疗吸收最高的单位。</summary>
|
||||
HighestHealingAbsorbWithAnyAura,
|
||||
|
||||
/// <summary>不拥有所选任一光环、治疗吸收高于阈值且治疗吸收最高的单位。</summary>
|
||||
HighestHealingAbsorbWithoutAnyAura,
|
||||
|
||||
/// <summary>不带某光环、治疗吸收高于阈值且治疗吸收最高的单位。</summary>
|
||||
HighestHealingAbsorbWithoutAura,
|
||||
|
||||
|
||||
@@ -35,6 +35,12 @@ public static class UnitSelector
|
||||
threshold,
|
||||
data => MatchesRoleFilter(data, unit.RoleFilter, unit.Role) && HasAnyAura(data, names))
|
||||
: null,
|
||||
UnitSelectorKind.LowestHealthWithoutAnyAura => unit.AuraNames is { Count: > 0 } names
|
||||
? LowestHealth(
|
||||
group,
|
||||
threshold,
|
||||
data => MatchesRoleFilter(data, unit.RoleFilter, unit.Role) && !HasAnyAura(data, names))
|
||||
: null,
|
||||
UnitSelectorKind.LowestHealthWithoutAura => aura is null
|
||||
? null
|
||||
: LowestHealth(
|
||||
@@ -68,6 +74,9 @@ public static class UnitSelector
|
||||
UnitSelectorKind.HighestHealingAbsorbWithAnyAura => unit.AuraNames is { Count: > 0 } names
|
||||
? HighestHealingAbsorb(group, threshold, data => HasAnyAura(data, names))
|
||||
: null,
|
||||
UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura => unit.AuraNames is { Count: > 0 } names
|
||||
? HighestHealingAbsorb(group, threshold, data => !HasAnyAura(data, names))
|
||||
: null,
|
||||
UnitSelectorKind.HighestHealingAbsorbWithoutAura => aura is null
|
||||
? null
|
||||
: HighestHealingAbsorb(group, threshold, data => !HasAura(data, aura)),
|
||||
@@ -316,6 +325,7 @@ public static class UnitSelector
|
||||
private static bool IsHealingAbsorbKind(UnitSelectorKind kind)
|
||||
=> kind is UnitSelectorKind.HighestHealingAbsorb
|
||||
or UnitSelectorKind.HighestHealingAbsorbWithAnyAura
|
||||
or UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura
|
||||
or UnitSelectorKind.HighestHealingAbsorbWithoutAura
|
||||
or UnitSelectorKind.HighestHealingAbsorbWithAura
|
||||
or UnitSelectorKind.HighestHealingAbsorbWithAuraCount;
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
<AssemblyName>Shigure</AssemblyName>
|
||||
<RootNamespace>Shigure</RootNamespace>
|
||||
<Company>Arasaka Corporation</Company>
|
||||
<Version>1.2.1.7</Version>
|
||||
<AssemblyVersion>1.2.1.7</AssemblyVersion>
|
||||
<FileVersion>1.2.1.7</FileVersion>
|
||||
<Version>1.2.1.8</Version>
|
||||
<AssemblyVersion>1.2.1.8</AssemblyVersion>
|
||||
<FileVersion>1.2.1.8</FileVersion>
|
||||
<ApplicationIcon>Assets\arasaka-icon.ico</ApplicationIcon>
|
||||
<ApplicationHighDpiMode>PerMonitorV2</ApplicationHighDpiMode>
|
||||
</PropertyGroup>
|
||||
|
||||
@@ -31,6 +31,7 @@ public sealed class UnitEditorForm : Form
|
||||
[
|
||||
new("不筛选光环", LowestHealthAuraFilterKind.None),
|
||||
new("带任一光环", LowestHealthAuraFilterKind.WithAnyAura),
|
||||
new("不带任一光环", LowestHealthAuraFilterKind.WithoutAnyAura),
|
||||
new("不带某光环", LowestHealthAuraFilterKind.WithoutAura),
|
||||
new("带某光环", LowestHealthAuraFilterKind.WithAura),
|
||||
new("某光环值等于", LowestHealthAuraFilterKind.WithAuraCount)
|
||||
@@ -427,6 +428,7 @@ public sealed class UnitEditorForm : Form
|
||||
switch (SelectedLowestHealthAuraFilter())
|
||||
{
|
||||
case LowestHealthAuraFilterKind.WithAnyAura:
|
||||
case LowestHealthAuraFilterKind.WithoutAnyAura:
|
||||
auraMulti = true;
|
||||
break;
|
||||
case LowestHealthAuraFilterKind.WithoutAura:
|
||||
@@ -444,6 +446,7 @@ public sealed class UnitEditorForm : Form
|
||||
switch (SelectedLowestHealthAuraFilter())
|
||||
{
|
||||
case LowestHealthAuraFilterKind.WithAnyAura:
|
||||
case LowestHealthAuraFilterKind.WithoutAnyAura:
|
||||
auraMulti = true;
|
||||
break;
|
||||
case LowestHealthAuraFilterKind.WithoutAura:
|
||||
@@ -457,6 +460,7 @@ public sealed class UnitEditorForm : Form
|
||||
|
||||
break;
|
||||
case UnitSelectorKind.LowestHealthWithAnyAura:
|
||||
case UnitSelectorKind.LowestHealthWithoutAnyAura:
|
||||
threshold = auraMulti = true;
|
||||
break;
|
||||
case UnitSelectorKind.LowestHealthWithoutAura:
|
||||
@@ -468,6 +472,7 @@ public sealed class UnitEditorForm : Form
|
||||
threshold = auraSingle = auraCount = true;
|
||||
break;
|
||||
case UnitSelectorKind.HighestHealingAbsorbWithAnyAura:
|
||||
case UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura:
|
||||
threshold = auraMulti = true;
|
||||
break;
|
||||
case UnitSelectorKind.HighestHealingAbsorbWithoutAura:
|
||||
@@ -537,7 +542,9 @@ public sealed class UnitEditorForm : Form
|
||||
DispelType = SelectedDispelType()
|
||||
};
|
||||
unit.AuraNames = unit.Kind is UnitSelectorKind.LowestHealthWithAnyAura
|
||||
or UnitSelectorKind.LowestHealthWithoutAnyAura
|
||||
or UnitSelectorKind.HighestHealingAbsorbWithAnyAura
|
||||
or UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura
|
||||
? CheckedAuras()
|
||||
: SingleAuraList();
|
||||
ApplyPreviewThreshold(v => unit.HealthThreshold = v, f => unit.HealthThresholdField = f);
|
||||
@@ -559,6 +566,9 @@ public sealed class UnitEditorForm : Form
|
||||
LowestHealthAuraFilterKind.WithAnyAura => healingAbsorb
|
||||
? UnitSelectorKind.HighestHealingAbsorbWithAnyAura
|
||||
: UnitSelectorKind.LowestHealthWithAnyAura,
|
||||
LowestHealthAuraFilterKind.WithoutAnyAura => healingAbsorb
|
||||
? UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura
|
||||
: UnitSelectorKind.LowestHealthWithoutAnyAura,
|
||||
LowestHealthAuraFilterKind.WithoutAura => healingAbsorb
|
||||
? UnitSelectorKind.HighestHealingAbsorbWithoutAura
|
||||
: UnitSelectorKind.LowestHealthWithoutAura,
|
||||
@@ -738,6 +748,18 @@ public sealed class UnitEditorForm : Form
|
||||
return;
|
||||
}
|
||||
|
||||
break;
|
||||
case LowestHealthAuraFilterKind.WithoutAnyAura:
|
||||
moduleUnit.Kind = healingAbsorb
|
||||
? UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura
|
||||
: UnitSelectorKind.LowestHealthWithoutAnyAura;
|
||||
moduleUnit.AuraNames = CheckedAuras();
|
||||
if (moduleUnit.AuraNames.Count == 0)
|
||||
{
|
||||
MessageBox.Show("请至少勾选一个光环。", "Shigure", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
break;
|
||||
case LowestHealthAuraFilterKind.WithoutAura:
|
||||
moduleUnit.Kind = healingAbsorb
|
||||
@@ -762,7 +784,9 @@ public sealed class UnitEditorForm : Form
|
||||
|
||||
break;
|
||||
case UnitSelectorKind.LowestHealthWithAnyAura:
|
||||
case UnitSelectorKind.LowestHealthWithoutAnyAura:
|
||||
case UnitSelectorKind.HighestHealingAbsorbWithAnyAura:
|
||||
case UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura:
|
||||
if (!ApplyThreshold(moduleUnit))
|
||||
{
|
||||
return;
|
||||
@@ -970,10 +994,12 @@ public sealed class UnitEditorForm : Form
|
||||
|
||||
private static bool UnitRequiresAura(UnitSelectorKind kind)
|
||||
=> kind is UnitSelectorKind.LowestHealthWithAnyAura
|
||||
or UnitSelectorKind.LowestHealthWithoutAnyAura
|
||||
or UnitSelectorKind.LowestHealthWithoutAura
|
||||
or UnitSelectorKind.LowestHealthWithAura
|
||||
or UnitSelectorKind.LowestHealthWithAuraCount
|
||||
or UnitSelectorKind.HighestHealingAbsorbWithAnyAura
|
||||
or UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura
|
||||
or UnitSelectorKind.HighestHealingAbsorbWithoutAura
|
||||
or UnitSelectorKind.HighestHealingAbsorbWithAura
|
||||
or UnitSelectorKind.HighestHealingAbsorbWithAuraCount
|
||||
@@ -1015,11 +1041,13 @@ public sealed class UnitEditorForm : Form
|
||||
|
||||
private static UnitSelectorKind DisplaySelectorKind(UnitSelectorKind kind)
|
||||
=> kind is UnitSelectorKind.LowestHealthWithAnyAura
|
||||
or UnitSelectorKind.LowestHealthWithoutAnyAura
|
||||
or UnitSelectorKind.LowestHealthWithoutAura
|
||||
or UnitSelectorKind.LowestHealthWithAura
|
||||
or UnitSelectorKind.LowestHealthWithAuraCount
|
||||
? UnitSelectorKind.LowestHealth
|
||||
: kind is UnitSelectorKind.HighestHealingAbsorbWithAnyAura
|
||||
or UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura
|
||||
or UnitSelectorKind.HighestHealingAbsorbWithoutAura
|
||||
or UnitSelectorKind.HighestHealingAbsorbWithAura
|
||||
or UnitSelectorKind.HighestHealingAbsorbWithAuraCount
|
||||
@@ -1031,10 +1059,12 @@ public sealed class UnitEditorForm : Form
|
||||
var filter = kind switch
|
||||
{
|
||||
UnitSelectorKind.LowestHealthWithAnyAura => LowestHealthAuraFilterKind.WithAnyAura,
|
||||
UnitSelectorKind.LowestHealthWithoutAnyAura => LowestHealthAuraFilterKind.WithoutAnyAura,
|
||||
UnitSelectorKind.LowestHealthWithoutAura => LowestHealthAuraFilterKind.WithoutAura,
|
||||
UnitSelectorKind.LowestHealthWithAura => LowestHealthAuraFilterKind.WithAura,
|
||||
UnitSelectorKind.LowestHealthWithAuraCount => LowestHealthAuraFilterKind.WithAuraCount,
|
||||
UnitSelectorKind.HighestHealingAbsorbWithAnyAura => LowestHealthAuraFilterKind.WithAnyAura,
|
||||
UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura => LowestHealthAuraFilterKind.WithoutAnyAura,
|
||||
UnitSelectorKind.HighestHealingAbsorbWithoutAura => LowestHealthAuraFilterKind.WithoutAura,
|
||||
UnitSelectorKind.HighestHealingAbsorbWithAura => LowestHealthAuraFilterKind.WithAura,
|
||||
UnitSelectorKind.HighestHealingAbsorbWithAuraCount => LowestHealthAuraFilterKind.WithAuraCount,
|
||||
@@ -1310,6 +1340,7 @@ public sealed class UnitEditorForm : Form
|
||||
{
|
||||
None,
|
||||
WithAnyAura,
|
||||
WithoutAnyAura,
|
||||
WithoutAura,
|
||||
WithAura,
|
||||
WithAuraCount
|
||||
|
||||
@@ -20,6 +20,7 @@ internal static class UnitSummary
|
||||
{
|
||||
UnitSelectorKind.LowestHealth => $"血量最低 (<{threshold})",
|
||||
UnitSelectorKind.LowestHealthWithAnyAura => $"带任一[{auras}]且血最低 (<{threshold})",
|
||||
UnitSelectorKind.LowestHealthWithoutAnyAura => $"不带任一[{auras}]且血最低 (<{threshold})",
|
||||
UnitSelectorKind.LowestHealthWithoutAura => $"不带[{aura}]且血最低 (<{threshold})",
|
||||
UnitSelectorKind.LowestHealthWithAura => $"带[{aura}]且血最低 (<{threshold})",
|
||||
UnitSelectorKind.LowestHealthWithAuraCount => $"[{aura}]={unit.AuraCount}且血最低 (<{threshold})",
|
||||
@@ -29,6 +30,7 @@ internal static class UnitSummary
|
||||
UnitSelectorKind.UnitWithDispelType => $"驱散类型={unit.DispelType}",
|
||||
UnitSelectorKind.HighestHealingAbsorb => $"治疗吸收最高 (>{threshold})",
|
||||
UnitSelectorKind.HighestHealingAbsorbWithAnyAura => $"带任一[{auras}]且治疗吸收最高 (>{threshold})",
|
||||
UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura => $"不带任一[{auras}]且治疗吸收最高 (>{threshold})",
|
||||
UnitSelectorKind.HighestHealingAbsorbWithoutAura => $"不带[{aura}]且治疗吸收最高 (>{threshold})",
|
||||
UnitSelectorKind.HighestHealingAbsorbWithAura => $"带[{aura}]且治疗吸收最高 (>{threshold})",
|
||||
UnitSelectorKind.HighestHealingAbsorbWithAuraCount => $"[{aura}]={unit.AuraCount}且治疗吸收最高 (>{threshold})",
|
||||
@@ -77,6 +79,7 @@ internal static class UnitSummary
|
||||
private static bool IsLowestHealthKind(UnitSelectorKind kind)
|
||||
=> kind is UnitSelectorKind.LowestHealth
|
||||
or UnitSelectorKind.LowestHealthWithAnyAura
|
||||
or UnitSelectorKind.LowestHealthWithoutAnyAura
|
||||
or UnitSelectorKind.LowestHealthWithoutAura
|
||||
or UnitSelectorKind.LowestHealthWithAura
|
||||
or UnitSelectorKind.LowestHealthWithAuraCount;
|
||||
@@ -84,6 +87,7 @@ internal static class UnitSummary
|
||||
private static bool IsHealingAbsorbKind(UnitSelectorKind kind)
|
||||
=> kind is UnitSelectorKind.HighestHealingAbsorb
|
||||
or UnitSelectorKind.HighestHealingAbsorbWithAnyAura
|
||||
or UnitSelectorKind.HighestHealingAbsorbWithoutAnyAura
|
||||
or UnitSelectorKind.HighestHealingAbsorbWithoutAura
|
||||
or UnitSelectorKind.HighestHealingAbsorbWithAura
|
||||
or UnitSelectorKind.HighestHealingAbsorbWithAuraCount;
|
||||
|
||||
Reference in New Issue
Block a user