319 lines
13 KiB
C++
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"},
|
|
};
|
|
|
|
}
|