qstbak/Questionable/Questionable.Model/QuestInfoUtils.cs
2026-08-17 20:27:25 +10:00

225 lines
3.9 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)
{
int num = (optionalClassJobCategory.HasValue ? (-1115834397) : (-1115834399));
ClassJobCategory value = default(ClassJobCategory);
IReadOnlyList<EClassJob> readOnlyList = default(IReadOnlyList<EClassJob>);
while (true)
{
int num2 = num;
int num3 = -1115834400;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 0:
num = -1115834399;
break;
case 1:
return Enum.GetValues<EClassJob>();
case 4:
return readOnlyList;
case 3:
value = optionalClassJobCategory.Value;
num = ((!CachedClassJobs.TryGetValue(value.RowId, out readOnlyList)) ? (-1115834398) : (-1115834396));
break;
case 2:
readOnlyList = (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
},
{
EClassJob.Beastmaster,
value.Unknown0
}
}
where y.Value
select y.Key).ToList().AsReadOnly();
CachedClassJobs[value.RowId] = readOnlyList;
return readOnlyList;
}
}
}
}