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

public class SkillPreprocessUseEvolutionPoint : SkillPreprocessBase
{
	private readonly int _consumeValue;

	private readonly BattleCardBase _ownerCard;

	public SkillPreprocessUseEvolutionPoint(int count, BattleCardBase ownerCard)
	{
		_consumeValue = count;
		_ownerCard = ownerCard;
	}

	public override bool IsRight(BattlePlayerReadOnlyInfoPair playerInfoPair, SkillConditionCheckerOption option, bool PreexecutionCheck = false)
	{
		if (playerInfoPair.ReadOnlySelf.EvolveWaitTurnCount <= 0)
		{
			return playerInfoPair.ReadOnlySelf.CurrentEpCount >= _consumeValue;
		}
		return false;
	}

	public override VfxBase Start(BattlePlayerPair playerPair, SkillBase skill, SkillProcessor skillProcessor, SkillOptionValue optionValue, SkillConditionCheckerOption checkerOption)
	{
		int currentEpCount = playerPair.ReadOnlySelf.CurrentEpCount;
		int num = currentEpCount - _consumeValue;
		int epTotal = playerPair.Self.EpTotal;
		playerPair.Self.UseEpCount(_consumeValue);
		playerPair.Self.StartSkillWhenUseEpSelfAndOther(skillProcessor);
		playerPair.Self.CallOnEpModifier(_ownerCard, _consumeValue * -1, isAdd: true);
		if (playerPair.Self.BattleMgr is NetworkStandardBattleMgr networkStandardBattleMgr)
		{
			networkStandardBattleMgr.RegisterUseEpTrigger(playerPair.Self);
		}
		ParallelVfxPlayer parallelVfxPlayer = ParallelVfxPlayer.Create();
		parallelVfxPlayer.Register(new EpChangeVfx(playerPair.Self, currentEpCount, num, epTotal));
		if (!playerPair.Self.BattleMgr.IsVirtualBattle)
		{
			BattleLogManager.GetInstance().AddLogSkillSetEP(num, playerPair.Self.Class, skill);
		}
		return parallelVfxPlayer;
	}
}
