using Wizard.Battle.Operation;
using Wizard.Battle.Resource;
using Wizard.Battle.View;
using Wizard.Battle.View.Vfx;

namespace Wizard.Battle.Card;

public class VirtualUnitBattleCard : UnitBattleCard, IVirtualBattleCard
{
	public bool UsedRandomSkill { get; set; }

	public VirtualUnitBattleCard(BuildInfo buildInfo)
		: base(buildInfo)
	{
	}

	public override VfxBase TurnStart(SkillProcessor skillProcessor)
	{
		return base.TurnStart(skillProcessor);
	}

	protected override IBattleCardView CreateView(BattleCardView.BuildInfo buildInfo, bool isNullView)
	{
		return new NullBattleCardView(buildInfo);
	}

	protected override ICardVfxCreator CreateVfxCreator(bool isPlayer, IBattleCardView battleCardView, bool isNullView)
	{
		return NullCardVfxCreator.GetInstance();
	}

	public override SkillCreator CreateSkillCreator(BattlePlayerBase selfBattlPlayer, BattlePlayerBase opponentBattlePlayer, IBattleResourceMgr resourceMgr)
	{
		return new SimulateSkillCreator(this, selfBattlPlayer, opponentBattlePlayer, _buildInfo.ResourceMgr);
	}

	public override VfxBase LoadResource(bool isLogging = false)
	{
		return NullVfx.GetInstance();
	}

	public override VfxBase UnloadResource()
	{
		return NullVfx.GetInstance();
	}
}
