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:
@@ -0,0 +1,79 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public static class AISetStatusSimulationUtility
|
||||
{
|
||||
public static bool IsNoneSetValue(AIPolishConvertedExpression expression)
|
||||
{
|
||||
if (expression.TokenList[0] is AIScriptArgumentToken aIScriptArgumentToken)
|
||||
{
|
||||
return aIScriptArgumentToken.ArgumentType == AIScriptTokenArgType.NONE;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void SetMaxStatusToAll(List<AIVirtualCard> targets, int attack, int life, AISituationInfo situation)
|
||||
{
|
||||
for (int i = 0; i < targets.Count; i++)
|
||||
{
|
||||
AIVirtualCard aIVirtualCard = targets[i];
|
||||
if (attack >= 0)
|
||||
{
|
||||
aIVirtualCard.SetAttack(attack);
|
||||
}
|
||||
if (life >= 0)
|
||||
{
|
||||
aIVirtualCard.SetMaxLife(situation, life);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetMaxStatusToTarget(AISituationInfo situation, int attack, int life, AIScriptTokenArgType whichTarget)
|
||||
{
|
||||
AISelectedTargetInfo situationTarget = situation.GetSituationTarget(whichTarget);
|
||||
if (situationTarget != null && situationTarget.HasTarget)
|
||||
{
|
||||
SetMaxStatusToAll(situationTarget.Targets, attack, life, situation);
|
||||
}
|
||||
}
|
||||
|
||||
public static (AIVirtualCard allyLeader, AIVirtualCard enemyLeader) GetTargetSideLeaders(AIVirtualCard tagOwner, AIVirtualField field)
|
||||
{
|
||||
if (tagOwner == null)
|
||||
{
|
||||
return (allyLeader: null, enemyLeader: null);
|
||||
}
|
||||
if (!tagOwner.IsAlly)
|
||||
{
|
||||
return (allyLeader: field.EnemyClass, enemyLeader: field.AllyClass);
|
||||
}
|
||||
return (allyLeader: field.AllyClass, enemyLeader: field.EnemyClass);
|
||||
}
|
||||
|
||||
public static void SetLeaderMaxLife(AIVirtualCard tagOwner, int maxLife, AIScriptTokenArgType sideType, AIVirtualField field, AISituationInfo situation = null)
|
||||
{
|
||||
(AIVirtualCard, AIVirtualCard) targetSideLeaders = GetTargetSideLeaders(tagOwner, field);
|
||||
if (targetSideLeaders.Item1 == null || targetSideLeaders.Item2 == null)
|
||||
{
|
||||
AIConsoleUtility.LogError("AISetStatusSimulationUtility.SetLeaderMaxLife(): Failed to get the leader.");
|
||||
return;
|
||||
}
|
||||
switch (sideType)
|
||||
{
|
||||
case AIScriptTokenArgType.ALLY:
|
||||
targetSideLeaders.Item1.SetMaxLife(situation, maxLife);
|
||||
break;
|
||||
case AIScriptTokenArgType.OPPONENT:
|
||||
targetSideLeaders.Item2.SetMaxLife(situation, maxLife);
|
||||
break;
|
||||
case AIScriptTokenArgType.BOTH:
|
||||
targetSideLeaders.Item1.SetMaxLife(situation, maxLife);
|
||||
targetSideLeaders.Item2.SetMaxLife(situation, maxLife);
|
||||
break;
|
||||
default:
|
||||
AIConsoleUtility.LogError($"AISetStatusSimulationUtility.SetLeaderMaxLife(): Unexpected side type. type:{sideType}");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user