package com.tiedup.remake.entities.skins;

import com.tiedup.remake.entities.KidnapperVariant;

/**
 * Registry and manager for kidnapper skin variants.
 *
 * All skins from kidnapper folder, random selection.
 * 41 total skins (18 numbered + 23 named).
 */
public class KidnapperSkinManager {

    public static final SkinManagerCore<KidnapperVariant> CORE =
        new SkinManagerCore<>(
            "KidnapperSkinManager",
            "kidnapper",
            SkinDefinition::toKidnapperVariant,
            KidnapperSkinManager::loadHardcodedDefaults
        );

    /**
     * Initialize and register all default kidnapper variants.
     */
    public static void registerDefaults() {
        CORE.registerDefaults();
    }

    /**
     * Load hardcoded default skin variants.
     */
    private static void loadHardcodedDefaults() {
        // Numbered skins (knp_mob_1 to knp_mob_18)
        CORE.registerVariant(KidnapperVariant.create("knp_mob_1", false));
        CORE.registerVariant(KidnapperVariant.create("knp_mob_2", false));
        CORE.registerVariant(KidnapperVariant.create("knp_mob_3", false));
        CORE.registerVariant(KidnapperVariant.create("knp_mob_4", false));
        CORE.registerVariant(KidnapperVariant.create("knp_mob_5", false));
        CORE.registerVariant(KidnapperVariant.create("knp_mob_6", false));
        CORE.registerVariant(KidnapperVariant.create("knp_mob_7", false));
        CORE.registerVariant(KidnapperVariant.create("knp_mob_8", false));
        CORE.registerVariant(KidnapperVariant.create("knp_mob_9", false));
        CORE.registerVariant(KidnapperVariant.create("knp_mob_10", false));
        CORE.registerVariant(KidnapperVariant.create("knp_mob_11", false));
        CORE.registerVariant(KidnapperVariant.create("knp_mob_12", false));
        CORE.registerVariant(KidnapperVariant.create("knp_mob_13", false));
        CORE.registerVariant(KidnapperVariant.create("knp_mob_14", false));
        CORE.registerVariant(KidnapperVariant.create("knp_mob_15", false));
        CORE.registerVariant(KidnapperVariant.create("knp_mob_16", false));
        CORE.registerVariant(KidnapperVariant.create("knp_mob_17", false));
        CORE.registerVariant(KidnapperVariant.create("knp_mob_18", false));

        // Named skins (community/special)
        CORE.registerVariant(KidnapperVariant.create("blake", true, "Blake"));
        CORE.registerVariant(KidnapperVariant.create("darkie", true, "Darkie"));
        CORE.registerVariant(KidnapperVariant.create("dean", false, "Dean"));
        CORE.registerVariant(
            KidnapperVariant.create("eleanor", true, "Eleanor")
        );
        CORE.registerVariant(KidnapperVariant.create("esther", true, "Esther"));
        CORE.registerVariant(
            KidnapperVariant.create("fleur_dianthus", true, "Fleur Dianthus")
        );
        CORE.registerVariant(KidnapperVariant.create("fuya", true, "Fuya"));
        CORE.registerVariant(KidnapperVariant.create("jack", false, "Jack"));
        CORE.registerVariant(KidnapperVariant.create("jass", true, "Jass"));
        CORE.registerVariant(KidnapperVariant.create("ketulu", true, "Ketulu"));
        CORE.registerVariant(KidnapperVariant.create("kitty", true, "Kitty"));
        CORE.registerVariant(KidnapperVariant.create("kyra", true, "Kyra"));
        CORE.registerVariant(KidnapperVariant.create("lucina", true, "Lucina"));
        CORE.registerVariant(KidnapperVariant.create("misty", true, "Misty"));
        CORE.registerVariant(
            KidnapperVariant.create("nataleigh", true, "Nataleigh")
        );
        CORE.registerVariant(KidnapperVariant.create("nico", true, "Nico"));
        CORE.registerVariant(KidnapperVariant.create("ruby", true, "Ruby"));
        CORE.registerVariant(KidnapperVariant.create("ryuko", true, "Ryuko"));
        CORE.registerVariant(KidnapperVariant.create("teemo", false, "Teemo"));
        CORE.registerVariant(
            KidnapperVariant.create("welphia", true, "Welphia")
        );
        CORE.registerVariant(KidnapperVariant.create("wynter", true, "Wynter"));
        CORE.registerVariant(KidnapperVariant.create("yuti", true, "Yuti"));
        CORE.registerVariant(KidnapperVariant.create("zephyr", true, "Zephyr"));
    }
}
