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.
80 lines
2.5 KiB
C#
80 lines
2.5 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|