package emu.nebula.game.quest;

import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import lombok.Getter;

public enum QuestCondType {
    BattleTotal                                                                   (3),
    BattlesTotalWithPartner                                                       (4),
    CharacterAcquireQuantityRarityAndAdvancement                                  (6),
    CharacterAdvanceTotal                                                         (7),
    CharacterSkillUpTotal                                                         (8),
    CharacterSkillWithSpecificUpTotal                                             (9),
    CharacterUpTotal                                                              (12),
    CharacterWithSpecificAdvance                                                  (13),
    CharacterWithSpecificUpLevel                                                  (15),
    CharactersWithSpecificNumberLevelAndAttributes                                (17),
    CharactersWithSpecificQuantityAdvancementCountAndAttribute                    (19),
    CharactersWithSpecificQuantityRarityAndLevel                                  (22),
    ChatTotal                                                                     (23),
    DailyInstanceClearSpecificDifficultyAndTotal                                  (24),
    DailyInstanceClearSpecificTypeAndTotal                                        (25),
    DailyInstanceClearTotal                                                       (26),
    DiscAcquireQuantityLevelAndRarity                                             (30),
    DiscAcquireQuantityPhaseAndRarity                                             (31),
    DiscAcquireQuantityStarAndRarity                                              (32),
    DiscLimitBreakTotal                                                           (33),
    DiscPromoteTotal                                                              (34),
    DiscStrengthenTotal                                                           (35),
    DiscWithSpecificQuantityLevelAndRarity                                        (36),
    DiscWithSpecificQuantityPhaseAndRarity                                        (37),
    DiscWithSpecificQuantityStarAndRarity                                         (38),
    EnergyDeplete                                                                 (39),
    GachaTotal                                                                    (44),
    GiftGiveTotal                                                                 (45),
    InfinityTowerClearSpecificFloor                                               (46),
    InfinityTowerClearTotal                                                       (47),
    ItemsAdd                                                                      (48),
    ItemsDeplete                                                                  (49),
    ItemsProductTotal                                                             (50),
    LoginTotal                                                                    (51),
    QuestTravelerDuelChallengeTotal                                               (52),
    QuestTourGuideSpecific                                                        (53),
    QuestTravelerDuelSpecific                                                     (54),
    QuestWithSpecificType                                                         (55),
    RegionBossClearSpecificFullStarWithBossIdAndDifficulty                        (56),
    RegionBossClearSpecificLevelWithDifficultyAndTotal                            (57),
    RegionBossClearSpecificTotal                                                  (58),
    RegionBossClearTotal                                                          (59),
    SkillsWithSpecificQuantityAndLevel                                            (60),
    StageClearSpecificStars                                                       (62),
    StoryClear                                                                    (63),
    TravelerDuelChallengeSpecificBoosLevelWithDifficultyAndTotal                  (64),
    TravelerDuelClearBossTotal                                                    (65),
    TravelerDuelClearSpecificBossIdAndDifficulty                                  (66),
    TravelerDuelChallengeClearSpecificBossLevelAndAffix                           (67),
    TravelerDuelClearSpecificBossLevelWithDifficultyAndTotal                      (68),
    TravelerDuelClearSpecificBossTotal                                            (69),
    TravelerDuelChallengeRankUploadTotal                                          (70),
    WorldClassSpecific                                                            (71),
    RegionBossClearSpecificTypeWithTotal                                          (72),
    CharactersWithSpecificDatingCount                                             (73),
    CharactersDatingTotal                                                         (74),
    VampireSurvivorPassedSpecificLevel                                            (77),
    CharacterParticipateTowerNumber                                               (78),
    CharacterAllSkillReachSpecificLevel                                           (79),
    TravelerDuelPlayTotal                                                         (80),
    VampireClearTotal                                                             (81),
    VampireWithSpecificClearTotal                                                 (82),
    AgentFinishTotal                                                              (83),
    AgentWithSpecificFinishTotal                                                  (84),
    ActivityMiningEnterLayer                                                      (86),
    ActivityMiningDestroyGrid                                                     (87),
    BossRushTotalStars                                                            (88),
    InfinityTowerClearSpecificDifficultyAndTotal                                  (89),
    SkillInstanceClearTotal                                                       (90),
    VampireSurvivorSpecificPassedLevel                                            (91),
    WeekBoosClearSpecificDifficultyAndTotal                                       (92),
    NpcAffinityWithSpecificLevel                                                  (93),
    CharacterPassedWithSpecificTowerAndCount                                      (94),
    ActivityCookieLevelAccPackage                                                 (96),
    ActivityCookieLevelScore                                                      (97),
    ActivityCookieTypeAccPackage                                                  (98),
    ActivityCookieTypeAccPackCookie                                               (99),
    ActivityCookieTypeAccRhythm                                                   (100),
    ActivityCookieTypeChallenge                                                   (101),
    CharGemInstanceClearTotal                                                     (104),
    DailyShopReceiveShopTotal                                                     (105),
    AgentApplyTotal                                                               (106),
    ActivityScore                                                                 (107),
    ActivityTypeAvgReadWithSpecificIdAndLevelId                                   (108),
    ActivityTypeLevelPassedWithSpecificIdAndLevelId                               (109),
    ActivityTypeLevel3StarPassedWithSpecificIdAndLevelId                          (110),
    ActivityTypeLevelStarWithSpecificIdAndLevelTypeTotal                          (111),
    ActivityTypeLevelPassedWithSpecificIdAndLevelIdAndSpecificPositionAndCharElem (112),
    ActivityTypeLevelPassedSpecificIdTotal                                        (113),
    ClientReport                                                                  (200),
    TowerBuildSpecificScoreWithTotal                                              (504),
    TowerClearSpecificLevelWithDifficultyAndTotal                                 (507),
    TowerEnterTotal                                                               (510),
    TowerSpecificDifficultyShopBuyTimes                                           (514),
    TowerGrowthSpecificNote                                                       (515),
    TowerClearSpecificLevelWithDifficultyAndTotalHistory                          (516),
    TowerBookWithSpecificEvent                                                    (517),
    TowerBookWithSpecificFateCard                                                 (518),
    TowerBookWithSpecificPotential                                                (520),
    TowerBuildSpecificDifficultyAndScoreWithTotal                                 (521),
    TowerSpecificDifficultyStrengthenMachineTotal                                 (522),
    TowerSpecificDifficultyKillBossTotal                                          (524),
    TowerBookSpecificCharWithPotentialTotal                                       (525),
    TowerBuildSpecificCharSpecificScoreWithTotal                                  (526),
    TowerGrowthWithSpecificNote                                                   (527),
    TowerSpecificFateCardReRollTotal                                              (528),
    TowerSpecificPotentialReRollTotal                                             (529),
    TowerSpecificShopReRollTotal                                                  (530),
    TowerSpecificNoteActivateTotal                                                (531),
    TowerSpecificNoteLevelTotal                                                   (532),
    TowerSpecificPotentialBonusTotal                                              (533),
    TowerSpecificPotentialLuckyTotal                                              (534),
    TowerSpecificShopBuyDiscountTotal                                             (535),
    TowerSpecificSecondarySkillActivateTotal                                      (536),
    TowerSpecificGetExtraNoteLvTotal                                              (537),
    TowerEnterFloor                                                               (538),
    TowerSweepTimes                                                               (539),
    TowerSweepTotal                                                               (540);

    @Getter
    private final int value;
    private final static Int2ObjectMap<QuestCondType> map = new Int2ObjectOpenHashMap<>();

    static {
        for (QuestCondType type : QuestCondType.values()) {
            map.put(type.getValue(), type);
        }
    }

    private QuestCondType(int value) {
        this.value = value;
    }

    public static QuestCondType getByValue(int value) {
        return map.get(value);
    }
}
