using System.Linq;
using Wizard;
using Wizard.Battle;

public class SkillConditionBurialRite : ISkillConditionChecker
{
	private BattleCardBase _ownerCard;

	private bool _isInvoked;

	public bool judgeFlg { get; private set; }

	public SkillConditionBurialRite(BattleCardBase card, string flg)
	{
		judgeFlg = flg == "true";
		_ownerCard = card;
	}

	public bool IsRight(BattlePlayerReadOnlyInfoPair playerInfoPair, SkillConditionCheckerOption option, bool PreexecutionCheck = false)
	{
		if (_isInvoked)
		{
			return judgeFlg;
		}
		return IsBurialRite(playerInfoPair) == judgeFlg;
	}

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

	private bool IsBurialRite(BattlePlayerReadOnlyInfoPair playerInfoPair)
	{
		if (playerInfoPair.ReadOnlySelf.SkillInfoInPlayCards.Count() <= ((_ownerCard.IsInplay || _ownerCard.IsSpell) ? 4 : 3))
		{
			return playerInfoPair.ReadOnlySelf.SkillInfoHandCards.Any((IReadOnlyBattleCardInfo s) => s != _ownerCard && s != _ownerCard.TransformInfo.OriginalCard && s.IsUnit);
		}
		return false;
	}

	public void SetInvoked()
	{
		_isInvoked = true;
	}
}
