feat(battle-engine): close the AI-simulation subsystem (verbatim)
Copied the 89 uncopied AI*SimulationUtility/extension files defining the AIVirtualCard/AIVirtualField extension methods; the compile loop then auto-closed the revealed type deps (~3049 files total, drift-clean). 10.0k -> 62 errors.
This commit is contained in:
45
SVSim.BattleEngine/Engine/Wizard/AIHandCountUtility.cs
Normal file
45
SVSim.BattleEngine/Engine/Wizard/AIHandCountUtility.cs
Normal file
@@ -0,0 +1,45 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public static class AIHandCountUtility
|
||||
{
|
||||
public static int GetHandCount(AIVirtualField field, List<AIScriptTokenBase> filters, AIVirtualCard tagOwner, AISituationInfo situation, List<int> playPtn)
|
||||
{
|
||||
ReplaceIllegalFilter(filters);
|
||||
int num = ((!tagOwner.IsAlly) ? AIFilteringUtility.MultipleFiltering(field.GetEnemyHandCardList(), filters, tagOwner, playPtn, situation) : AIFilteringUtility.MultipleFiltering(field.AllyHandCards, filters, tagOwner, playPtn, situation))?.Count ?? 0;
|
||||
if (filters[0] is AIScriptArgumentToken { ArgumentType: AIScriptTokenArgType.ALL })
|
||||
{
|
||||
num += field.VirtualDrawCount;
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
public static int GetHandNameCount(AIVirtualField field, List<AIScriptTokenBase> filters, AIVirtualCard tagOwner, AISituationInfo situation, List<int> playPtn)
|
||||
{
|
||||
ReplaceIllegalFilter(filters);
|
||||
return AIFilteringUtility.GetCardNameCountFromList(tagOwner.IsAlly ? field.AllyHandCards : field.GetEnemyHandCardList(), filters, tagOwner, playPtn, situation);
|
||||
}
|
||||
|
||||
private static void ReplaceIllegalFilter(List<AIScriptTokenBase> filters)
|
||||
{
|
||||
for (int i = 0; i < filters.Count; i++)
|
||||
{
|
||||
if (filters[i] is AIScriptArgumentToken { ArgumentType: var argumentType } aIScriptArgumentToken)
|
||||
{
|
||||
switch (argumentType)
|
||||
{
|
||||
case AIScriptTokenArgType.FOLLOWER:
|
||||
aIScriptArgumentToken.ArgumentType = AIScriptTokenArgType.FOLLOWER_CARD_TYPE;
|
||||
break;
|
||||
case AIScriptTokenArgType.BUFFED_FOLLOWER:
|
||||
aIScriptArgumentToken.ArgumentType = AIScriptTokenArgType.BUFFED_FOLLOWER_CARD_TYPE;
|
||||
break;
|
||||
case AIScriptTokenArgType.SPELL:
|
||||
aIScriptArgumentToken.ArgumentType = AIScriptTokenArgType.SPELL_CARD_TYPE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user