using Terraria.ID;

namespace ProgressionGates
{
    public enum Engagements
    {
        SlimeRain = -1, 
        GoblinArmy = -2, 
        OldOnesArmy = -3, 
        BloodMoon = -4, 
        FrostLegion = -5, 
        SolarEclipse = -6, 
        PirateInvasion = -7, 
        FrostMoon = -8, 
        PumpkinMoon = -9, 
        MartianMadness = -10, 
        LunarPillars = -11, 

        UnusedOrError = 0,

        KingSlime = 1, 
        EyeOfCthulhu = 2, 
        EaterOfWorlds = 3, 
        BrainOfCthulhu = 4, 
        Deerclops = 5, 
        QueenBee = 6, 
        Skeletron = 7, 
        WallOfFlesh = 8, 
        QueenSlime = 9, 
        Destroyer = 10, 
        Twins = 11, 
        SkeletronPrime = 12, 
        DukeFishron = 13,
        Plantera = 14, 
        EmpressOfLight = 15, 
        Golem = 16, 
        LunaticCultist = 17, 
        MoonLord = 18, 
    }
    
    public static class EngagementsFunctions
    {
        public static Engagements FromID(int id)
        {
            switch (id)
            {
                case NPCID.KingSlime:
                    return Engagements.KingSlime;
                case NPCID.EyeofCthulhu:
                    return Engagements.EyeOfCthulhu;
                case NPCID.EaterofWorldsHead:
                case NPCID.EaterofWorldsBody:
                case NPCID.EaterofWorldsTail:
                    return Engagements.EaterOfWorlds;
                case NPCID.BrainofCthulhu:
                    return Engagements.BrainOfCthulhu;
                case NPCID.Deerclops:
                    return Engagements.Deerclops;
                case NPCID.QueenBee:
                    return Engagements.QueenBee;
                case NPCID.SkeletronHead:
                case NPCID.SkeletronHand:
                    return Engagements.Skeletron;
                case NPCID.WallofFlesh:
                case NPCID.WallofFleshEye:
                    return Engagements.WallOfFlesh;
                case NPCID.QueenSlimeBoss:
                    return Engagements.QueenSlime;
                case NPCID.TheDestroyer:
                case NPCID.TheDestroyerBody:
                case NPCID.TheDestroyerTail:
                    return Engagements.Destroyer;
                case NPCID.Spazmatism:
                case NPCID.Retinazer:
                    return Engagements.Twins;
                case NPCID.SkeletronPrime:
                case NPCID.PrimeLaser:
                case NPCID.PrimeCannon:
                case NPCID.PrimeSaw:
                case NPCID.PrimeVice:
                    return Engagements.SkeletronPrime;
                case NPCID.DukeFishron:
                    return Engagements.DukeFishron;
                case NPCID.Plantera:
                case NPCID.PlanterasTentacle:
                    return Engagements.Plantera;
                case NPCID.HallowBoss:
                    return Engagements.EmpressOfLight;
                case NPCID.Golem:
                case NPCID.GolemHead:
                case NPCID.GolemFistLeft:
                case NPCID.GolemFistRight:
                    return Engagements.Golem;
                case NPCID.CultistBoss:
                    return Engagements.LunaticCultist;
                case NPCID.MoonLordCore:
                case NPCID.MoonLordHead:
                case NPCID.MoonLordHand:
                    return Engagements.MoonLord;
                case -1:
                    return Engagements.GoblinArmy;
                case -2:
                    return Engagements.FrostLegion;
                case -3:
                    return Engagements.PirateInvasion;
                case -4:
                    return Engagements.PumpkinMoon;
                case -5:
                    return Engagements.FrostMoon;
                case -6:
                    return Engagements.SolarEclipse;
                case -7:
                    return Engagements.MartianMadness;
                case -10:
                    return Engagements.BloodMoon;

                default:
                    return Engagements.UnusedOrError;
            }
        }
    }
}