using System.Collections.Generic; namespace Wizard; public class AITurnEndAddDeck : AIScriptArgumentExpressions, IAITurnEndArgument { private AIPolishConvertedExpression _cardIdToken; private AIPolishConvertedExpression _addCountExpression; private const int ADD_CARD_ID_ARG_INDEX = 0; private const int ADD_COUNT_ARG_INDEX = 1; private const int IS_ALLY_TURN_INDEX = 2; public bool IsAllyTurn { get; private set; } public AITurnEndAddDeck(string text) : base(text) { } protected override void InitExpressions(string text) { base.InitExpressions(text); _cardIdToken = _exprList[0]; _addCountExpression = _exprList[1]; IsAllyTurn = TurnEndTagCollection.IsAllyTurn(_exprList, GetType(), 2); } public float CalculateThreaten(AIVirtualCard tagOwner, ref Tuple[] allInplayStatusList) { return 0f; } public override void Execute(AIVirtualCard tagOwner, AIVirtualField field, List playPtn, AISituationInfo situation = null) { base.Execute(tagOwner, field, playPtn, situation); int tokenId = GetTokenId(); int addCount = GetAddCount(tagOwner, field, playPtn, situation); field.AddDeckCard(tokenId, addCount, tagOwner, playPtn, situation); } public int GetTokenId() { return _cardIdToken.EvalID(); } public int GetAddCount(AIVirtualCard tagOwner, AIVirtualField field, List playPtn, AISituationInfo situation) { if (_addCountExpression == null) { return 0; } return (int)_addCountExpression.EvalArg(tagOwner, playPtn, field, situation); } }