using System; using System.Collections.Generic; using System.Linq; using Wizard; using Wizard.Battle.View.Vfx; public class SkillPreprocessTurnStartSkill : SkillPreprocessBase { private string _target; private string _timingText; private int _turnCount; private int _turnStartCallCount; private Func _addTurnStartCallCountOnPlayerTurn; public SkillPreprocessTurnStartSkill(BattleCardBase ownerCard, string target) { SkillPreprocessTurnStartSkill skillPreprocessTurnStartSkill = this; _turnStartCallCount = 0; List list = DisassemblySpecialString(target).ToList(); _target = list[0]; BattlePlayerBase battlePlayer = ((_target == "me") ? ownerCard.SelfBattlePlayer : ownerCard.OpponentBattlePlayer); string[] array = list[1].Split('='); _timingText = array[0]; _turnCount = int.Parse(array[1]); _addTurnStartCallCountOnPlayerTurn = delegate { if (battlePlayer.IsSelfTurn) { skillPreprocessTurnStartSkill._turnStartCallCount++; return NullVfx.GetInstance(); } return NullVfx.GetInstance(); }; string timingText = _timingText; if (timingText != null && timingText == "me_turn_start_count") { battlePlayer.OnTurnStartBeforeDraw += _addTurnStartCallCountOnPlayerTurn; } } public override bool IsRight(BattlePlayerReadOnlyInfoPair playerInfoPair, SkillConditionCheckerOption option, bool PreexecutionCheck = false) { return _turnStartCallCount >= _turnCount; } public override VfxBase Start(BattlePlayerPair playerPair, SkillBase skill, SkillProcessor skillProcessor, SkillOptionValue optionValue, SkillConditionCheckerOption checkerOption) { BattlePlayerBase battlePlayerBase = ((_target == "me") ? playerPair.Self : playerPair.Opponent); string timingText = _timingText; if (timingText != null && timingText == "me_turn_start_count") { battlePlayerBase.OnTurnStartBeforeDraw -= _addTurnStartCallCountOnPlayerTurn; } return NullVfx.GetInstance(); } }