using Wizard.Battle.View.Vfx;

public class UnitSkillApplyInformation : SkillApplyInformation
{
	public UnitSkillApplyInformation(BattleCardBase card, ICardVfxCreator vfxCreator)
		: base(card, vfxCreator)
	{
	}

	public override VfxBase GiveQuick()
	{
		base.QuickCount++;
		base.IsQuick = base.QuickCount > 0;
		if (_card.IsSummonDrunkenness && base.Player.IsSelfTurn)
		{
			_card.IsSummonDrunkenness = false;
		}
		return _vfxCreator.CreateQuick(_card.Attackable, _card.IsCantAttackClass);
	}

	public override VfxBase DepriveQuick()
	{
		base.QuickCount--;
		base.IsQuick = base.QuickCount > 0;
		GiveDrunkenness();
		bool isCantAttackClass = _card.IsCantAttackClass;
		return InstantVfx.Create(delegate
		{
			_card.BattleCardView._inPlayFrameEffect.UpdateCanAttackEffect(() => isCantAttackClass);
		});
	}

	public override VfxBase ForceDepriveQuick()
	{
		if (!_card.IsDead)
		{
			base.QuickCount = 0;
			base.IsQuick = false;
			GiveDrunkenness();
		}
		bool isCantAttackClass = _card.IsCantAttackClass;
		return InstantVfx.Create(delegate
		{
			_card.BattleCardView._inPlayFrameEffect.UpdateCanAttackEffect(() => isCantAttackClass);
		});
	}

	public override VfxBase GiveRush(RushInfo info)
	{
		base.RushInfo.Add(info);
		base.IsRush = base.RushInfo.Count > 0;
		if (_card.IsSummonDrunkenness && base.Player.IsSelfTurn)
		{
			_card.IsSummonDrunkenness = false;
		}
		return _vfxCreator.CreateQuick(_card.Attackable, _card.IsCantAttackClass);
	}

	public override VfxBase DepriveRush(RushInfo info)
	{
		base.RushInfo.Remove(info);
		base.IsRush = base.RushInfo.Count > 0;
		GiveDrunkenness();
		bool isCantAttackClass = _card.IsCantAttackClass;
		return InstantVfx.Create(delegate
		{
			_card.BattleCardView._inPlayFrameEffect.UpdateCanAttackEffect(() => isCantAttackClass);
		});
	}

	public override VfxBase ForceDepriveRush()
	{
		if (!_card.IsDead)
		{
			base.RushInfo.Clear();
			base.IsRush = false;
			GiveDrunkenness();
		}
		bool isCantAttackClass = _card.IsCantAttackClass;
		return InstantVfx.Create(delegate
		{
			_card.BattleCardView._inPlayFrameEffect.UpdateCanAttackEffect(() => isCantAttackClass);
		});
	}

	private void GiveDrunkenness()
	{
		if (base.RushInfo.Count <= 0 && base.QuickCount <= 0 && _card.IsFirstTurn)
		{
			_card.IsSummonDrunkenness = true;
		}
	}
}
