Files
SVSimServer/SVSim.BattleEngine/Engine/Wizard/AIPolicyData.cs
gamer147 e3e0ba7a72 cull(engine-cleanup): pass-8 phase-2 cascade round 2
[trim] fully-unreachable files deleted: 3
[trim] files edited: 21, files deleted: 0, nodes removed: 38
[type-trim] files edited: 3, types removed: 3

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-03 21:19:36 -04:00

130 lines
3.9 KiB
C#

using System.Collections.Generic;
namespace Wizard;
public class AIPolicyData
{
private AIConditionExpressions _conditionExpr;
public int ID { get; private set; }
public AICategory Category { get; private set; }
public int Priority { get; private set; }
public AIPolicyType PolicyType { get; private set; }
public string ARG { get; private set; }
public string CONDITION { get; private set; }
public AIScriptArgumentExpressions Argument { get; private set; }
public AIPolicyData(AIPolicyDataAsset asset)
{
ID = asset.ID;
Category = ConvertStringToCategory(asset.Category);
Priority = asset.Priority;
PolicyType = ConvertStringToPolicyType(asset.Type);
ARG = asset.Arg;
CONDITION = asset.Cond;
Argument = CreateArgument(asset.Arg);
_conditionExpr = new AIConditionExpressions(asset.Cond);
}
private AIScriptArgumentExpressions CreateArgument(string arg)
{
switch (PolicyType)
{
case AIPolicyType.PlayBreak:
return new AIPlayBreak(arg);
case AIPolicyType.EmoOnTurnEnd:
case AIPolicyType.EmoOnTurnStart:
case AIPolicyType.PlayerEmoOnTurnEnd:
return new AIEmoteOnTurnTransition(arg);
case AIPolicyType.AllyPlayBonus:
return new AIOtherPlayBonus(arg);
case AIPolicyType.AllyPlayBonusRate:
return new AIOtherPlayBonusRate(arg);
case AIPolicyType.DelayTurnEndTime:
return new AIDelayTurnEndTime(arg);
case AIPolicyType.MoveFirstBonus:
return new AIFirstMoveBonus(arg);
case AIPolicyType.GameStartAttachTag:
return new AIGameStartAttachTag(arg);
default:
return new AIScriptArgumentExpressions(arg);
}
}
public static AICategory ConvertStringToCategory(string str)
{
return str switch
{
"All" => AICategory.ALL,
"Elf" => AICategory.ELF,
"Royal" => AICategory.ROYAL,
"Witch" => AICategory.WITCH,
"Dragon" => AICategory.DRAGON,
"Necromance" => AICategory.NECROMANCE,
"Vampire" => AICategory.VAMPIRE,
"Bishop" => AICategory.BISHOP,
"Nemesis" => AICategory.NEMESIS,
_ => AICategory.ALL,
};
}
public static AIPolicyType ConvertStringToPolicyType(string str)
{
return str switch
{
"epValue" => AIPolicyType.EpValue,
"modUnitRate" => AIPolicyType.ModUnitRate,
"unitBonus" => AIPolicyType.UnitBonus,
"emoOnTurnEnd" => AIPolicyType.EmoOnTurnEnd,
"emoOnTurnStart" => AIPolicyType.EmoOnTurnStart,
"playptnBonus" => AIPolicyType.PlayptnBonus,
"playBreak" => AIPolicyType.PlayBreak,
"barrierBonus" => AIPolicyType.BarrierBonus,
"allyPlayB" => AIPolicyType.AllyPlayBonus,
"allyPlayBonusRate" => AIPolicyType.AllyPlayBonusRate,
"disableLethalCheck" => AIPolicyType.DisableLethalCheck,
"delayTurnEndTime" => AIPolicyType.DelayTurnEndTime,
"emoOnLeaderDamaged" => AIPolicyType.EmoOnLeaderDamaged,
"setReferenceId" => AIPolicyType.SetReferenceId,
"setReferenceTribe" => AIPolicyType.SetReferenceTribe,
"playerEmoOnTurnEnd" => AIPolicyType.PlayerEmoOnTurnEnd,
"playerEmoOnTurnStart" => AIPolicyType.PlayerEmoOnTurnStart,
"playerEmoOnLeaderDamaged" => AIPolicyType.PlayerEmoOnLeaderDamaged,
"moveFirstBonus" => AIPolicyType.MoveFirstBonus,
"gameStartAttachTag" => AIPolicyType.GameStartAttachTag,
_ => AIPolicyType.None,
};
}
public bool CheckCondition(AIVirtualCard owner, List<int> playPtn, AIVirtualField field, AISituationInfo situation)
{
return _conditionExpr.CheckCondition(owner, playPtn, field, situation);
}
public float EvalArg(AIVirtualCard owner, List<int> playPtn, AIVirtualField field, AISituationInfo situation = null)
{
return Argument.EvalArg(0, owner, playPtn, field, situation);
}
public int EvalId(int index = 0)
{
return Argument.EvalID(index);
}
public List<int> EvalIdList(int startindex = 0)
{
return Argument.EvalIDList(startindex);
}
public string EvalText(int index = 0)
{
return Argument.EvalText(index);
}
}