using System; using System.Collections.Generic; using System.Linq; using LLib.GameData; using Lumina.Excel.Sheets; namespace Questionable.Model; internal static class QuestInfoUtils { private static readonly Dictionary> CachedClassJobs = new Dictionary>(); internal static IReadOnlyList AsList(ClassJobCategory? optionalClassJobCategory) { if (!optionalClassJobCategory.HasValue) { return Enum.GetValues(); } ClassJobCategory value = optionalClassJobCategory.Value; if (CachedClassJobs.TryGetValue(value.RowId, out IReadOnlyList value2)) { return value2; } value2 = (from y in new Dictionary { { EClassJob.Adventurer, value.ADV }, { EClassJob.Gladiator, value.GLA }, { EClassJob.Pugilist, value.PGL }, { EClassJob.Marauder, value.MRD }, { EClassJob.Lancer, value.LNC }, { EClassJob.Archer, value.ARC }, { EClassJob.Conjurer, value.CNJ }, { EClassJob.Thaumaturge, value.THM }, { EClassJob.Carpenter, value.CRP }, { EClassJob.Blacksmith, value.BSM }, { EClassJob.Armorer, value.ARM }, { EClassJob.Goldsmith, value.GSM }, { EClassJob.Leatherworker, value.LTW }, { EClassJob.Weaver, value.WVR }, { EClassJob.Alchemist, value.ALC }, { EClassJob.Culinarian, value.CUL }, { EClassJob.Miner, value.MIN }, { EClassJob.Botanist, value.BTN }, { EClassJob.Fisher, value.FSH }, { EClassJob.Paladin, value.PLD }, { EClassJob.Monk, value.MNK }, { EClassJob.Warrior, value.WAR }, { EClassJob.Dragoon, value.DRG }, { EClassJob.Bard, value.BRD }, { EClassJob.WhiteMage, value.WHM }, { EClassJob.BlackMage, value.BLM }, { EClassJob.Arcanist, value.ACN }, { EClassJob.Summoner, value.SMN }, { EClassJob.Scholar, value.SCH }, { EClassJob.Rogue, value.ROG }, { EClassJob.Ninja, value.NIN }, { EClassJob.Machinist, value.MCH }, { EClassJob.DarkKnight, value.DRK }, { EClassJob.Astrologian, value.AST }, { EClassJob.Samurai, value.SAM }, { EClassJob.RedMage, value.RDM }, { EClassJob.BlueMage, value.BLU }, { EClassJob.Gunbreaker, value.GNB }, { EClassJob.Dancer, value.DNC }, { EClassJob.Reaper, value.RPR }, { EClassJob.Sage, value.SGE }, { EClassJob.Viper, value.VPR }, { EClassJob.Pictomancer, value.PCT } } where y.Value select y.Key).ToList().AsReadOnly(); CachedClassJobs[value.RowId] = value2; return value2; } }