package eu.mhsl.minenet.minigames.instance.game;

import eu.mhsl.minenet.minigames.instance.game.stateless.config.GameFactory;
import eu.mhsl.minenet.minigames.instance.game.stateless.types.anvilRun.AnvilRunFactory;
import eu.mhsl.minenet.minigames.instance.game.stateless.types.bowSpleef.BowSpleefFactory;
import eu.mhsl.minenet.minigames.instance.game.stateless.types.elytraRace.ElytraRaceFactory;
import eu.mhsl.minenet.minigames.instance.game.stateless.types.backrooms.BackroomsFactory;
import eu.mhsl.minenet.minigames.instance.game.stateless.types.bedwars.BedwarsFactory;
import eu.mhsl.minenet.minigames.instance.game.stateless.types.acidRain.AcidRainFactory;
import eu.mhsl.minenet.minigames.instance.game.stateless.types.deathcube.DeathcubeFactory;
import eu.mhsl.minenet.minigames.instance.game.stateless.types.jumpDive.JumpDiveFactory;
import eu.mhsl.minenet.minigames.instance.game.stateless.types.minerun.MinerunFactory;
import eu.mhsl.minenet.minigames.instance.game.stateless.types.spleef.SpleefFactory;
import eu.mhsl.minenet.minigames.instance.game.stateless.types.stickfight.StickFightFactory;
import eu.mhsl.minenet.minigames.instance.game.stateless.types.tetris.TetrisFactory;
import eu.mhsl.minenet.minigames.instance.game.stateless.types.tntrun.TntRunFactory;
import eu.mhsl.minenet.minigames.instance.game.stateless.types.towerdefense.TowerdefenseFactory;
import eu.mhsl.minenet.minigames.instance.game.stateless.types.trafficlightrace.TrafficLightRaceFactory;

public enum GameList {
    DEATHCUBE(new DeathcubeFactory(), GameType.JUMPNRUN),
    MINERUN(new MinerunFactory(), GameType.JUMPNRUN),
    TRAFFICLIGHTRACE(new TrafficLightRaceFactory(), GameType.OTHER),
    STICKFIGHT(new StickFightFactory(), GameType.PROTOTYPE),
    TOWERDEFENSE(new TowerdefenseFactory(), GameType.PROTOTYPE),
    BEDWARS(new BedwarsFactory(), GameType.PROTOTYPE),
    BACKROOMS(new BackroomsFactory(), GameType.PROTOTYPE),
    BOWSPLEEF(new BowSpleefFactory(), GameType.PROTOTYPE),
    TETRIS(new TetrisFactory(), GameType.OTHER),
    TNTRUN(new TntRunFactory(), GameType.OTHER),
    ANVILRUN(new AnvilRunFactory(), GameType.PVE),
    ACIDRAIN(new AcidRainFactory(), GameType.PVE),
    ELYTRARACE(new ElytraRaceFactory(), GameType.PVP),
    SPLEEF(new SpleefFactory(), GameType.PVP),
    JUMPDIVE(new JumpDiveFactory(), GameType.JUMPNRUN);

    private final GameFactory factory;
    private final GameType type;
    GameList(GameFactory factory, GameType type) {
        this.factory = factory;
        this.type = type;
    }
    public GameFactory getFactory() {
        return this.factory;
    }

    public GameType getType() {
        return type;
    }
}
