using Wizard;
using Wizard.Battle.View.Vfx;

public class SkillPreprocessTurnEndPeriodOfStopTime : SkillPreprocessPeriodBase
{
	private SkillBase _skill;

	private BattleCardBase _ownerCard;

	public SkillPreprocessTurnEndPeriodOfStopTime(SkillBase skill, BattleCardBase ownerCard, string period)
		: base(ownerCard, period)
	{
		_skill = skill;
		_ownerCard = ownerCard;
	}

	public override bool IsRight(BattlePlayerReadOnlyInfoPair playerInfoPair, SkillConditionCheckerOption option, bool PreexecutionCheck = false)
	{
		return true;
	}

	public override VfxBase Start(BattlePlayerPair playerPair, SkillBase skill, SkillProcessor skillProcessor, SkillOptionValue optionValue, SkillConditionCheckerOption checkerOption)
	{
		_ownerCard.SelfBattlePlayer.OnTurnStartBeforeDraw -= TurnStartFunction;
		_ownerCard.SelfBattlePlayer.OnTurnStartBeforeDraw += TurnStartFunction;
		_ownerCard.SelfBattlePlayer.OnTurnEnd -= TurnEndFunction;
		_ownerCard.SelfBattlePlayer.OnTurnEnd += TurnEndFunction;
		return NullVfx.GetInstance();
	}

	private VfxBase TurnStartFunction(SkillProcessor skillProcessor)
	{
		ReducePeriodCount();
		return NullVfx.GetInstance();
	}

	private VfxBase TurnEndFunction(SkillProcessor skillProcessor)
	{
		if (_effectiveRange == base.PeriodCount)
		{
			return StopSkill(_skill, skillProcessor);
		}
		return NullVfxWithLoading.GetInstance();
	}
}
