qstbak/Questionable/Questionable.Model/QuestInfoUtils.cs
2025-10-09 07:47:19 +10:00

204 lines
3.1 KiB
C#

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<uint, IReadOnlyList<EClassJob>> CachedClassJobs = new Dictionary<uint, IReadOnlyList<EClassJob>>();
internal static IReadOnlyList<EClassJob> AsList(ClassJobCategory? optionalClassJobCategory)
{
if (!optionalClassJobCategory.HasValue)
{
return Enum.GetValues<EClassJob>();
}
ClassJobCategory value = optionalClassJobCategory.Value;
if (CachedClassJobs.TryGetValue(value.RowId, out IReadOnlyList<EClassJob> value2))
{
return value2;
}
value2 = (from y in new Dictionary<EClassJob, bool>
{
{
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;
}
}