namespace Wizard;

public class CloneActualFlags
{
	private static readonly CloneActualFlags INPLAY_AND_HAND = new CloneActualFlags(inPlay: true, hand: true, deck: false, cemetery: false, banish: false, necromanceZone: false, fusionMaterial: false, unite: false, geton: false);

	private static readonly CloneActualFlags INPLAY = new CloneActualFlags(inPlay: true, hand: false, deck: false, cemetery: false, banish: false, necromanceZone: false, fusionMaterial: false, unite: false, geton: false);

	private static readonly CloneActualFlags ALL = new CloneActualFlags(inPlay: true, hand: true, deck: true, cemetery: true, banish: true, necromanceZone: true, fusionMaterial: true, unite: true, geton: true);

	public static CloneActualFlags InPlayAndHand => INPLAY_AND_HAND;

	public static CloneActualFlags InPlayCards => INPLAY;

	public static CloneActualFlags All => ALL;

	public bool InPlay { get; private set; }

	public bool Hand { get; private set; }

	public bool Deck { get; private set; }

	public bool Cemetery { get; private set; }

	public bool Banish { get; private set; }

	public bool NecromanceZone { get; private set; }

	public bool FusionMaterial { get; private set; }

	public bool Unite { get; private set; }

	public bool GetOn { get; private set; }

	public CloneActualFlags(bool inPlay, bool hand, bool deck, bool cemetery, bool banish, bool necromanceZone, bool fusionMaterial, bool unite, bool geton)
	{
		InPlay = inPlay;
		Hand = hand;
		Deck = deck;
		Cemetery = cemetery;
		Banish = banish;
		NecromanceZone = necromanceZone;
		FusionMaterial = fusionMaterial;
		Unite = unite;
		GetOn = geton;
	}
}
