package eu.jonahbauer.wizard.core.model.deck;

import eu.jonahbauer.wizard.common.model.Card;
import lombok.experimental.UtilityClass;

import java.util.*;

@UtilityClass
public class Decks {
    public static final Set<Card> DEFAULT = Collections.unmodifiableSet(new LinkedHashSet<>(List.of(
            Card.BLUE_1, Card.RED_1, Card.GREEN_1, Card.YELLOW_1,
            Card.BLUE_2, Card.RED_2, Card.GREEN_2, Card.YELLOW_2,
            Card.BLUE_3, Card.RED_3, Card.GREEN_3, Card.YELLOW_3,
            Card.BLUE_4, Card.RED_4, Card.GREEN_4, Card.YELLOW_4,
            Card.BLUE_5, Card.RED_5, Card.GREEN_5, Card.YELLOW_5,
            Card.BLUE_6, Card.RED_6, Card.GREEN_6, Card.YELLOW_6,
            Card.BLUE_7, Card.RED_7, Card.GREEN_7, Card.YELLOW_7,
            Card.BLUE_8, Card.RED_8, Card.GREEN_8, Card.YELLOW_8,
            Card.BLUE_9, Card.RED_9, Card.GREEN_9, Card.YELLOW_9,
            Card.BLUE_10, Card.RED_10, Card.GREEN_10, Card.YELLOW_10,
            Card.BLUE_11, Card.RED_11, Card.GREEN_11, Card.YELLOW_11,
            Card.BLUE_12, Card.RED_12, Card.GREEN_12, Card.YELLOW_12,
            Card.BLUE_13, Card.RED_13, Card.GREEN_13, Card.YELLOW_13,
            Card.BLUE_JESTER, Card.RED_JESTER, Card.GREEN_JESTER, Card.YELLOW_JESTER,
            Card.BLUE_WIZARD, Card.RED_WIZARD, Card.GREEN_WIZARD, Card.YELLOW_WIZARD
    )));

    public static final Set<Card> ANNIVERSARY_2016 = Collections.unmodifiableSet(new LinkedHashSet<>(List.of(
            Card.BLUE_1, Card.RED_1, Card.GREEN_1, Card.YELLOW_1,
            Card.BLUE_2, Card.RED_2, Card.GREEN_2, Card.YELLOW_2,
            Card.BLUE_3, Card.RED_3, Card.GREEN_3, Card.YELLOW_3,
            Card.BLUE_4, Card.RED_4, Card.GREEN_4, Card.YELLOW_4,
            Card.BLUE_5, Card.RED_5, Card.GREEN_5, Card.YELLOW_5,
            Card.BLUE_6, Card.RED_6, Card.GREEN_6, Card.YELLOW_6,
            Card.BLUE_7, Card.RED_7, Card.GREEN_7, Card.YELLOW_7,
            Card.BLUE_8, Card.RED_8, Card.GREEN_8, Card.YELLOW_8,
            Card.BLUE_9, Card.RED_9, Card.GREEN_9, Card.YELLOW_9,
            Card.BLUE_10, Card.RED_10, Card.GREEN_10, Card.YELLOW_10,
            Card.BLUE_11, Card.RED_11, Card.GREEN_11, Card.YELLOW_11,
            Card.BLUE_12, Card.RED_12, Card.GREEN_12, Card.YELLOW_12,
            Card.BLUE_13, Card.RED_13, Card.GREEN_13, Card.YELLOW_13,
            Card.BLUE_JESTER, Card.RED_JESTER, Card.GREEN_JESTER, Card.YELLOW_JESTER,
            Card.BLUE_WIZARD, Card.RED_WIZARD, Card.GREEN_WIZARD, Card.YELLOW_WIZARD,
            Card.WEREWOLF, Card.BOMB, Card.DRAGON, Card.FAIRY, Card.JUGGLER, Card.CLOUD
    )));

    public static final Set<Card> ANNIVERSARY_2021 = Collections.unmodifiableSet(new LinkedHashSet<>(List.of(
            Card.BLUE_1, Card.RED_1, Card.GREEN_1, Card.YELLOW_1,
            Card.BLUE_2, Card.RED_2, Card.GREEN_2, Card.YELLOW_2,
            Card.BLUE_3, Card.RED_3, Card.GREEN_3, Card.YELLOW_3,
            Card.BLUE_4, Card.RED_4, Card.GREEN_4, Card.YELLOW_4,
            Card.BLUE_5, Card.RED_5, Card.GREEN_5, Card.YELLOW_5,
            Card.BLUE_6, Card.RED_6, Card.GREEN_6, Card.YELLOW_6,
            Card.BLUE_7, Card.RED_7, Card.GREEN_7, Card.YELLOW_7,
            Card.BLUE_8, Card.RED_8, Card.GREEN_8, Card.YELLOW_8,
            Card.BLUE_9, Card.RED_9, Card.GREEN_9, Card.YELLOW_9,
            Card.BLUE_10, Card.RED_10, Card.GREEN_10, Card.YELLOW_10,
            Card.BLUE_11, Card.RED_11, Card.GREEN_11, Card.YELLOW_11,
            Card.BLUE_12, Card.RED_12, Card.GREEN_12, Card.YELLOW_12,
            Card.BLUE_13, Card.RED_13, Card.GREEN_13, Card.YELLOW_13,
            Card.BLUE_JESTER, Card.RED_JESTER, Card.GREEN_JESTER, Card.YELLOW_JESTER,
            Card.BLUE_WIZARD, Card.RED_WIZARD, Card.GREEN_WIZARD, Card.YELLOW_WIZARD,
            Card.WEREWOLF, Card.BOMB, Card.DRAGON, Card.FAIRY, Card.JUGGLER, Card.CLOUD, Card.CHANGELING
    )));
}
