Files
Navmesher/Navmesher/esx_reader_lut.cpp
2022-10-14 16:23:24 +11:00

319 lines
13 KiB
C++

#include "esx_reader.hpp"
using namespace esxr;
namespace esxr_lut {
static constexpr std::pair<RecordType, std::string_view> record_type_name_map[] = {
{RecordType::AACT, "Action"},
{RecordType::ACHR, "Placed NPC"},
{RecordType::ACTI, "Activator"},
{RecordType::ADDN, "Addon Node"},
{RecordType::ALCH, "Ingestible"},
{RecordType::AMMO, "Ammunition"},
{RecordType::ANIO, "Animated Object"},
{RecordType::APPA, "Alchemical Apparatus"},
{RecordType::ARMA, "Armor Addon"},
{RecordType::ARMO, "Armor"},
{RecordType::ARTO, "Art Object"},
{RecordType::ASPC, "Acoustic Space"},
{RecordType::ASTP, "Association Type"},
{RecordType::AVIF, "Actor Value Information"},
{RecordType::BOOK, "Book"},
{RecordType::BPTD, "Body Part Data"},
{RecordType::CAMS, "Camera Shot"},
{RecordType::CELL, "Cell"},
{RecordType::CLAS, "Class"},
{RecordType::CLDC, "CLDC"},
{RecordType::CLFM, "Color"},
{RecordType::CLMT, "Climate"},
{RecordType::COBJ, "Constructible Object"},
{RecordType::COLL, "Collision Layer"},
{RecordType::CONT, "Container"},
{RecordType::CPTH, "Camera Path"},
{RecordType::CSTY, "Combat Style"},
{RecordType::DEBR, "Debris"},
{RecordType::DIAL, "Dialog Topic"},
{RecordType::DLBR, "Dialog Branch"},
{RecordType::DLVW, "Dialog View"},
{RecordType::DOBJ, "Default Object Manager"},
{RecordType::DOOR, "Door"},
{RecordType::DUAL, "Dual Cast Data"},
{RecordType::ECZN, "Encounter Zone"},
{RecordType::EFSH, "Effect Shader"},
{RecordType::ENCH, "Object Effect"},
{RecordType::EQUP, "Equip Type"},
{RecordType::EXPL, "Explosion"},
{RecordType::EYES, "Eyes"},
{RecordType::FACT, "Faction"},
{RecordType::FLOR, "Flora"},
{RecordType::FLST, "FormID List"},
{RecordType::FSTP, "Footstep"},
{RecordType::FSTS, "Footstep Set"},
{RecordType::FURN, "Furniture"},
{RecordType::GLOB, "Global"},
{RecordType::GMST, "Game Setting"},
{RecordType::GRAS, "Grass"},
{RecordType::GRUP, "Internal File Structure Group"},
{RecordType::HAIR, "HAIR"},
{RecordType::HAZD, "Hazard"},
{RecordType::HDPT, "Head Part"},
{RecordType::IDLE, "Idle Animation"},
{RecordType::IDLM, "Idle Marker"},
{RecordType::IMAD, "Image Space Adapter"},
{RecordType::IMGS, "Image Space"},
{RecordType::INFO, "Dialog response"},
{RecordType::INGR, "Ingredient"},
{RecordType::IPCT, "Impact"},
{RecordType::IPDS, "Impact Data Set"},
{RecordType::KEYM, "Key"},
{RecordType::KYWD, "Keyword"},
{RecordType::LAND, "Landscape"},
{RecordType::LCRT, "Location Reference Type"},
{RecordType::LCTN, "Location"},
{RecordType::LENS, "Lens Flare"},
{RecordType::LGTM, "Lighting Template"},
{RecordType::LIGH, "Light"},
{RecordType::LSCR, "Load Screen"},
{RecordType::LTEX, "Landscape Texture"},
{RecordType::LVLI, "Leveled Item"},
{RecordType::LVLN, "Leveled NPC"},
{RecordType::LVSP, "Leveled Spell"},
{RecordType::MATO, "Material Object"},
{RecordType::MATT, "Material Type"},
{RecordType::MESG, "Message"},
{RecordType::MGEF, "Magic Effect"},
{RecordType::MISC, "Misc.Item"},
{RecordType::MOVT, "Movement Type"},
{RecordType::MSTT, "Moveable Static"},
{RecordType::MUSC, "Music Type"},
{RecordType::MUST, "Music Track"},
{RecordType::NAVI, "Navigation Mesh Info Map"},
{RecordType::NAVM, "Navigation Mesh"},
{RecordType::NOTE, "NOTE"},
{RecordType::NPC_, "Non - Player Character(Actor)"},
{RecordType::OTFT, "Outfit"},
{RecordType::PACK, "Package"},
{RecordType::PARW, "Placed Arrow"},
{RecordType::PBAR, "Placed Barrier"},
{RecordType::PBEA, "Placed Beam"},
{RecordType::PCON, "Placed Cone / Voice"},
{RecordType::PERK, "Perk"},
{RecordType::PFLA, "Placed Flame"},
{RecordType::PGRE, "Placed Projectile"},
{RecordType::PHZD, "Placed Hazard"},
{RecordType::PLYR, "Player Reference"},
{RecordType::PMIS, "Placed Missile"},
{RecordType::PROJ, "Projectile"},
{RecordType::PWAT, "PWAT"},
{RecordType::QUST, "Quest"},
{RecordType::RACE, "Race"},
{RecordType::REFR, "Placed Object"},
{RecordType::REGN, "Region"},
{RecordType::RELA, "Relationship"},
{RecordType::REVB, "Reverb Parameters"},
{RecordType::RFCT, "Visual Effect"},
{RecordType::RGDL, "RGDL"},
{RecordType::SCEN, "Scene"},
{RecordType::SCOL, "SCOL"},
{RecordType::SCOL, "Static Collection"},
{RecordType::SCPT, "SCPT"},
{RecordType::SCRL, "Scroll"},
{RecordType::SHOU, "Shout"},
{RecordType::SLGM, "Soul Gem"},
{RecordType::SMBN, "Story Manager Branch Node"},
{RecordType::SMEN, "Story Manager Event Node"},
{RecordType::SMQN, "Story Manager Quest Node"},
{RecordType::SNCT, "Sound Category"},
{RecordType::SNDR, "Sound Descriptor"},
{RecordType::SOPM, "Sound Output Model"},
{RecordType::SOUN, "Sound Marker"},
{RecordType::SPEL, "Spell"},
{RecordType::SPGD, "Shader Particle Geometry"},
{RecordType::STAT, "Static"},
{RecordType::TACT, "Talking Activator"},
{RecordType::TES4, "Main File Header"},
{RecordType::TREE, "Tree"},
{RecordType::TXST, "Texture Set"},
{RecordType::VOLI, "Volumetric Lighting"},
{RecordType::VTYP, "Voice Type"},
{RecordType::WATR, "Water"},
{RecordType::WEAP, "Weapon"},
{RecordType::WOOP, "Word of Power"},
{RecordType::WRLD, "Worldspace"},
{RecordType::WTHR, "Weather"}
};
static constexpr std::pair<RecordType, FourCC> record_type_fourcc_map[] = {
{RecordType::AACT, FourCC("AACT")},
{RecordType::ACHR, FourCC("ACHR")},
{RecordType::ACTI, FourCC("ACTI")},
{RecordType::ADDN, FourCC("ADDN")},
{RecordType::ALCH, FourCC("ALCH")},
{RecordType::AMMO, FourCC("AMMO")},
{RecordType::ANIO, FourCC("ANIO")},
{RecordType::APPA, FourCC("APPA")},
{RecordType::ARMA, FourCC("ARMA")},
{RecordType::ARMO, FourCC("ARMO")},
{RecordType::ARTO, FourCC("ARTO")},
{RecordType::ASPC, FourCC("ASPC")},
{RecordType::ASTP, FourCC("ASTP")},
{RecordType::AVIF, FourCC("AVIF")},
{RecordType::BOOK, FourCC("BOOK")},
{RecordType::BPTD, FourCC("BPTD")},
{RecordType::CAMS, FourCC("CAMS")},
{RecordType::CELL, FourCC("CELL")},
{RecordType::CLAS, FourCC("CLAS")},
{RecordType::CLDC, FourCC("CLDC")},
{RecordType::CLFM, FourCC("CLFM")},
{RecordType::CLMT, FourCC("CLMT")},
{RecordType::COBJ, FourCC("COBJ")},
{RecordType::COLL, FourCC("COLL")},
{RecordType::CONT, FourCC("CONT")},
{RecordType::CPTH, FourCC("CPTH")},
{RecordType::CSTY, FourCC("CSTY")},
{RecordType::DEBR, FourCC("DEBR")},
{RecordType::DIAL, FourCC("DIAL")},
{RecordType::DLBR, FourCC("DLBR")},
{RecordType::DLVW, FourCC("DLVW")},
{RecordType::DOBJ, FourCC("DOBJ")},
{RecordType::DOOR, FourCC("DOOR")},
{RecordType::DUAL, FourCC("DUAL")},
{RecordType::ECZN, FourCC("ECZN")},
{RecordType::EFSH, FourCC("EFSH")},
{RecordType::ENCH, FourCC("ENCH")},
{RecordType::EQUP, FourCC("EQUP")},
{RecordType::EXPL, FourCC("EXPL")},
{RecordType::EYES, FourCC("EYES")},
{RecordType::FACT, FourCC("FACT")},
{RecordType::FLOR, FourCC("FLOR")},
{RecordType::FLST, FourCC("FLST")},
{RecordType::FSTP, FourCC("FSTP")},
{RecordType::FSTS, FourCC("FSTS")},
{RecordType::FURN, FourCC("FURN")},
{RecordType::GLOB, FourCC("GLOB")},
{RecordType::GMST, FourCC("GMST")},
{RecordType::GRAS, FourCC("GRAS")},
{RecordType::GRUP, FourCC("GRUP")},
{RecordType::HAIR, FourCC("HAIR")},
{RecordType::HAZD, FourCC("HAZD")},
{RecordType::HDPT, FourCC("HDPT")},
{RecordType::IDLE, FourCC("IDLE")},
{RecordType::IDLM, FourCC("IDLM")},
{RecordType::IMAD, FourCC("IMAD")},
{RecordType::IMGS, FourCC("IMGS")},
{RecordType::INFO, FourCC("INFO")},
{RecordType::INGR, FourCC("INGR")},
{RecordType::IPCT, FourCC("IPCT")},
{RecordType::IPDS, FourCC("IPDS")},
{RecordType::KEYM, FourCC("KEYM")},
{RecordType::KYWD, FourCC("KYWD")},
{RecordType::LAND, FourCC("LAND")},
{RecordType::LCRT, FourCC("LCRT")},
{RecordType::LCTN, FourCC("LCTN")},
{RecordType::LENS, FourCC("LENS")},
{RecordType::LGTM, FourCC("LGTM")},
{RecordType::LIGH, FourCC("LIGH")},
{RecordType::LSCR, FourCC("LSCR")},
{RecordType::LTEX, FourCC("LTEX")},
{RecordType::LVLI, FourCC("LVLI")},
{RecordType::LVLN, FourCC("LVLN")},
{RecordType::LVSP, FourCC("LVSP")},
{RecordType::MATO, FourCC("MATO")},
{RecordType::MATT, FourCC("MATT")},
{RecordType::MESG, FourCC("MESG")},
{RecordType::MGEF, FourCC("MGEF")},
{RecordType::MISC, FourCC("MISC")},
{RecordType::MOVT, FourCC("MOVT")},
{RecordType::MSTT, FourCC("MSTT")},
{RecordType::MUSC, FourCC("MUSC")},
{RecordType::MUST, FourCC("MUST")},
{RecordType::NAVI, FourCC("NAVI")},
{RecordType::NAVM, FourCC("NAVM")},
{RecordType::NOTE, FourCC("NOTE")},
{RecordType::NPC_, FourCC("NPC_")},
{RecordType::OTFT, FourCC("OTFT")},
{RecordType::PACK, FourCC("PACK")},
{RecordType::PARW, FourCC("PARW")},
{RecordType::PBAR, FourCC("PBAR")},
{RecordType::PBEA, FourCC("PBEA")},
{RecordType::PCON, FourCC("PCON")},
{RecordType::PERK, FourCC("PERK")},
{RecordType::PFLA, FourCC("PFLA")},
{RecordType::PGRE, FourCC("PGRE")},
{RecordType::PHZD, FourCC("PHZD")},
{RecordType::PLYR, FourCC("PLYR")},
{RecordType::PMIS, FourCC("PMIS")},
{RecordType::PROJ, FourCC("PROJ")},
{RecordType::PWAT, FourCC("PWAT")},
{RecordType::QUST, FourCC("QUST")},
{RecordType::RACE, FourCC("RACE")},
{RecordType::REFR, FourCC("REFR")},
{RecordType::REGN, FourCC("REGN")},
{RecordType::RELA, FourCC("RELA")},
{RecordType::REVB, FourCC("REVB")},
{RecordType::RFCT, FourCC("RFCT")},
{RecordType::RGDL, FourCC("RGDL")},
{RecordType::SCEN, FourCC("SCEN")},
{RecordType::SCOL, FourCC("SCOL")},
{RecordType::SCOL, FourCC("SCOL")},
{RecordType::SCPT, FourCC("SCPT")},
{RecordType::SCRL, FourCC("SCRL")},
{RecordType::SHOU, FourCC("SHOU")},
{RecordType::SLGM, FourCC("SLGM")},
{RecordType::SMBN, FourCC("SMBN")},
{RecordType::SMEN, FourCC("SMEN")},
{RecordType::SMQN, FourCC("SMQN")},
{RecordType::SNCT, FourCC("SNCT")},
{RecordType::SNDR, FourCC("SNDR")},
{RecordType::SOPM, FourCC("SOPM")},
{RecordType::SOUN, FourCC("SOUN")},
{RecordType::SPEL, FourCC("SPEL")},
{RecordType::SPGD, FourCC("SPGD")},
{RecordType::STAT, FourCC("STAT")},
{RecordType::TACT, FourCC("TACT")},
{RecordType::TES4, FourCC("TES4")},
{RecordType::TREE, FourCC("TREE")},
{RecordType::TXST, FourCC("TXST")},
{RecordType::VOLI, FourCC("VOLI")},
{RecordType::VTYP, FourCC("VTYP")},
{RecordType::WATR, FourCC("WATR")},
{RecordType::WEAP, FourCC("WEAP")},
{RecordType::WOOP, FourCC("WOOP")},
{RecordType::WRLD, FourCC("WRLD")},
{RecordType::WTHR, FourCC("WTHR")},
};
static constexpr std::pair<GroupType, std::string_view> group_type_names_map[] = {
{GroupType::Top , "Top Type" },
{GroupType::WorldChildren , "World Children" },
{GroupType::InteriorCellBlock , "Interior Cell Block" },
{GroupType::InteriorCellSubBlock , "Interior Cell Sub-Block" },
{GroupType::ExteriorCellBlock , "Exterior Cell" },
{GroupType::ExteriorCellSubBlock , "Exterior Cell Sub-Block" },
{GroupType::CellChildren , "Cell Children" },
{GroupType::TopicChildren , "Topic Children" },
{GroupType::CellPersistentChildren, "Cell Persistent Children"},
{GroupType::CellTemporaryChildren , "Cell Temporary Children" },
};
struct flag {
RecordType type;
unsigned bit;
};
static constexpr std::pair<flag, std::string_view> flag_strings_map[]{
{{RecordType::ACHR, 9}, "Starts Dead"},
};
struct refr_flag {
RecordType refr_type;
unsigned bit;
};
static constexpr std::pair<flag, std::string_view> refr_flag_strings_map[]{
{{RecordType::ACHR, 9}, "Hidden From Local Map"},
};
}