Files
SVSimServer/SVSim.BattleEngine/Engine/SkillAnyConditionFilter.cs
gamer147 0d9d8acae0 feat(battle-engine): M1 auto-copy closure (782 battle-logic files)
Compile-driven bulk-copy loop (tools/engine-port/m1_copy_loop.py) pulled the precise reference closure of the battle-core roots, stopping at the classify god-object/View-VFX-UI boundary. 782 files; no re-explosion (M0 had estimated ~order 1000). Residual frontier = 52 shim-classified + 80 external (Unity/BCL) types to author next.
2026-06-05 16:57:20 -04:00

73 lines
2.2 KiB
C#

using System.Collections.Generic;
using System.Linq;
using Wizard;
public class SkillAnyConditionFilter
{
public List<ConditionSkillFilterCollection> Filters { get; private set; }
public string Text { get; protected set; }
public static List<string> GetFiltersString(string text)
{
text = text.Substring(1, text.Length - 2);
List<string> list = new List<string>();
string text2 = string.Empty;
int num = 0;
while (text.Length > 0)
{
switch (text[0])
{
case '|':
if (num == 0)
{
list.Add(text2);
text2 = string.Empty;
}
break;
case '{':
num++;
text2 += text[0];
break;
case '}':
num--;
text2 += text[0];
break;
default:
text2 += text[0];
break;
}
text = text.Substring(1, text.Length - 1);
}
if (text2 != string.Empty)
{
list.Add(text2);
}
return list;
}
public SkillAnyConditionFilter(string text, List<string> conditions, BattleCardBase ownerCard, SkillBase skill)
{
Text = text;
Filters = new List<ConditionSkillFilterCollection>();
foreach (string condition in conditions)
{
ConditionSkillFilterCollection conditionSkillFilterCollection = new ConditionSkillFilterCollection();
List<SkillFilterCreator.ContentInfo> retOldInfos = new List<SkillFilterCreator.ContentInfo>();
List<string> retNewInfos = new List<string>();
SkillCreator.ParseCondition(condition, ref retOldInfos, ref retNewInfos);
SkillCreator.SetupSkillConditionOld(conditionSkillFilterCollection, retOldInfos, ownerCard, skill);
for (int i = 0; i < retNewInfos.Count; i++)
{
conditionSkillFilterCollection.VariableCompareFilter.Add(new SkillVariableComareFilter(retNewInfos[i]));
}
Filters.Add(conditionSkillFilterCollection);
}
}
public bool Filtering(BattlePlayerReadOnlyInfoPair playerInfoPair, BattleCardBase ownerCard, SkillConditionCheckerOption checkerOption, SkillOptionValue optionValue, bool isPrePlay, SkillBase skill, bool isSkipTarget)
{
return Filters.Any((ConditionSkillFilterCollection f) => f.Filtering(playerInfoPair, ownerCard, checkerOption, optionValue, isPrePlay, skill, isSkipTarget));
}
}