Get rid of ESM4::SubRecordTypes

All my homies hate ESM4::SubRecordTypes
fix-osga-rotate-wildly
Alexei Kotov 10 months ago
parent 854b4f226b
commit 6b93479bd3

@ -176,687 +176,6 @@ namespace ESM4
REC_MSET = fourCC("MSET") // Media Set
};
enum SubRecordTypes
{
SUB_ACBS = fourCC("ACBS"),
SUB_ACEC = fourCC("ACEC"), // TES5 Dawnguard
SUB_ACEP = fourCC("ACEP"), // TES5 Dawnguard
SUB_ACID = fourCC("ACID"), // TES5 Dawnguard
SUB_ACPR = fourCC("ACPR"), // TES5
SUB_ACSR = fourCC("ACSR"), // TES5 Dawnguard
SUB_ACTV = fourCC("ACTV"), // FO4
SUB_ACUN = fourCC("ACUN"), // TES5 Dawnguard
SUB_AHCF = fourCC("AHCF"),
SUB_AHCM = fourCC("AHCM"),
SUB_AIDT = fourCC("AIDT"),
SUB_ALCA = fourCC("ALCA"), // TES5
SUB_ALCC = fourCC("ALCC"), // FO4
SUB_ALCL = fourCC("ALCL"), // TES5
SUB_ALCO = fourCC("ALCO"), // TES5
SUB_ALCS = fourCC("ALCS"), // FO4
SUB_ALDI = fourCC("ALDI"), // FO4
SUB_ALDN = fourCC("ALDN"), // TES5
SUB_ALEA = fourCC("ALEA"), // TES5
SUB_ALED = fourCC("ALED"), // TES5
SUB_ALEQ = fourCC("ALEQ"), // TES5
SUB_ALFA = fourCC("ALFA"), // TES5
SUB_ALFC = fourCC("ALFC"), // TES5
SUB_ALFD = fourCC("ALFD"), // TES5
SUB_ALFE = fourCC("ALFE"), // TES5
SUB_ALFI = fourCC("ALFI"), // TES5
SUB_ALFL = fourCC("ALFL"), // TES5
SUB_ALFR = fourCC("ALFR"), // TES5
SUB_ALFV = fourCC("ALFV"), // FO4
SUB_ALID = fourCC("ALID"), // TES5
SUB_ALLA = fourCC("ALLA"), // FO4
SUB_ALLS = fourCC("ALLS"), // TES5
SUB_ALMI = fourCC("ALMI"), // FO4
SUB_ALNA = fourCC("ALNA"), // TES5
SUB_ALNT = fourCC("ALNT"), // TES5
SUB_ALPC = fourCC("ALPC"), // TES5
SUB_ALRT = fourCC("ALRT"), // TES5
SUB_ALSP = fourCC("ALSP"), // TES5
SUB_ALST = fourCC("ALST"), // TES5
SUB_ALUA = fourCC("ALUA"), // TES5
SUB_ANAM = fourCC("ANAM"),
SUB_AOR2 = fourCC("AOR2"), // FO4
SUB_APPR = fourCC("APPR"), // FO4
SUB_ATKD = fourCC("ATKD"),
SUB_ATKE = fourCC("ATKE"),
SUB_ATKR = fourCC("ATKR"),
SUB_ATKS = fourCC("ATKS"), // FO4
SUB_ATKT = fourCC("ATKT"), // FO4
SUB_ATKW = fourCC("ATKW"), // FO4
SUB_ATTN = fourCC("ATTN"), // FO4
SUB_ATTR = fourCC("ATTR"),
SUB_ATTX = fourCC("ATTX"), // FO4
SUB_ATXT = fourCC("ATXT"),
SUB_AVFL = fourCC("AVFL"), // FO4
SUB_AVSK = fourCC("AVSK"), // TES5
SUB_BAMT = fourCC("BAMT"),
SUB_BCLF = fourCC("BCLF"), // FO4
SUB_BIDS = fourCC("BIDS"),
SUB_BIPL = fourCC("BIPL"), // FO3
SUB_BMCT = fourCC("BMCT"),
SUB_BMDT = fourCC("BMDT"),
SUB_BMMP = fourCC("BMMP"), // FO4
SUB_BNAM = fourCC("BNAM"),
SUB_BOD2 = fourCC("BOD2"),
SUB_BODT = fourCC("BODT"),
SUB_BPND = fourCC("BPND"),
SUB_BPNI = fourCC("BPNI"),
SUB_BPNN = fourCC("BPNN"),
SUB_BPNT = fourCC("BPNT"),
SUB_BPTN = fourCC("BPTN"),
SUB_BRUS = fourCC("BRUS"), // FONV
SUB_BSIZ = fourCC("BSIZ"), // FO4
SUB_BSMB = fourCC("BSMB"), // FO4
SUB_BSMP = fourCC("BSMP"), // FO4
SUB_BSMS = fourCC("BSMS"), // FO4
SUB_BTXT = fourCC("BTXT"),
SUB_CDIX = fourCC("CDIX"), // FO4
SUB_CIS1 = fourCC("CIS1"), // TES5
SUB_CIS2 = fourCC("CIS2"), // TES5
SUB_CITC = fourCC("CITC"), // TES5
SUB_CLSZ = fourCC("CLSZ"), // FO4
SUB_CNAM = fourCC("CNAM"),
SUB_CNTO = fourCC("CNTO"),
SUB_COCT = fourCC("COCT"),
SUB_COED = fourCC("COED"),
SUB_CRDT = fourCC("CRDT"),
SUB_CRGR = fourCC("CRGR"), // TES5
SUB_CRIF = fourCC("CRIF"),
SUB_CRIS = fourCC("CRIS"), // FO4
SUB_CRVA = fourCC("CRVA"), // TES5
SUB_CS2D = fourCC("CS2D"), // FO4
SUB_CS2E = fourCC("CS2E"), // FO4
SUB_CS2F = fourCC("CS2F"), // FO4
SUB_CS2H = fourCC("CS2H"), // FO4
SUB_CS2K = fourCC("CS2K"), // FO4
SUB_CSCR = fourCC("CSCR"),
SUB_CSCV = fourCC("CSCV"), // FO4
SUB_CSDC = fourCC("CSDC"),
SUB_CSDI = fourCC("CSDI"),
SUB_CSDT = fourCC("CSDT"),
SUB_CSFL = fourCC("CSFL"), // TES5
SUB_CSGD = fourCC("CSGD"), // TES5
SUB_CSLR = fourCC("CSLR"), // TES5
SUB_CSMD = fourCC("CSMD"), // TES5
SUB_CSME = fourCC("CSME"), // TES5
SUB_CSRA = fourCC("CSRA"), // FO4
SUB_CTDA = fourCC("CTDA"),
SUB_CTDT = fourCC("CTDT"),
SUB_CUSD = fourCC("CUSD"), // FO4
SUB_CVPA = fourCC("CVPA"), // FO4
SUB_DALC = fourCC("DALC"), // FO3
SUB_DAMA = fourCC("DAMA"), // FO4
SUB_DAMC = fourCC("DAMC"), // FO4
SUB_DAT2 = fourCC("DAT2"), // FONV
SUB_DATA = fourCC("DATA"),
SUB_DELE = fourCC("DELE"),
SUB_DEMO = fourCC("DEMO"), // TES5
SUB_DESC = fourCC("DESC"),
SUB_DEST = fourCC("DEST"),
SUB_DEVA = fourCC("DEVA"), // TES5
SUB_DFTF = fourCC("DFTF"),
SUB_DFTM = fourCC("DFTM"),
SUB_DMAX = fourCC("DMAX"), // TES5
SUB_DMDC = fourCC("DMDC"), // FO4
SUB_DMDL = fourCC("DMDL"),
SUB_DMDS = fourCC("DMDS"),
SUB_DMDT = fourCC("DMDT"),
SUB_DMIN = fourCC("DMIN"), // TES5
SUB_DNAM = fourCC("DNAM"),
SUB_DODT = fourCC("DODT"),
SUB_DOFT = fourCC("DOFT"),
SUB_DPLT = fourCC("DPLT"),
SUB_DSTA = fourCC("DSTA"), // FO4
SUB_DSTD = fourCC("DSTD"),
SUB_DSTF = fourCC("DSTF"),
SUB_DTGT = fourCC("DTGT"), // FO4
SUB_DTID = fourCC("DTID"), // FO4
SUB_EAMT = fourCC("EAMT"),
SUB_ECOR = fourCC("ECOR"),
SUB_EDID = fourCC("EDID"),
SUB_EFID = fourCC("EFID"),
SUB_EFIT = fourCC("EFIT"),
SUB_EFSD = fourCC("EFSD"), // FONV DeadMoney
SUB_EITM = fourCC("EITM"),
SUB_ENAM = fourCC("ENAM"),
SUB_ENIT = fourCC("ENIT"),
SUB_EPF2 = fourCC("EPF2"),
SUB_EPF3 = fourCC("EPF3"),
SUB_EPFB = fourCC("EPFB"), // FO4
SUB_EPFD = fourCC("EPFD"),
SUB_EPFT = fourCC("EPFT"),
SUB_ESCE = fourCC("ESCE"),
SUB_ETYP = fourCC("ETYP"),
SUB_FCHT = fourCC("FCHT"), // TES5
SUB_FCPL = fourCC("FCPL"), // FO4
SUB_FFFF = fourCC("FFFF"),
SUB_FGGA = fourCC("FGGA"),
SUB_FGGS = fourCC("FGGS"),
SUB_FGTS = fourCC("FGTS"),
SUB_FIMD = fourCC("FIMD"), // FO4
SUB_FLMV = fourCC("FLMV"),
SUB_FLTR = fourCC("FLTR"), // TES5
SUB_FLTV = fourCC("FLTV"),
SUB_FMIN = fourCC("FMIN"), // FO4
SUB_FMRI = fourCC("FMRI"), // FO4
SUB_FMRN = fourCC("FMRN"), // FO4
SUB_FMRS = fourCC("FMRS"), // FO4
SUB_FNAM = fourCC("FNAM"),
SUB_FNMK = fourCC("FNMK"),
SUB_FNPR = fourCC("FNPR"),
SUB_FPRT = fourCC("FPRT"), // TES5
SUB_FTSF = fourCC("FTSF"),
SUB_FTSM = fourCC("FTSM"),
SUB_FTST = fourCC("FTST"),
SUB_FTYP = fourCC("FTYP"), // FO4
SUB_FULL = fourCC("FULL"),
SUB_FVPA = fourCC("FVPA"), // FO4
SUB_GNAM = fourCC("GNAM"),
SUB_GREE = fourCC("GREE"), // FO4
SUB_GWOR = fourCC("GWOR"), // TES5
SUB_HCLF = fourCC("HCLF"),
SUB_HCLR = fourCC("HCLR"),
SUB_HEAD = fourCC("HEAD"),
SUB_HEDR = fourCC("HEDR"),
SUB_HLTX = fourCC("HLTX"), // FO4
SUB_HNAM = fourCC("HNAM"),
SUB_HTID = fourCC("HTID"), // TES5
SUB_ICO2 = fourCC("ICO2"),
SUB_ICON = fourCC("ICON"),
SUB_IDLA = fourCC("IDLA"),
SUB_IDLB = fourCC("IDLB"), // FO3
SUB_IDLC = fourCC("IDLC"),
SUB_IDLF = fourCC("IDLF"),
SUB_IDLT = fourCC("IDLT"),
SUB_IMPF = fourCC("IMPF"), // FO3 Anchorage
SUB_IMPS = fourCC("IMPS"), // FO3 Anchorage
SUB_IMSP = fourCC("IMSP"), // TES5
SUB_INAM = fourCC("INAM"),
SUB_INCC = fourCC("INCC"),
SUB_INDX = fourCC("INDX"),
SUB_INFC = fourCC("INFC"), // FONV
SUB_INFX = fourCC("INFX"), // FONV
SUB_INRD = fourCC("INRD"), // FO4
SUB_INTT = fourCC("INTT"), // FO4
SUB_INTV = fourCC("INTV"),
SUB_IOVR = fourCC("IOVR"), // FO4
SUB_ISIZ = fourCC("ISIZ"), // FO4
SUB_ITID = fourCC("ITID"), // FO4
SUB_ITMC = fourCC("ITMC"), // FO4
SUB_ITME = fourCC("ITME"), // FO4
SUB_ITMS = fourCC("ITMS"), // FO4
SUB_ITXT = fourCC("ITXT"),
SUB_JAIL = fourCC("JAIL"), // TES5
SUB_JNAM = fourCC("JNAM"), // FONV
SUB_JOUT = fourCC("JOUT"), // TES5
SUB_KFFZ = fourCC("KFFZ"),
SUB_KNAM = fourCC("KNAM"),
SUB_KSIZ = fourCC("KSIZ"),
SUB_KWDA = fourCC("KWDA"),
SUB_LCEC = fourCC("LCEC"), // TES5
SUB_LCEP = fourCC("LCEP"), // TES5
SUB_LCID = fourCC("LCID"), // TES5
SUB_LCPR = fourCC("LCPR"), // TES5
SUB_LCSR = fourCC("LCSR"), // TES5
SUB_LCUN = fourCC("LCUN"), // TES5
SUB_LFSD = fourCC("LFSD"), // FO4
SUB_LFSP = fourCC("LFSP"), // FO4
SUB_LLCT = fourCC("LLCT"),
SUB_LLKC = fourCC("LLKC"), // FO4
SUB_LNAM = fourCC("LNAM"),
SUB_LTMP = fourCC("LTMP"),
SUB_LTPC = fourCC("LTPC"), // FO4
SUB_LTPT = fourCC("LTPT"), // FO4
SUB_LVLD = fourCC("LVLD"),
SUB_LVLF = fourCC("LVLF"),
SUB_LVLG = fourCC("LVLG"), // FO3
SUB_LVLM = fourCC("LVLM"), // FO4
SUB_LVLO = fourCC("LVLO"),
SUB_LVSG = fourCC("LVSG"), // FO4
SUB_MASE = fourCC("MASE"), // FO4
SUB_MAST = fourCC("MAST"),
SUB_MCHT = fourCC("MCHT"), // TES5
SUB_MDOB = fourCC("MDOB"),
SUB_MHDT = fourCC("MHDT"),
SUB_MIC2 = fourCC("MIC2"),
SUB_MICO = fourCC("MICO"),
SUB_MLSI = fourCC("MLSI"), // FO4
SUB_MMRK = fourCC("MMRK"), // FONV
SUB_MNAM = fourCC("MNAM"),
SUB_MO2B = fourCC("MO2B"),
SUB_MO2C = fourCC("MO2C"), // FO4
SUB_MO2F = fourCC("MO2F"), // FO4
SUB_MO2S = fourCC("MO2S"),
SUB_MO2T = fourCC("MO2T"),
SUB_MO3B = fourCC("MO3B"),
SUB_MO3C = fourCC("MO3C"), // FO4
SUB_MO3F = fourCC("MO3F"), // FO4
SUB_MO3S = fourCC("MO3S"), // FO3
SUB_MO3T = fourCC("MO3T"),
SUB_MO4B = fourCC("MO4B"),
SUB_MO4C = fourCC("MO4C"), // FO4
SUB_MO4F = fourCC("MO4F"), // FO4
SUB_MO4S = fourCC("MO4S"),
SUB_MO4T = fourCC("MO4T"),
SUB_MO5C = fourCC("MO5C"), // FO4
SUB_MO5F = fourCC("MO5F"), // FO4
SUB_MO5S = fourCC("MO5S"), // TES5
SUB_MO5T = fourCC("MO5T"),
SUB_MOD2 = fourCC("MOD2"),
SUB_MOD3 = fourCC("MOD3"),
SUB_MOD4 = fourCC("MOD4"),
SUB_MOD5 = fourCC("MOD5"),
SUB_MODB = fourCC("MODB"),
SUB_MODC = fourCC("MODC"), // FO4
SUB_MODD = fourCC("MODD"), // FO3
SUB_MODF = fourCC("MODF"), // FO4
SUB_MODL = fourCC("MODL"),
SUB_MODQ = fourCC("MODQ"), // FO4
SUB_MODS = fourCC("MODS"),
SUB_MODT = fourCC("MODT"),
SUB_MOSD = fourCC("MOSD"), // FO3
SUB_MPAI = fourCC("MPAI"),
SUB_MPAV = fourCC("MPAV"),
SUB_MPCD = fourCC("MPCD"), // FO4
SUB_MPGN = fourCC("MPGN"), // FO4
SUB_MPGS = fourCC("MPGS"), // FO4
SUB_MPPC = fourCC("MPPC"), // FO4
SUB_MPPF = fourCC("MPPF"), // FO4
SUB_MPPI = fourCC("MPPI"), // FO4
SUB_MPPK = fourCC("MPPK"), // FO4
SUB_MPPM = fourCC("MPPM"), // FO4
SUB_MPPN = fourCC("MPPN"), // FO4
SUB_MPPT = fourCC("MPPT"), // FO4
SUB_MPRT = fourCC("MPRT"), // TES5
SUB_MRSV = fourCC("MRSV"), // FO4
SUB_MSDK = fourCC("MSDK"), // FO4
SUB_MSDV = fourCC("MSDV"), // FO4
SUB_MSID = fourCC("MSID"), // FO4
SUB_MSM0 = fourCC("MSM0"), // FO4
SUB_MSM1 = fourCC("MSM1"), // FO4
SUB_MTNM = fourCC("MTNM"),
SUB_MTYP = fourCC("MTYP"),
SUB_MWD1 = fourCC("MWD1"), // FONV
SUB_MWD2 = fourCC("MWD2"), // FONV
SUB_MWD3 = fourCC("MWD3"), // FONV
SUB_MWD4 = fourCC("MWD4"), // FONV
SUB_MWD5 = fourCC("MWD5"), // FONV
SUB_MWD6 = fourCC("MWD6"), // FONV
SUB_MWD7 = fourCC("MWD7"), // FONV
SUB_MWGT = fourCC("MWGT"), // FO4
SUB_NAM0 = fourCC("NAM0"),
SUB_NAM1 = fourCC("NAM1"),
SUB_NAM2 = fourCC("NAM2"),
SUB_NAM3 = fourCC("NAM3"),
SUB_NAM4 = fourCC("NAM4"),
SUB_NAM5 = fourCC("NAM5"),
SUB_NAM6 = fourCC("NAM6"),
SUB_NAM7 = fourCC("NAM7"),
SUB_NAM8 = fourCC("NAM8"),
SUB_NAM9 = fourCC("NAM9"),
SUB_NAMA = fourCC("NAMA"),
SUB_NAME = fourCC("NAME"),
SUB_NETO = fourCC("NETO"), // FO4
SUB_NEXT = fourCC("NEXT"), // FO3
SUB_NIFT = fourCC("NIFT"),
SUB_NIFZ = fourCC("NIFZ"),
SUB_NNAM = fourCC("NNAM"),
SUB_NNGS = fourCC("NNGS"), // FO4
SUB_NNGT = fourCC("NNGT"), // FO4
SUB_NNUS = fourCC("NNUS"), // FO4
SUB_NNUT = fourCC("NNUT"), // FO4
SUB_NONE = fourCC("NONE"), // FO4
SUB_NPOS = fourCC("NPOS"), // FO4
SUB_NPOT = fourCC("NPOT"), // FO4
SUB_NQUS = fourCC("NQUS"), // FO4
SUB_NQUT = fourCC("NQUT"), // FO4
SUB_NTOP = fourCC("NTOP"), // FO4
SUB_NTRM = fourCC("NTRM"), // FO4
SUB_NULL = fourCC("NULL"),
SUB_NVCA = fourCC("NVCA"), // FO3
SUB_NVCI = fourCC("NVCI"), // FO3
SUB_NVDP = fourCC("NVDP"), // FO3
SUB_NVER = fourCC("NVER"),
SUB_NVEX = fourCC("NVEX"), // FO3
SUB_NVGD = fourCC("NVGD"), // FO3
SUB_NVMI = fourCC("NVMI"),
SUB_NVNM = fourCC("NVNM"),
SUB_NVPP = fourCC("NVPP"),
SUB_NVSI = fourCC("NVSI"),
SUB_NVTR = fourCC("NVTR"), // FO3
SUB_NVVX = fourCC("NVVX"), // FO3
SUB_OBND = fourCC("OBND"),
SUB_OBTE = fourCC("OBTE"), // FO4
SUB_OBTF = fourCC("OBTF"), // FO4
SUB_OBTS = fourCC("OBTS"), // FO4
SUB_OCOR = fourCC("OCOR"), // TES5
SUB_OFST = fourCC("OFST"), // TES4 only?
SUB_ONAM = fourCC("ONAM"),
SUB_PCMB = fourCC("PCMB"), // FO4
SUB_PDTO = fourCC("PDTO"),
SUB_PFIG = fourCC("PFIG"),
SUB_PFO2 = fourCC("PFO2"), // TES5
SUB_PFOR = fourCC("PFOR"), // TES5
SUB_PFPC = fourCC("PFPC"),
SUB_PFRN = fourCC("PFRN"), // FO4
SUB_PGAG = fourCC("PGAG"),
SUB_PGRI = fourCC("PGRI"),
SUB_PGRL = fourCC("PGRL"),
SUB_PGRP = fourCC("PGRP"),
SUB_PGRR = fourCC("PGRR"),
SUB_PHTN = fourCC("PHTN"),
SUB_PHWT = fourCC("PHWT"),
SUB_PKAM = fourCC("PKAM"), // FO3
SUB_PKC2 = fourCC("PKC2"), // TES5
SUB_PKCU = fourCC("PKCU"), // TES5
SUB_PKD2 = fourCC("PKD2"), // FO3
SUB_PKDD = fourCC("PKDD"), // FO3
SUB_PKDT = fourCC("PKDT"),
SUB_PKE2 = fourCC("PKE2"), // FO3
SUB_PKED = fourCC("PKED"), // FO3
SUB_PKFD = fourCC("PKFD"), // FO3
SUB_PKID = fourCC("PKID"),
SUB_PKPT = fourCC("PKPT"), // FO3
SUB_PKW3 = fourCC("PKW3"), // FO3
SUB_PLCN = fourCC("PLCN"), // TES5
SUB_PLD2 = fourCC("PLD2"), // FO3
SUB_PLDT = fourCC("PLDT"),
SUB_PLVD = fourCC("PLVD"), // TES5
SUB_PNAM = fourCC("PNAM"),
SUB_POBA = fourCC("POBA"), // FO3
SUB_POCA = fourCC("POCA"), // FO3
SUB_POEA = fourCC("POEA"), // FO3
SUB_PRCB = fourCC("PRCB"), // TES5
SUB_PRKC = fourCC("PRKC"),
SUB_PRKE = fourCC("PRKE"),
SUB_PRKF = fourCC("PRKF"),
SUB_PRKR = fourCC("PRKR"),
SUB_PRKZ = fourCC("PRKZ"),
SUB_PRPS = fourCC("PRPS"), // FO4
SUB_PSDT = fourCC("PSDT"),
SUB_PTD2 = fourCC("PTD2"), // FO3
SUB_PTDA = fourCC("PTDA"), // TES5
SUB_PTDT = fourCC("PTDT"),
SUB_PTOP = fourCC("PTOP"), // FO4
SUB_PTRN = fourCC("PTRN"), // FO4
SUB_PUID = fourCC("PUID"), // FO3
SUB_QNAM = fourCC("QNAM"),
SUB_QOBJ = fourCC("QOBJ"), // FO3
SUB_QSDT = fourCC("QSDT"),
SUB_QSTA = fourCC("QSTA"),
SUB_QSTI = fourCC("QSTI"),
SUB_QSTR = fourCC("QSTR"),
SUB_QTGL = fourCC("QTGL"), // TES5
SUB_QTOP = fourCC("QTOP"), // FO4
SUB_QUAL = fourCC("QUAL"),
SUB_RADR = fourCC("RADR"), // FO4
SUB_RAGA = fourCC("RAGA"),
SUB_RBPC = fourCC("RBPC"), // FO4
SUB_RCEC = fourCC("RCEC"), // TES5
SUB_RCIL = fourCC("RCIL"), // FONV
SUB_RCLR = fourCC("RCLR"),
SUB_RCPR = fourCC("RCPR"), // TES5 Dawnguard
SUB_RCSR = fourCC("RCSR"), // TES5
SUB_RCUN = fourCC("RCUN"), // TES5
SUB_RDAT = fourCC("RDAT"),
SUB_RDGS = fourCC("RDGS"),
SUB_RDID = fourCC("RDID"), // FONV
SUB_RDMD = fourCC("RDMD"), // TES4 only?
SUB_RDMO = fourCC("RDMO"),
SUB_RDMP = fourCC("RDMP"),
SUB_RDOT = fourCC("RDOT"),
SUB_RDSA = fourCC("RDSA"),
SUB_RDSB = fourCC("RDSB"), // FONV
SUB_RDSD = fourCC("RDSD"), // TES4 only?
SUB_RDSI = fourCC("RDSI"), // FONV
SUB_RDWT = fourCC("RDWT"),
SUB_REPL = fourCC("REPL"), // FO3
SUB_REPT = fourCC("REPT"), // FO4
SUB_RLDM = fourCC("RLDM"), // FO4
SUB_RNAM = fourCC("RNAM"),
SUB_RNMV = fourCC("RNMV"),
SUB_RPLD = fourCC("RPLD"),
SUB_RPLI = fourCC("RPLI"),
SUB_RPRF = fourCC("RPRF"),
SUB_RPRM = fourCC("RPRM"),
SUB_RVIS = fourCC("RVIS"), // FO4
SUB_SADD = fourCC("SADD"), // FO4
SUB_SAKD = fourCC("SAKD"), // FO4
SUB_SAPT = fourCC("SAPT"), // FO4
SUB_SCDA = fourCC("SCDA"),
SUB_SCHD = fourCC("SCHD"),
SUB_SCHR = fourCC("SCHR"),
SUB_SCIT = fourCC("SCIT"),
SUB_SCQS = fourCC("SCQS"), // FO4
SUB_SCRI = fourCC("SCRI"),
SUB_SCRN = fourCC("SCRN"),
SUB_SCRO = fourCC("SCRO"),
SUB_SCRV = fourCC("SCRV"), // FONV
SUB_SCTX = fourCC("SCTX"),
SUB_SCVR = fourCC("SCVR"), // FONV
SUB_SDSC = fourCC("SDSC"),
SUB_SGNM = fourCC("SGNM"), // FO4
SUB_SHRT = fourCC("SHRT"),
SUB_SLCP = fourCC("SLCP"),
SUB_SLSD = fourCC("SLSD"), // FONV
SUB_SNAM = fourCC("SNAM"),
SUB_SNDD = fourCC("SNDD"),
SUB_SNDX = fourCC("SNDX"),
SUB_SNMV = fourCC("SNMV"),
SUB_SOFT = fourCC("SOFT"),
SUB_SOUL = fourCC("SOUL"),
SUB_SPCT = fourCC("SPCT"),
SUB_SPED = fourCC("SPED"),
SUB_SPIT = fourCC("SPIT"),
SUB_SPLO = fourCC("SPLO"),
SUB_SPMV = fourCC("SPMV"), // TES5
SUB_SPOR = fourCC("SPOR"),
SUB_SRAC = fourCC("SRAC"), // FO4
SUB_SRAF = fourCC("SRAF"), // FO4
SUB_SSPN = fourCC("SSPN"), // FO4
SUB_STCP = fourCC("STCP"), // FO4
SUB_STKD = fourCC("STKD"), // FO4
SUB_STOL = fourCC("STOL"), // TES5
SUB_STOP = fourCC("STOP"), // FO4
SUB_STSC = fourCC("STSC"), // FO4
SUB_SWMV = fourCC("SWMV"),
SUB_TCFU = fourCC("TCFU"), // FONV
SUB_TCLF = fourCC("TCLF"),
SUB_TCLT = fourCC("TCLT"),
SUB_TDUM = fourCC("TDUM"), // FONV
SUB_TEND = fourCC("TEND"), // FO4
SUB_TETI = fourCC("TETI"), // FO4
SUB_TIAS = fourCC("TIAS"),
SUB_TIFC = fourCC("TIFC"), // TES5
SUB_TINC = fourCC("TINC"),
SUB_TIND = fourCC("TIND"),
SUB_TINI = fourCC("TINI"),
SUB_TINL = fourCC("TINL"),
SUB_TINP = fourCC("TINP"),
SUB_TINT = fourCC("TINT"),
SUB_TINV = fourCC("TINV"),
SUB_TIQS = fourCC("TIQS"), // FO4
SUB_TIRS = fourCC("TIRS"),
SUB_TNAM = fourCC("TNAM"),
SUB_TPIC = fourCC("TPIC"),
SUB_TPLT = fourCC("TPLT"),
SUB_TPTA = fourCC("TPTA"), // FO4
SUB_TRDA = fourCC("TRDA"), // FO4
SUB_TRDT = fourCC("TRDT"),
SUB_TSCE = fourCC("TSCE"), // FO4
SUB_TTEB = fourCC("TTEB"), // FO4
SUB_TTEC = fourCC("TTEC"), // FO4
SUB_TTED = fourCC("TTED"), // FO4
SUB_TTEF = fourCC("TTEF"), // FO4
SUB_TTET = fourCC("TTET"), // FO4
SUB_TTGE = fourCC("TTGE"), // FO4
SUB_TTGP = fourCC("TTGP"), // FO4
SUB_TVDT = fourCC("TVDT"),
SUB_TWAT = fourCC("TWAT"), // TES5
SUB_TX00 = fourCC("TX00"),
SUB_TX01 = fourCC("TX01"),
SUB_TX02 = fourCC("TX02"),
SUB_TX03 = fourCC("TX03"),
SUB_TX04 = fourCC("TX04"),
SUB_TX05 = fourCC("TX05"),
SUB_TX06 = fourCC("TX06"),
SUB_TX07 = fourCC("TX07"),
SUB_UNAM = fourCC("UNAM"),
SUB_UNES = fourCC("UNES"),
SUB_UNWP = fourCC("UNWP"), // FO4
SUB_VANM = fourCC("VANM"), // FONV
SUB_VATS = fourCC("VATS"), // FONV
SUB_VCLR = fourCC("VCLR"),
SUB_VENC = fourCC("VENC"), // TES5
SUB_VEND = fourCC("VEND"), // TES5
SUB_VENV = fourCC("VENV"), // TES5
SUB_VHGT = fourCC("VHGT"),
SUB_VISI = fourCC("VISI"), // FO4
SUB_VMAD = fourCC("VMAD"),
SUB_VNAM = fourCC("VNAM"),
SUB_VNML = fourCC("VNML"),
SUB_VTCK = fourCC("VTCK"),
SUB_VTEX = fourCC("VTEX"),
SUB_VTXT = fourCC("VTXT"),
SUB_WAIT = fourCC("WAIT"), // TES5
SUB_WAMD = fourCC("WAMD"), // FO4
SUB_WBDT = fourCC("WBDT"),
SUB_WCTR = fourCC("WCTR"),
SUB_WGDR = fourCC("WGDR"), // FO4
SUB_WKMV = fourCC("WKMV"),
SUB_WLEV = fourCC("WLEV"), // FO4
SUB_WLST = fourCC("WLST"),
SUB_WMAP = fourCC("WMAP"), // FO4
SUB_WMI1 = fourCC("WMI1"), // FONV
SUB_WMI2 = fourCC("WMI2"), // FONV
SUB_WMI3 = fourCC("WMI3"), // FONV
SUB_WMS1 = fourCC("WMS1"), // FONV
SUB_WMS2 = fourCC("WMS2"), // FONV
SUB_WNAM = fourCC("WNAM"),
SUB_WNM1 = fourCC("WNM1"), // FONV
SUB_WNM2 = fourCC("WNM2"), // FONV
SUB_WNM3 = fourCC("WNM3"), // FONV
SUB_WNM4 = fourCC("WNM4"), // FONV
SUB_WNM5 = fourCC("WNM5"), // FONV
SUB_WNM6 = fourCC("WNM6"), // FONV
SUB_WNM7 = fourCC("WNM7"), // FONV
SUB_WZMD = fourCC("WZMD"), // FO4
SUB_XACT = fourCC("XACT"),
SUB_XALP = fourCC("XALP"),
SUB_XAMC = fourCC("XAMC"), // FO3
SUB_XAMT = fourCC("XAMT"), // FO3
SUB_XAPD = fourCC("XAPD"),
SUB_XAPR = fourCC("XAPR"),
SUB_XASP = fourCC("XASP"), // FO4
SUB_XATO = fourCC("XATO"), // FONV
SUB_XATP = fourCC("XATP"), // FO4
SUB_XATR = fourCC("XATR"),
SUB_XBSD = fourCC("XBSD"), // FO4
SUB_XCAS = fourCC("XCAS"),
SUB_XCCM = fourCC("XCCM"),
SUB_XCCP = fourCC("XCCP"),
SUB_XCET = fourCC("XCET"), // FO3
SUB_XCGD = fourCC("XCGD"),
SUB_XCHG = fourCC("XCHG"), // thievery.exp
SUB_XCIM = fourCC("XCIM"),
SUB_XCLC = fourCC("XCLC"),
SUB_XCLL = fourCC("XCLL"),
SUB_XCLP = fourCC("XCLP"), // FO3
SUB_XCLR = fourCC("XCLR"),
SUB_XCLW = fourCC("XCLW"),
SUB_XCMO = fourCC("XCMO"),
SUB_XCMT = fourCC("XCMT"), // TES4 only?
SUB_XCNT = fourCC("XCNT"),
SUB_XCRI = fourCC("XCRI"), // FO4
SUB_XCVL = fourCC("XCVL"),
SUB_XCVR = fourCC("XCVR"),
SUB_XCWT = fourCC("XCWT"),
SUB_XCZA = fourCC("XCZA"),
SUB_XCZC = fourCC("XCZC"),
SUB_XCZR = fourCC("XCZR"), // TES5
SUB_XDCR = fourCC("XDCR"), // FO3
SUB_XEMI = fourCC("XEMI"),
SUB_XESP = fourCC("XESP"),
SUB_XEZN = fourCC("XEZN"),
SUB_XFVC = fourCC("XFVC"),
SUB_XGDR = fourCC("XGDR"), // FO4
SUB_XGLB = fourCC("XGLB"),
SUB_XHLP = fourCC("XHLP"), // FO3
SUB_XHLT = fourCC("XHLT"), // Unofficial Oblivion Patch
SUB_XHOR = fourCC("XHOR"),
SUB_XHRS = fourCC("XHRS"),
SUB_XHTW = fourCC("XHTW"),
SUB_XIBS = fourCC("XIBS"), // FO3
SUB_XILL = fourCC("XILL"),
SUB_XILW = fourCC("XILW"), // FO4
SUB_XIS2 = fourCC("XIS2"),
SUB_XLCM = fourCC("XLCM"),
SUB_XLCN = fourCC("XLCN"),
SUB_XLIB = fourCC("XLIB"),
SUB_XLIG = fourCC("XLIG"),
SUB_XLKR = fourCC("XLKR"),
SUB_XLKT = fourCC("XLKT"), // FO4
SUB_XLOC = fourCC("XLOC"),
SUB_XLOD = fourCC("XLOD"),
SUB_XLRL = fourCC("XLRL"),
SUB_XLRM = fourCC("XLRM"),
SUB_XLRT = fourCC("XLRT"),
SUB_XLTW = fourCC("XLTW"),
SUB_XLYR = fourCC("XLYR"), // FO4
SUB_XMBO = fourCC("XMBO"),
SUB_XMBP = fourCC("XMBP"),
SUB_XMBR = fourCC("XMBR"),
SUB_XMRC = fourCC("XMRC"),
SUB_XMRK = fourCC("XMRK"),
SUB_XMSP = fourCC("XMSP"), // FO4
SUB_XNAM = fourCC("XNAM"),
SUB_XNDP = fourCC("XNDP"),
SUB_XOCP = fourCC("XOCP"),
SUB_XORD = fourCC("XORD"), // FO3
SUB_XOWN = fourCC("XOWN"),
SUB_XPCI = fourCC("XPCI"),
SUB_XPDD = fourCC("XPDD"), // FO4
SUB_XPLK = fourCC("XPLK"), // FO4
SUB_XPOD = fourCC("XPOD"),
SUB_XPPA = fourCC("XPPA"),
SUB_XPRD = fourCC("XPRD"),
SUB_XPRI = fourCC("XPRI"), // FO4
SUB_XPRM = fourCC("XPRM"),
SUB_XPTL = fourCC("XPTL"),
SUB_XPWR = fourCC("XPWR"),
SUB_XRAD = fourCC("XRAD"), // FO3
SUB_XRDO = fourCC("XRDO"), // FO3
SUB_XRDS = fourCC("XRDS"),
SUB_XRFG = fourCC("XRFG"), // FO4
SUB_XRGB = fourCC("XRGB"),
SUB_XRGD = fourCC("XRGD"),
SUB_XRMR = fourCC("XRMR"),
SUB_XRNK = fourCC("XRNK"), // TES4 only?
SUB_XRTM = fourCC("XRTM"),
SUB_XSCL = fourCC("XSCL"),
SUB_XSED = fourCC("XSED"),
SUB_XSPC = fourCC("XSPC"),
SUB_XSRD = fourCC("XSRD"), // FONV
SUB_XSRF = fourCC("XSRF"), // FONV
SUB_XTEL = fourCC("XTEL"),
SUB_XTNM = fourCC("XTNM"),
SUB_XTRG = fourCC("XTRG"),
SUB_XTRI = fourCC("XTRI"),
SUB_XWCN = fourCC("XWCN"),
SUB_XWCS = fourCC("XWCS"),
SUB_XWCU = fourCC("XWCU"),
SUB_XWEM = fourCC("XWEM"),
SUB_XWPG = fourCC("XWPG"), // FO4
SUB_XWPN = fourCC("XWPN"), // FO4
SUB_XXXX = fourCC("XXXX"),
SUB_YNAM = fourCC("YNAM"),
SUB_ZNAM = fourCC("ZNAM"),
};
// Based on http://www.uesp.net/wiki/Tes5Mod:Mod_File_Format#Records
enum RecordFlag
{

@ -42,22 +42,22 @@ void ESM4::ActorCharacter::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getZString(mFullName);
break;
case ESM4::SUB_NAME:
case ESM::fourCC("NAME"):
reader.getFormId(mBaseObj);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
reader.get(mPos);
break;
case ESM4::SUB_XSCL:
case ESM::fourCC("XSCL"):
reader.get(mScale);
break;
case ESM4::SUB_XOWN:
case ESM::fourCC("XOWN"):
{
switch (subHdr.dataSize)
{
@ -78,57 +78,57 @@ void ESM4::ActorCharacter::load(ESM4::Reader& reader)
}
break;
}
case ESM4::SUB_XESP:
case ESM::fourCC("XESP"):
reader.getFormId(mEsp.parent);
reader.get(mEsp.flags);
break;
case ESM4::SUB_XCNT:
case ESM::fourCC("XCNT"):
{
reader.get(mCount);
break;
}
case ESM4::SUB_XRGD: // ragdoll
case ESM4::SUB_XRGB: // ragdoll biped
case ESM4::SUB_XHRS: // horse formId
case ESM4::SUB_XMRC: // merchant container formId
case ESM::fourCC("XRGD"): // ragdoll
case ESM::fourCC("XRGB"): // ragdoll biped
case ESM::fourCC("XHRS"): // horse formId
case ESM::fourCC("XMRC"): // merchant container formId
// TES5
case ESM4::SUB_XAPD: // activation parent
case ESM4::SUB_XAPR: // active parent
case ESM4::SUB_XEZN: // encounter zone
case ESM4::SUB_XHOR:
case ESM4::SUB_XLCM: // levelled creature
case ESM4::SUB_XLCN: // location
case ESM4::SUB_XLKR: // location route?
case ESM4::SUB_XLRT: // location type
case ESM::fourCC("XAPD"): // activation parent
case ESM::fourCC("XAPR"): // active parent
case ESM::fourCC("XEZN"): // encounter zone
case ESM::fourCC("XHOR"):
case ESM::fourCC("XLCM"): // levelled creature
case ESM::fourCC("XLCN"): // location
case ESM::fourCC("XLKR"): // location route?
case ESM::fourCC("XLRT"): // location type
//
case ESM4::SUB_XPRD:
case ESM4::SUB_XPPA:
case ESM4::SUB_INAM:
case ESM4::SUB_PDTO:
case ESM::fourCC("XPRD"):
case ESM::fourCC("XPPA"):
case ESM::fourCC("INAM"):
case ESM::fourCC("PDTO"):
//
case ESM4::SUB_XIS2:
case ESM4::SUB_XPCI: // formId
case ESM4::SUB_XLOD:
case ESM4::SUB_VMAD:
case ESM4::SUB_XLRL: // Unofficial Skyrim Patch
case ESM4::SUB_XRDS: // FO3
case ESM4::SUB_XIBS: // FO3
case ESM4::SUB_SCHR: // FO3
case ESM4::SUB_TNAM: // FO3
case ESM4::SUB_XATO: // FONV
case ESM4::SUB_MNAM: // FO4
case ESM4::SUB_XATP: // FO4
case ESM4::SUB_XEMI: // FO4
case ESM4::SUB_XFVC: // FO4
case ESM4::SUB_XHLT: // FO4
case ESM4::SUB_XHTW: // FO4
case ESM4::SUB_XLKT: // FO4
case ESM4::SUB_XLYR: // FO4
case ESM4::SUB_XMBR: // FO4
case ESM4::SUB_XMSP: // FO4
case ESM4::SUB_XPLK: // FO4
case ESM4::SUB_XRFG: // FO4
case ESM4::SUB_XRNK: // FO4
case ESM::fourCC("XIS2"):
case ESM::fourCC("XPCI"): // formId
case ESM::fourCC("XLOD"):
case ESM::fourCC("VMAD"):
case ESM::fourCC("XLRL"): // Unofficial Skyrim Patch
case ESM::fourCC("XRDS"): // FO3
case ESM::fourCC("XIBS"): // FO3
case ESM::fourCC("SCHR"): // FO3
case ESM::fourCC("TNAM"): // FO3
case ESM::fourCC("XATO"): // FONV
case ESM::fourCC("MNAM"): // FO4
case ESM::fourCC("XATP"): // FO4
case ESM::fourCC("XEMI"): // FO4
case ESM::fourCC("XFVC"): // FO4
case ESM::fourCC("XHLT"): // FO4
case ESM::fourCC("XHTW"): // FO4
case ESM::fourCC("XLKT"): // FO4
case ESM::fourCC("XLYR"): // FO4
case ESM::fourCC("XMBR"): // FO4
case ESM::fourCC("XMSP"): // FO4
case ESM::fourCC("XPLK"): // FO4
case ESM::fourCC("XRFG"): // FO4
case ESM::fourCC("XRNK"): // FO4
reader.skipSubRecordData();
break;
default:

@ -41,69 +41,69 @@ void ESM4::Activator::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_SNAM:
case ESM::fourCC("SNAM"):
reader.getFormId(mLoopingSound);
break;
case ESM4::SUB_VNAM:
case ESM::fourCC("VNAM"):
reader.getFormId(mActivationSound);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_INAM:
case ESM::fourCC("INAM"):
reader.getFormId(mRadioTemplate);
break; // FONV
case ESM4::SUB_RNAM:
case ESM::fourCC("RNAM"):
reader.getFormId(mRadioStation);
break;
case ESM4::SUB_XATO:
case ESM::fourCC("XATO"):
reader.getZString(mActivationPrompt);
break; // FONV
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_DAMC: // Destructible
case ESM4::SUB_DEST:
case ESM4::SUB_DMDC:
case ESM4::SUB_DMDL:
case ESM4::SUB_DMDT:
case ESM4::SUB_DMDS:
case ESM4::SUB_DSTA:
case ESM4::SUB_DSTD:
case ESM4::SUB_DSTF: // Destructible end
case ESM4::SUB_FNAM:
case ESM4::SUB_KNAM:
case ESM4::SUB_KSIZ:
case ESM4::SUB_KWDA:
case ESM4::SUB_OBND:
case ESM4::SUB_PNAM:
case ESM4::SUB_VMAD:
case ESM4::SUB_WNAM:
case ESM4::SUB_CTDA:
case ESM4::SUB_CIS1:
case ESM4::SUB_CIS2:
case ESM4::SUB_CITC:
case ESM4::SUB_NVNM:
case ESM4::SUB_ATTX: // FO4
case ESM4::SUB_FTYP: // FO4
case ESM4::SUB_NTRM: // FO4
case ESM4::SUB_PTRN: // FO4
case ESM4::SUB_PRPS: // FO4
case ESM4::SUB_RADR: // FO4
case ESM4::SUB_STCP: // FO4
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("DAMC"): // Destructible
case ESM::fourCC("DEST"):
case ESM::fourCC("DMDC"):
case ESM::fourCC("DMDL"):
case ESM::fourCC("DMDT"):
case ESM::fourCC("DMDS"):
case ESM::fourCC("DSTA"):
case ESM::fourCC("DSTD"):
case ESM::fourCC("DSTF"): // Destructible end
case ESM::fourCC("FNAM"):
case ESM::fourCC("KNAM"):
case ESM::fourCC("KSIZ"):
case ESM::fourCC("KWDA"):
case ESM::fourCC("OBND"):
case ESM::fourCC("PNAM"):
case ESM::fourCC("VMAD"):
case ESM::fourCC("WNAM"):
case ESM::fourCC("CTDA"):
case ESM::fourCC("CIS1"):
case ESM::fourCC("CIS2"):
case ESM::fourCC("CITC"):
case ESM::fourCC("NVNM"):
case ESM::fourCC("ATTX"): // FO4
case ESM::fourCC("FTYP"): // FO4
case ESM::fourCC("NTRM"): // FO4
case ESM::fourCC("PTRN"): // FO4
case ESM::fourCC("PRPS"): // FO4
case ESM::fourCC("RADR"): // FO4
case ESM::fourCC("STCP"): // FO4
reader.skipSubRecordData();
break;
default:

@ -42,35 +42,35 @@ void ESM4::Potion::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mIcon);
break;
case ESM4::SUB_MICO:
case ESM::fourCC("MICO"):
reader.getZString(mMiniIcon);
break; // FO3
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
reader.get(mData);
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_SCIT:
case ESM::fourCC("SCIT"):
reader.get(mEffect);
reader.adjustFormId(mEffect.formId);
break;
case ESM4::SUB_ENIT:
case ESM::fourCC("ENIT"):
if (subHdr.dataSize == 8) // TES4
{
reader.get(&mItem, 8);
@ -82,36 +82,36 @@ void ESM4::Potion::load(ESM4::Reader& reader)
reader.adjustFormId(mItem.withdrawl);
reader.adjustFormId(mItem.sound);
break;
case ESM4::SUB_YNAM:
case ESM::fourCC("YNAM"):
reader.getFormId(mPickUpSound);
break;
case ESM4::SUB_ZNAM:
case ESM::fourCC("ZNAM"):
reader.getFormId(mDropSound);
break;
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_EFID:
case ESM4::SUB_EFIT:
case ESM4::SUB_CTDA:
case ESM4::SUB_KSIZ:
case ESM4::SUB_KWDA:
case ESM4::SUB_OBND:
case ESM4::SUB_ETYP: // FO3
case ESM4::SUB_DESC:
case ESM4::SUB_DAMC: // Destructible
case ESM4::SUB_DEST:
case ESM4::SUB_DMDC:
case ESM4::SUB_DMDL:
case ESM4::SUB_DMDT:
case ESM4::SUB_DMDS:
case ESM4::SUB_DSTA:
case ESM4::SUB_DSTD:
case ESM4::SUB_DSTF: // Destructible end
case ESM4::SUB_DNAM: // FO4
case ESM4::SUB_PTRN: // FO4
case ESM4::SUB_CUSD: // FO4
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("EFID"):
case ESM::fourCC("EFIT"):
case ESM::fourCC("CTDA"):
case ESM::fourCC("KSIZ"):
case ESM::fourCC("KWDA"):
case ESM::fourCC("OBND"):
case ESM::fourCC("ETYP"): // FO3
case ESM::fourCC("DESC"):
case ESM::fourCC("DAMC"): // Destructible
case ESM::fourCC("DEST"):
case ESM::fourCC("DMDC"):
case ESM::fourCC("DMDL"):
case ESM::fourCC("DMDT"):
case ESM::fourCC("DMDS"):
case ESM::fourCC("DSTA"):
case ESM::fourCC("DSTD"):
case ESM::fourCC("DSTF"): // Destructible end
case ESM::fourCC("DNAM"): // FO4
case ESM::fourCC("PTRN"): // FO4
case ESM::fourCC("CUSD"): // FO4
reader.skipSubRecordData();
break;
default:

@ -42,34 +42,34 @@ void ESM4::MediaLocationController::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getZString(mFullName);
break;
case ESM4::SUB_GNAM:
case ESM::fourCC("GNAM"):
reader.getFormId(mBattleSets.emplace_back());
break;
case ESM4::SUB_LNAM:
case ESM::fourCC("LNAM"):
reader.getFormId(mLocationSets.emplace_back());
break;
case ESM4::SUB_YNAM:
case ESM::fourCC("YNAM"):
reader.getFormId(mEnemySets.emplace_back());
break;
case ESM4::SUB_HNAM:
case ESM::fourCC("HNAM"):
reader.getFormId(mNeutralSets.emplace_back());
break;
case ESM4::SUB_XNAM:
case ESM::fourCC("XNAM"):
reader.getFormId(mFriendSets.emplace_back());
break;
case ESM4::SUB_ZNAM:
case ESM::fourCC("ZNAM"):
reader.getFormId(mAllySets.emplace_back());
break;
case ESM4::SUB_RNAM:
case ESM::fourCC("RNAM"):
reader.getFormId(mConditionalFaction);
break;
case ESM4::SUB_NAM1:
case ESM::fourCC("NAM1"):
{
reader.get(mMediaFlags);
std::uint8_t flags = mMediaFlags.loopingOptions;
@ -77,21 +77,21 @@ void ESM4::MediaLocationController::load(ESM4::Reader& reader)
mMediaFlags.factionNotFound = flags & 0x0F; // WARN: overwriting data
break;
}
case ESM4::SUB_NAM4:
case ESM::fourCC("NAM4"):
reader.get(mLocationDelay);
break;
case ESM4::SUB_NAM7:
case ESM::fourCC("NAM7"):
reader.get(mRetriggerDelay);
break;
case ESM4::SUB_NAM5:
case ESM::fourCC("NAM5"):
reader.get(mDayStart);
break;
case ESM4::SUB_NAM6:
case ESM::fourCC("NAM6"):
reader.get(mNightStart);
break;
case ESM4::SUB_NAM2: // always 0? 4 bytes
case ESM4::SUB_NAM3: // always 0? 4 bytes
case ESM4::SUB_FNAM: // always 0? 4 bytes
case ESM::fourCC("NAM2"): // always 0? 4 bytes
case ESM::fourCC("NAM3"): // always 0? 4 bytes
case ESM::fourCC("FNAM"): // always 0? 4 bytes
{
#if 0
std::vector<unsigned char> mDataBuf(subHdr.dataSize);

@ -41,13 +41,13 @@ void ESM4::Ammunition::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
switch (subHdr.dataSize)
{
case 18: // TES4
@ -86,7 +86,7 @@ void ESM4::Ammunition::load(ESM4::Reader& reader)
break;
}
break;
case ESM4::SUB_DAT2:
case ESM::fourCC("DAT2"):
if (subHdr.dataSize == 20)
{
reader.get(mData.mProjPerShot);
@ -100,71 +100,71 @@ void ESM4::Ammunition::load(ESM4::Reader& reader)
reader.skipSubRecordData();
}
break;
case ESM4::SUB_DNAM:
case ESM::fourCC("DNAM"):
reader.getFormId(mData.mProjectile);
reader.get(mData.mFlags);
mData.mFlags &= 0xFF;
reader.get(mData.mDamage);
reader.get(mData.mHealth);
break;
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mIcon);
break;
case ESM4::SUB_MICO:
case ESM::fourCC("MICO"):
reader.getZString(mMiniIcon);
break; // FO3
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_ANAM:
case ESM::fourCC("ANAM"):
reader.get(mEnchantmentPoints);
break;
case ESM4::SUB_ENAM:
case ESM::fourCC("ENAM"):
reader.getFormId(mEnchantment);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_DESC:
case ESM::fourCC("DESC"):
reader.getLocalizedString(mText);
break;
case ESM4::SUB_YNAM:
case ESM::fourCC("YNAM"):
reader.getFormId(mPickUpSound);
break;
case ESM4::SUB_ZNAM:
case ESM::fourCC("ZNAM"):
reader.getFormId(mDropSound);
break;
case ESM4::SUB_ONAM:
case ESM::fourCC("ONAM"):
reader.getLocalizedString(mShortName);
break;
case ESM4::SUB_QNAM: // FONV
case ESM::fourCC("QNAM"): // FONV
reader.getLocalizedString(mAbbrev);
break;
case ESM4::SUB_RCIL:
case ESM::fourCC("RCIL"):
reader.getFormId(mAmmoEffects.emplace_back());
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScript);
break;
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_OBND:
case ESM4::SUB_KSIZ:
case ESM4::SUB_KWDA:
case ESM4::SUB_DAMC: // Destructible
case ESM4::SUB_DEST:
case ESM4::SUB_DMDC:
case ESM4::SUB_DMDL:
case ESM4::SUB_DMDT:
case ESM4::SUB_DMDS:
case ESM4::SUB_DSTA:
case ESM4::SUB_DSTD:
case ESM4::SUB_DSTF: // Destructible end
case ESM4::SUB_PTRN: // FO4
case ESM4::SUB_NAM1: // FO4 casing model data
case ESM4::SUB_NAM2: //
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("OBND"):
case ESM::fourCC("KSIZ"):
case ESM::fourCC("KWDA"):
case ESM::fourCC("DAMC"): // Destructible
case ESM::fourCC("DEST"):
case ESM::fourCC("DMDC"):
case ESM::fourCC("DMDL"):
case ESM::fourCC("DMDT"):
case ESM::fourCC("DMDS"):
case ESM::fourCC("DSTA"):
case ESM::fourCC("DSTD"):
case ESM::fourCC("DSTF"): // Destructible end
case ESM::fourCC("PTRN"): // FO4
case ESM::fourCC("NAM1"): // FO4 casing model data
case ESM::fourCC("NAM2"): //
reader.skipSubRecordData();
break;
default:

@ -41,25 +41,25 @@ void ESM4::AnimObject::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_BNAM:
case ESM::fourCC("BNAM"):
reader.getZString(mUnloadEvent);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
reader.getFormId(mIdleAnim);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
reader.skipSubRecordData();
break;
default:

@ -41,13 +41,13 @@ void ESM4::Apparatus::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
if (reader.esmVersion() == ESM::VER_094 || reader.esmVersion() == ESM::VER_170)
{
reader.get(mData.value);
@ -61,24 +61,24 @@ void ESM4::Apparatus::load(ESM4::Reader& reader)
reader.get(mData.quality);
}
break;
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mIcon);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_DESC:
case ESM::fourCC("DESC"):
reader.getLocalizedString(mText);
break;
case ESM4::SUB_MODT:
case ESM4::SUB_OBND:
case ESM4::SUB_QUAL:
case ESM::fourCC("MODT"):
case ESM::fourCC("OBND"):
case ESM::fourCC("QUAL"):
reader.skipSubRecordData();
break;
default:

@ -43,39 +43,39 @@ void ESM4::ArmorAddon::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_MOD2:
case ESM::fourCC("MOD2"):
reader.getZString(mModelMale);
break;
case ESM4::SUB_MOD3:
case ESM::fourCC("MOD3"):
reader.getZString(mModelFemale);
break;
case ESM4::SUB_MOD4:
case ESM4::SUB_MOD5:
case ESM::fourCC("MOD4"):
case ESM::fourCC("MOD5"):
{
std::string model;
reader.getZString(model);
break;
}
case ESM4::SUB_NAM0:
case ESM::fourCC("NAM0"):
reader.getFormId(mTextureMale);
break;
case ESM4::SUB_NAM1:
case ESM::fourCC("NAM1"):
reader.getFormId(mTextureFemale);
break;
case ESM4::SUB_RNAM:
case ESM::fourCC("RNAM"):
reader.getFormId(mRacePrimary);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
if ((esmVer == ESM::VER_094 || esmVer == ESM::VER_170) && subHdr.dataSize == 4) // TES5
reader.getFormId(mRaces.emplace_back());
else
reader.skipSubRecordData(); // FIXME: this should be mModelMale for FO3/FONV
break;
case ESM4::SUB_BODT: // body template
case ESM::fourCC("BODT"): // body template
reader.get(mBodyTemplate.bodyPart);
reader.get(mBodyTemplate.flags);
reader.get(mBodyTemplate.unknown1); // probably padding
@ -83,7 +83,7 @@ void ESM4::ArmorAddon::load(ESM4::Reader& reader)
reader.get(mBodyTemplate.unknown3); // probably padding
reader.get(mBodyTemplate.type);
break;
case ESM4::SUB_BOD2: // TES5+
case ESM::fourCC("BOD2"): // TES5+
reader.get(mBodyTemplate.bodyPart);
mBodyTemplate.flags = 0;
mBodyTemplate.unknown1 = 0; // probably padding
@ -94,7 +94,7 @@ void ESM4::ArmorAddon::load(ESM4::Reader& reader)
reader.get(mBodyTemplate.type);
break;
case ESM4::SUB_DNAM:
case ESM::fourCC("DNAM"):
if (subHdr.dataSize == 12)
{
std::uint16_t unknownInt16;
@ -111,40 +111,40 @@ void ESM4::ArmorAddon::load(ESM4::Reader& reader)
else
reader.skipSubRecordData();
break;
case ESM4::SUB_MO2T: // FIXME: should group with MOD2
case ESM4::SUB_MO2S: // FIXME: should group with MOD2
case ESM4::SUB_MO2C: // FIXME: should group with MOD2
case ESM4::SUB_MO2F: // FIXME: should group with MOD2
case ESM4::SUB_MO3T: // FIXME: should group with MOD3
case ESM4::SUB_MO3S: // FIXME: should group with MOD3
case ESM4::SUB_MO3C: // FIXME: should group with MOD3
case ESM4::SUB_MO3F: // FIXME: should group with MOD3
case ESM4::SUB_MOSD: // FO3 // FIXME: should group with MOD3
case ESM4::SUB_MO4T: // FIXME: should group with MOD4
case ESM4::SUB_MO4S: // FIXME: should group with MOD4
case ESM4::SUB_MO4C: // FIXME: should group with MOD4
case ESM4::SUB_MO4F: // FIXME: should group with MOD4
case ESM4::SUB_MO5T:
case ESM4::SUB_MO5S:
case ESM4::SUB_MO5C:
case ESM4::SUB_MO5F:
case ESM4::SUB_NAM2: // txst formid male
case ESM4::SUB_NAM3: // txst formid female
case ESM4::SUB_SNDD: // footset sound formid
case ESM4::SUB_BMDT: // FO3
case ESM4::SUB_DATA: // FO3
case ESM4::SUB_ETYP: // FO3
case ESM4::SUB_FULL: // FO3
case ESM4::SUB_ICO2: // FO3 // female
case ESM4::SUB_ICON: // FO3 // male
case ESM4::SUB_MODT: // FO3 // FIXME: should group with MODL
case ESM4::SUB_MODS: // FO3 // FIXME: should group with MODL
case ESM4::SUB_MODD: // FO3 // FIXME: should group with MODL
case ESM4::SUB_OBND: // FO3
case ESM4::SUB_BSMB: // FO4
case ESM4::SUB_BSMP: // FO4
case ESM4::SUB_BSMS: // FO4
case ESM4::SUB_ONAM: // FO4
case ESM::fourCC("MO2T"): // FIXME: should group with MOD2
case ESM::fourCC("MO2S"): // FIXME: should group with MOD2
case ESM::fourCC("MO2C"): // FIXME: should group with MOD2
case ESM::fourCC("MO2F"): // FIXME: should group with MOD2
case ESM::fourCC("MO3T"): // FIXME: should group with MOD3
case ESM::fourCC("MO3S"): // FIXME: should group with MOD3
case ESM::fourCC("MO3C"): // FIXME: should group with MOD3
case ESM::fourCC("MO3F"): // FIXME: should group with MOD3
case ESM::fourCC("MOSD"): // FO3 // FIXME: should group with MOD3
case ESM::fourCC("MO4T"): // FIXME: should group with MOD4
case ESM::fourCC("MO4S"): // FIXME: should group with MOD4
case ESM::fourCC("MO4C"): // FIXME: should group with MOD4
case ESM::fourCC("MO4F"): // FIXME: should group with MOD4
case ESM::fourCC("MO5T"):
case ESM::fourCC("MO5S"):
case ESM::fourCC("MO5C"):
case ESM::fourCC("MO5F"):
case ESM::fourCC("NAM2"): // txst formid male
case ESM::fourCC("NAM3"): // txst formid female
case ESM::fourCC("SNDD"): // footset sound formid
case ESM::fourCC("BMDT"): // FO3
case ESM::fourCC("DATA"): // FO3
case ESM::fourCC("ETYP"): // FO3
case ESM::fourCC("FULL"): // FO3
case ESM::fourCC("ICO2"): // FO3 // female
case ESM::fourCC("ICON"): // FO3 // male
case ESM::fourCC("MODT"): // FO3 // FIXME: should group with MODL
case ESM::fourCC("MODS"): // FO3 // FIXME: should group with MODL
case ESM::fourCC("MODD"): // FO3 // FIXME: should group with MODL
case ESM::fourCC("OBND"): // FO3
case ESM::fourCC("BSMB"): // FO4
case ESM::fourCC("BSMP"): // FO4
case ESM::fourCC("BSMS"): // FO4
case ESM::fourCC("ONAM"): // FO4
reader.skipSubRecordData();
break;
default:

@ -41,13 +41,13 @@ void ESM4::Armor::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
{
switch (subHdr.dataSize)
{
@ -69,12 +69,12 @@ void ESM4::Armor::load(ESM4::Reader& reader)
}
break;
}
case ESM4::SUB_INDX: // FO4
case ESM::fourCC("INDX"): // FO4
{
reader.get(currentIndex);
break;
}
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
{
if (subHdr.dataSize == 4)
{
@ -97,28 +97,28 @@ void ESM4::Armor::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_MOD2:
case ESM::fourCC("MOD2"):
reader.getZString(mModelMaleWorld);
break;
case ESM4::SUB_MOD3:
case ESM::fourCC("MOD3"):
reader.getZString(mModelFemale);
break;
case ESM4::SUB_MOD4:
case ESM::fourCC("MOD4"):
reader.getZString(mModelFemaleWorld);
break;
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mIconMale);
break;
case ESM4::SUB_MICO:
case ESM::fourCC("MICO"):
reader.getZString(mMiniIconMale);
break;
case ESM4::SUB_ICO2:
case ESM::fourCC("ICO2"):
reader.getZString(mIconFemale);
break;
case ESM4::SUB_MIC2:
case ESM::fourCC("MIC2"):
reader.getZString(mMiniIconFemale);
break;
case ESM4::SUB_BMDT:
case ESM::fourCC("BMDT"):
if (subHdr.dataSize == 8) // FO3
{
reader.get(mArmorFlags);
@ -133,7 +133,7 @@ void ESM4::Armor::load(ESM4::Reader& reader)
mGeneralFlags |= TYPE_TES4;
}
break;
case ESM4::SUB_BODT:
case ESM::fourCC("BODT"):
{
reader.get(mArmorFlags);
uint32_t flags = 0;
@ -146,7 +146,7 @@ void ESM4::Armor::load(ESM4::Reader& reader)
mGeneralFlags |= TYPE_TES5;
break;
}
case ESM4::SUB_BOD2:
case ESM::fourCC("BOD2"):
// FO4, TES5
if (subHdr.dataSize == 4 || subHdr.dataSize == 8)
{
@ -163,75 +163,75 @@ void ESM4::Armor::load(ESM4::Reader& reader)
reader.skipSubRecordData();
}
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_ANAM:
case ESM::fourCC("ANAM"):
reader.get(mEnchantmentPoints);
break;
case ESM4::SUB_ENAM:
case ESM::fourCC("ENAM"):
reader.getFormId(mEnchantment);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_DESC:
case ESM::fourCC("DESC"):
reader.getLocalizedString(mText);
break;
case ESM4::SUB_YNAM:
case ESM::fourCC("YNAM"):
reader.getFormId(mPickUpSound);
break;
case ESM4::SUB_ZNAM:
case ESM::fourCC("ZNAM"):
reader.getFormId(mDropSound);
break;
case ESM4::SUB_MODT:
case ESM4::SUB_MO2B:
case ESM4::SUB_MO3B:
case ESM4::SUB_MO4B:
case ESM4::SUB_MO2T:
case ESM4::SUB_MO2S:
case ESM4::SUB_MO3T:
case ESM4::SUB_MO4T:
case ESM4::SUB_MO4S:
case ESM4::SUB_OBND:
case ESM4::SUB_RNAM: // race formid
case ESM4::SUB_KSIZ:
case ESM4::SUB_KWDA:
case ESM4::SUB_TNAM:
case ESM4::SUB_DNAM:
case ESM4::SUB_BAMT:
case ESM4::SUB_BIDS:
case ESM4::SUB_ETYP:
case ESM4::SUB_BMCT:
case ESM4::SUB_EAMT:
case ESM4::SUB_EITM:
case ESM4::SUB_VMAD:
case ESM4::SUB_REPL: // FO3
case ESM4::SUB_BIPL: // FO3
case ESM4::SUB_MODD: // FO3
case ESM4::SUB_MOSD: // FO3
case ESM4::SUB_MODS: // FO3
case ESM4::SUB_MO3S: // FO3
case ESM4::SUB_BNAM: // FONV
case ESM4::SUB_SNAM: // FONV
case ESM4::SUB_DAMC: // Destructible
case ESM4::SUB_DEST:
case ESM4::SUB_DMDC:
case ESM4::SUB_DMDL:
case ESM4::SUB_DMDT:
case ESM4::SUB_DMDS:
case ESM4::SUB_DSTA:
case ESM4::SUB_DSTD:
case ESM4::SUB_DSTF: // Destructible end
case ESM4::SUB_APPR: // FO4
case ESM4::SUB_DAMA: // FO4
case ESM4::SUB_FNAM: // FO4
case ESM4::SUB_INRD: // FO4
case ESM4::SUB_PTRN: // FO4
case ESM4::SUB_OBTE: // FO4 object template start
case ESM4::SUB_OBTF:
case ESM4::SUB_OBTS:
case ESM4::SUB_STOP: // FO4 object template end
case ESM::fourCC("MODT"):
case ESM::fourCC("MO2B"):
case ESM::fourCC("MO3B"):
case ESM::fourCC("MO4B"):
case ESM::fourCC("MO2T"):
case ESM::fourCC("MO2S"):
case ESM::fourCC("MO3T"):
case ESM::fourCC("MO4T"):
case ESM::fourCC("MO4S"):
case ESM::fourCC("OBND"):
case ESM::fourCC("RNAM"): // race formid
case ESM::fourCC("KSIZ"):
case ESM::fourCC("KWDA"):
case ESM::fourCC("TNAM"):
case ESM::fourCC("DNAM"):
case ESM::fourCC("BAMT"):
case ESM::fourCC("BIDS"):
case ESM::fourCC("ETYP"):
case ESM::fourCC("BMCT"):
case ESM::fourCC("EAMT"):
case ESM::fourCC("EITM"):
case ESM::fourCC("VMAD"):
case ESM::fourCC("REPL"): // FO3
case ESM::fourCC("BIPL"): // FO3
case ESM::fourCC("MODD"): // FO3
case ESM::fourCC("MOSD"): // FO3
case ESM::fourCC("MODS"): // FO3
case ESM::fourCC("MO3S"): // FO3
case ESM::fourCC("BNAM"): // FONV
case ESM::fourCC("SNAM"): // FONV
case ESM::fourCC("DAMC"): // Destructible
case ESM::fourCC("DEST"):
case ESM::fourCC("DMDC"):
case ESM::fourCC("DMDL"):
case ESM::fourCC("DMDT"):
case ESM::fourCC("DMDS"):
case ESM::fourCC("DSTA"):
case ESM::fourCC("DSTD"):
case ESM::fourCC("DSTF"): // Destructible end
case ESM::fourCC("APPR"): // FO4
case ESM::fourCC("DAMA"): // FO4
case ESM::fourCC("FNAM"): // FO4
case ESM::fourCC("INRD"): // FO4
case ESM::fourCC("PTRN"): // FO4
case ESM::fourCC("OBTE"): // FO4 object template start
case ESM::fourCC("OBTF"):
case ESM::fourCC("OBTS"):
case ESM::fourCC("STOP"): // FO4 object template end
reader.skipSubRecordData();
break;
default:

@ -41,35 +41,35 @@ void ESM4::AcousticSpace::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_ANAM:
case ESM::fourCC("ANAM"):
reader.get(mEnvironmentType);
break;
case ESM4::SUB_SNAM:
case ESM::fourCC("SNAM"):
reader.getFormId(mAmbientLoopSounds.emplace_back());
break;
case ESM4::SUB_RDAT:
case ESM::fourCC("RDAT"):
reader.getFormId(mSoundRegion);
break;
case ESM4::SUB_INAM:
case ESM::fourCC("INAM"):
reader.get(mIsInterior);
break;
case ESM4::SUB_XTRI:
case ESM::fourCC("XTRI"):
std::uint8_t isInterior;
reader.get(isInterior);
mIsInterior = isInterior;
break;
case ESM4::SUB_WNAM:
case ESM::fourCC("WNAM"):
{
// usually 0 for FONV (maybe # of close Actors for Walla to trigger) (4 bytes)
// Weather attenuation in FO4 (2 bytes)
reader.skipSubRecordData();
break;
}
case ESM4::SUB_BNAM: // TES5 reverb formid
case ESM4::SUB_OBND:
case ESM::fourCC("BNAM"): // TES5 reverb formid
case ESM::fourCC("OBND"):
reader.skipSubRecordData();
break;
default:

@ -42,16 +42,16 @@ void ESM4::Book::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_DESC:
case ESM::fourCC("DESC"):
reader.getLocalizedString(mText);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
{
switch (subHdr.dataSize)
{
@ -82,53 +82,53 @@ void ESM4::Book::load(ESM4::Reader& reader)
}
break;
}
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mIcon);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_ANAM:
case ESM::fourCC("ANAM"):
reader.get(mEnchantmentPoints);
break;
case ESM4::SUB_ENAM:
case ESM::fourCC("ENAM"):
reader.getFormId(mEnchantment);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_YNAM:
case ESM::fourCC("YNAM"):
reader.getFormId(mPickUpSound);
break;
case ESM4::SUB_ZNAM:
case ESM::fourCC("ZNAM"):
reader.getFormId(mDropSound);
break;
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_OBND:
case ESM4::SUB_KSIZ:
case ESM4::SUB_KWDA:
case ESM4::SUB_CNAM:
case ESM4::SUB_INAM:
case ESM4::SUB_VMAD:
case ESM4::SUB_DAMC: // Destructible
case ESM4::SUB_DEST:
case ESM4::SUB_DMDC:
case ESM4::SUB_DMDL:
case ESM4::SUB_DMDT:
case ESM4::SUB_DMDS:
case ESM4::SUB_DSTA:
case ESM4::SUB_DSTD:
case ESM4::SUB_DSTF: // Destructible end
case ESM4::SUB_DNAM: // FO4
case ESM4::SUB_FIMD: // FO4
case ESM4::SUB_MICO: // FO4
case ESM4::SUB_PTRN: // FO4
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("OBND"):
case ESM::fourCC("KSIZ"):
case ESM::fourCC("KWDA"):
case ESM::fourCC("CNAM"):
case ESM::fourCC("INAM"):
case ESM::fourCC("VMAD"):
case ESM::fourCC("DAMC"): // Destructible
case ESM::fourCC("DEST"):
case ESM::fourCC("DMDC"):
case ESM::fourCC("DMDL"):
case ESM::fourCC("DMDT"):
case ESM::fourCC("DMDS"):
case ESM::fourCC("DSTA"):
case ESM::fourCC("DSTD"):
case ESM::fourCC("DSTF"): // Destructible end
case ESM::fourCC("DNAM"): // FO4
case ESM::fourCC("FIMD"): // FO4
case ESM::fourCC("MICO"): // FO4
case ESM::fourCC("PTRN"): // FO4
reader.skipSubRecordData();
break;
default:

@ -56,56 +56,56 @@ void ESM4::BodyPartData::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_BPTN:
case ESM::fourCC("BPTN"):
reader.getLocalizedString(bodyPart.mPartName);
break;
case ESM4::SUB_BPNN:
case ESM::fourCC("BPNN"):
reader.getZString(bodyPart.mNodeName);
break;
case ESM4::SUB_BPNT:
case ESM::fourCC("BPNT"):
reader.getZString(bodyPart.mVATSTarget);
break;
case ESM4::SUB_BPNI:
case ESM::fourCC("BPNI"):
reader.getZString(bodyPart.mIKStartNode);
break;
case ESM4::SUB_BPND:
case ESM::fourCC("BPND"):
if (subHdr.dataSize == sizeof(bodyPart.mData))
reader.get(bodyPart.mData);
// FIXME: FO4
else
reader.skipSubRecordData();
break;
case ESM4::SUB_NAM1:
case ESM::fourCC("NAM1"):
reader.getZString(bodyPart.mLimbReplacementModel);
break;
case ESM4::SUB_NAM4: // FIXME: assumed occurs last
case ESM::fourCC("NAM4"): // FIXME: assumed occurs last
reader.getZString(bodyPart.mGoreEffectsTarget); // target bone
mBodyParts.push_back(bodyPart); // FIXME: possible without copying?
bodyPart.clear();
break;
case ESM4::SUB_NAM5:
case ESM4::SUB_RAGA: // ragdoll
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_BNAM: // FO4
case ESM4::SUB_CNAM: // FO4
case ESM4::SUB_DNAM: // FO4
case ESM4::SUB_ENAM: // FO4
case ESM4::SUB_FNAM: // FO4
case ESM4::SUB_INAM: // FO4
case ESM4::SUB_JNAM: // FO4
case ESM4::SUB_NAM2: // FO4
case ESM::fourCC("NAM5"):
case ESM::fourCC("RAGA"): // ragdoll
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("BNAM"): // FO4
case ESM::fourCC("CNAM"): // FO4
case ESM::fourCC("DNAM"): // FO4
case ESM::fourCC("ENAM"): // FO4
case ESM::fourCC("FNAM"): // FO4
case ESM::fourCC("INAM"): // FO4
case ESM::fourCC("JNAM"): // FO4
case ESM::fourCC("NAM2"): // FO4
reader.skipSubRecordData();
break;
default:

@ -78,7 +78,7 @@ void ESM4::Cell::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
{
if (!reader.getZString(mEditorId))
throw std::runtime_error("CELL EDID data read error");
@ -89,7 +89,7 @@ void ESM4::Cell::load(ESM4::Reader& reader)
#endif
break;
}
case ESM4::SUB_XCLC:
case ESM::fourCC("XCLC"):
{
//(X, Y) grid location of the cell followed by flags. Always in
// exterior cells and never in interior cells.
@ -114,10 +114,10 @@ void ESM4::Cell::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
{
if (subHdr.dataSize == 2)
reader.get(mCellFlags);
@ -131,7 +131,7 @@ void ESM4::Cell::load(ESM4::Reader& reader)
}
break;
}
case ESM4::SUB_XCLR: // for exterior cells
case ESM::fourCC("XCLR"): // for exterior cells
{
mRegions.resize(subHdr.dataSize / sizeof(ESM::FormId32));
for (std::vector<ESM::FormId>::iterator it = mRegions.begin(); it != mRegions.end(); ++it)
@ -145,7 +145,7 @@ void ESM4::Cell::load(ESM4::Reader& reader)
}
break;
}
case ESM4::SUB_XOWN:
case ESM::fourCC("XOWN"):
{
switch (subHdr.dataSize)
{
@ -166,19 +166,19 @@ void ESM4::Cell::load(ESM4::Reader& reader)
}
break;
}
case ESM4::SUB_XGLB:
case ESM::fourCC("XGLB"):
reader.getFormId(mGlobal);
break; // Oblivion only?
case ESM4::SUB_XCCM:
case ESM::fourCC("XCCM"):
reader.getFormId(mClimate);
break;
case ESM4::SUB_XCWT:
case ESM::fourCC("XCWT"):
reader.getFormId(mWater);
break;
case ESM4::SUB_XCLW:
case ESM::fourCC("XCLW"):
reader.get(mWaterHeight);
break;
case ESM4::SUB_XCLL:
case ESM::fourCC("XCLL"):
{
switch (subHdr.dataSize)
{
@ -197,45 +197,45 @@ void ESM4::Cell::load(ESM4::Reader& reader)
}
break;
}
case ESM4::SUB_XCMT:
case ESM::fourCC("XCMT"):
reader.get(mMusicType);
break; // Oblivion only?
case ESM4::SUB_LTMP:
case ESM::fourCC("LTMP"):
reader.getFormId(mLightingTemplate);
break;
case ESM4::SUB_LNAM:
case ESM::fourCC("LNAM"):
reader.get(mLightingTemplateFlags);
break; // seems to always follow LTMP
case ESM4::SUB_XCMO:
case ESM::fourCC("XCMO"):
reader.getFormId(mMusic);
break;
case ESM4::SUB_XCAS:
case ESM::fourCC("XCAS"):
reader.getFormId(mAcousticSpace);
break;
case ESM4::SUB_TVDT:
case ESM4::SUB_MHDT:
case ESM4::SUB_XCGD:
case ESM4::SUB_XNAM:
case ESM4::SUB_XLCN:
case ESM4::SUB_XWCS:
case ESM4::SUB_XWCU:
case ESM4::SUB_XWCN:
case ESM4::SUB_XCIM:
case ESM4::SUB_XEZN:
case ESM4::SUB_XWEM:
case ESM4::SUB_XILL:
case ESM4::SUB_XRNK:
case ESM4::SUB_XCET: // FO3
case ESM4::SUB_IMPF: // FO3 Zeta
case ESM4::SUB_CNAM: // FO4
case ESM4::SUB_PCMB: // FO4
case ESM4::SUB_RVIS: // FO4
case ESM4::SUB_VISI: // FO4
case ESM4::SUB_XGDR: // FO4
case ESM4::SUB_XILW: // FO4
case ESM4::SUB_XCRI: // FO4
case ESM4::SUB_XPRI: // FO4
case ESM4::SUB_ZNAM: // FO4
case ESM::fourCC("TVDT"):
case ESM::fourCC("MHDT"):
case ESM::fourCC("XCGD"):
case ESM::fourCC("XNAM"):
case ESM::fourCC("XLCN"):
case ESM::fourCC("XWCS"):
case ESM::fourCC("XWCU"):
case ESM::fourCC("XWCN"):
case ESM::fourCC("XCIM"):
case ESM::fourCC("XEZN"):
case ESM::fourCC("XWEM"):
case ESM::fourCC("XILL"):
case ESM::fourCC("XRNK"):
case ESM::fourCC("XCET"): // FO3
case ESM::fourCC("IMPF"): // FO3 Zeta
case ESM::fourCC("CNAM"): // FO4
case ESM::fourCC("PCMB"): // FO4
case ESM::fourCC("RVIS"): // FO4
case ESM::fourCC("VISI"): // FO4
case ESM::fourCC("XGDR"): // FO4
case ESM::fourCC("XILW"): // FO4
case ESM::fourCC("XCRI"): // FO4
case ESM::fourCC("XPRI"): // FO4
case ESM::fourCC("ZNAM"): // FO4
reader.skipSubRecordData();
break;
default:

@ -41,21 +41,21 @@ void ESM4::Class::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_DESC:
case ESM::fourCC("DESC"):
reader.getLocalizedString(mDesc);
break;
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mIcon);
break;
case ESM4::SUB_DATA:
case ESM4::SUB_ATTR:
case ESM4::SUB_PRPS:
case ESM::fourCC("DATA"):
case ESM::fourCC("ATTR"):
case ESM::fourCC("PRPS"):
reader.skipSubRecordData();
break;
default:

@ -41,22 +41,22 @@ void ESM4::Colour::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_CNAM:
case ESM::fourCC("CNAM"):
reader.get(mColour.red);
reader.get(mColour.green);
reader.get(mColour.blue);
reader.get(mColour.custom);
break;
case ESM4::SUB_FNAM:
case ESM::fourCC("FNAM"):
reader.get(mPlayable);
break;
case ESM4::SUB_CTDA:
case ESM::fourCC("CTDA"):
reader.skipSubRecordData();
break;
default:

@ -41,55 +41,55 @@ void ESM4::Clothing::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getZString(mFullName);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
reader.get(mData);
break;
case ESM4::SUB_BMDT:
case ESM::fourCC("BMDT"):
reader.get(mClothingFlags);
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_ENAM:
case ESM::fourCC("ENAM"):
reader.getFormId(mEnchantment);
break;
case ESM4::SUB_ANAM:
case ESM::fourCC("ANAM"):
reader.get(mEnchantmentPoints);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModelMale);
break;
case ESM4::SUB_MOD2:
case ESM::fourCC("MOD2"):
reader.getZString(mModelMaleWorld);
break;
case ESM4::SUB_MOD3:
case ESM::fourCC("MOD3"):
reader.getZString(mModelFemale);
break;
case ESM4::SUB_MOD4:
case ESM::fourCC("MOD4"):
reader.getZString(mModelFemaleWorld);
break;
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mIconMale);
break;
case ESM4::SUB_ICO2:
case ESM::fourCC("ICO2"):
reader.getZString(mIconFemale);
break;
case ESM4::SUB_MODT:
case ESM4::SUB_MO2B:
case ESM4::SUB_MO3B:
case ESM4::SUB_MO4B:
case ESM4::SUB_MO2T:
case ESM4::SUB_MO3T:
case ESM4::SUB_MO4T:
case ESM::fourCC("MODT"):
case ESM::fourCC("MO2B"):
case ESM::fourCC("MO3B"):
case ESM::fourCC("MO4B"):
case ESM::fourCC("MO2T"):
case ESM::fourCC("MO3T"):
case ESM::fourCC("MO4T"):
reader.skipSubRecordData();
break;
default:

@ -41,17 +41,17 @@ void ESM4::Container::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
reader.get(mDataFlags);
reader.get(mWeight);
break;
case ESM4::SUB_CNTO:
case ESM::fourCC("CNTO"):
{
static InventoryItem inv; // FIXME: use unique_ptr here?
reader.get(inv);
@ -59,47 +59,47 @@ void ESM4::Container::load(ESM4::Reader& reader)
mInventory.push_back(inv);
break;
}
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_SNAM:
case ESM::fourCC("SNAM"):
reader.getFormId(mOpenSound);
break;
case ESM4::SUB_QNAM:
case ESM::fourCC("QNAM"):
reader.getFormId(mCloseSound);
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_VMAD: // TES5 only
case ESM4::SUB_OBND: // TES5 only
case ESM4::SUB_COCT: // TES5 only
case ESM4::SUB_COED: // TES5 only
case ESM4::SUB_DAMC: // Destructible
case ESM4::SUB_DEST:
case ESM4::SUB_DMDC:
case ESM4::SUB_DMDL:
case ESM4::SUB_DMDT:
case ESM4::SUB_DMDS:
case ESM4::SUB_DSTA:
case ESM4::SUB_DSTD:
case ESM4::SUB_DSTF: // Destructible end
case ESM4::SUB_KSIZ:
case ESM4::SUB_KWDA:
case ESM4::SUB_ONAM:
case ESM4::SUB_RNAM: // FONV
case ESM4::SUB_TNAM:
case ESM4::SUB_FTYP: // FO4
case ESM4::SUB_NTRM: // FO4
case ESM4::SUB_PRPS: // FO4
case ESM4::SUB_PTRN: // FO4
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("VMAD"): // TES5 only
case ESM::fourCC("OBND"): // TES5 only
case ESM::fourCC("COCT"): // TES5 only
case ESM::fourCC("COED"): // TES5 only
case ESM::fourCC("DAMC"): // Destructible
case ESM::fourCC("DEST"):
case ESM::fourCC("DMDC"):
case ESM::fourCC("DMDL"):
case ESM::fourCC("DMDT"):
case ESM::fourCC("DMDS"):
case ESM::fourCC("DSTA"):
case ESM::fourCC("DSTD"):
case ESM::fourCC("DSTF"): // Destructible end
case ESM::fourCC("KSIZ"):
case ESM::fourCC("KWDA"):
case ESM::fourCC("ONAM"):
case ESM::fourCC("RNAM"): // FONV
case ESM::fourCC("TNAM"):
case ESM::fourCC("FTYP"): // FO4
case ESM::fourCC("NTRM"): // FO4
case ESM::fourCC("PRPS"): // FO4
case ESM::fourCC("PTRN"): // FO4
reader.skipSubRecordData();
break;
default:

@ -45,16 +45,16 @@ void ESM4::Creature::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getZString(mFullName);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_CNTO:
case ESM::fourCC("CNTO"):
{
static InventoryItem inv; // FIXME: use unique_ptr here?
reader.get(inv);
@ -62,76 +62,76 @@ void ESM4::Creature::load(ESM4::Reader& reader)
mInventory.push_back(inv);
break;
}
case ESM4::SUB_SPLO:
case ESM::fourCC("SPLO"):
reader.getFormId(mSpell.emplace_back());
break;
case ESM4::SUB_PKID:
case ESM::fourCC("PKID"):
reader.getFormId(mAIPackages.emplace_back());
break;
case ESM4::SUB_SNAM:
case ESM::fourCC("SNAM"):
reader.get(mFaction);
reader.adjustFormId(mFaction.faction);
break;
case ESM4::SUB_INAM:
case ESM::fourCC("INAM"):
reader.getFormId(mDeathItem);
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_AIDT:
case ESM::fourCC("AIDT"):
if (subHdr.dataSize == 20) // FO3
reader.skipSubRecordData();
else
reader.get(mAIData); // 12 bytes
break;
case ESM4::SUB_ACBS:
case ESM::fourCC("ACBS"):
// if (esmVer == ESM::VER_094 || esmVer == ESM::VER_170 || mIsFONV)
if (subHdr.dataSize == 24)
reader.get(mBaseConfig);
else
reader.get(&mBaseConfig, 16); // TES4
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
if (subHdr.dataSize == 17) // FO3
reader.skipSubRecordData();
else
reader.get(mData);
break;
case ESM4::SUB_ZNAM:
case ESM::fourCC("ZNAM"):
reader.getFormId(mCombatStyle);
break;
case ESM4::SUB_CSCR:
case ESM::fourCC("CSCR"):
reader.getFormId(mSoundBase);
break;
case ESM4::SUB_CSDI:
case ESM::fourCC("CSDI"):
reader.getFormId(mSound);
break;
case ESM4::SUB_CSDC:
case ESM::fourCC("CSDC"):
reader.get(mSoundChance);
break;
case ESM4::SUB_BNAM:
case ESM::fourCC("BNAM"):
reader.get(mBaseScale);
break;
case ESM4::SUB_TNAM:
case ESM::fourCC("TNAM"):
reader.get(mTurningSpeed);
break;
case ESM4::SUB_WNAM:
case ESM::fourCC("WNAM"):
reader.get(mFootWeight);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_NAM0:
case ESM::fourCC("NAM0"):
reader.getZString(mBloodSpray);
break;
case ESM4::SUB_NAM1:
case ESM::fourCC("NAM1"):
reader.getZString(mBloodDecal);
break;
case ESM4::SUB_NIFZ:
case ESM::fourCC("NIFZ"):
if (!reader.getZeroTerminatedStringArray(mNif))
throw std::runtime_error("CREA NIFZ data read error");
break;
case ESM4::SUB_NIFT:
case ESM::fourCC("NIFT"):
{
if (subHdr.dataSize != 4) // FIXME: FO3
{
@ -147,33 +147,33 @@ void ESM4::Creature::load(ESM4::Reader& reader)
Log(Debug::Verbose) << "CREA NIFT " << mId << ", non-zero " << nift;
break;
}
case ESM4::SUB_KFFZ:
case ESM::fourCC("KFFZ"):
if (!reader.getZeroTerminatedStringArray(mKf))
throw std::runtime_error("CREA KFFZ data read error");
break;
case ESM4::SUB_TPLT:
case ESM::fourCC("TPLT"):
reader.getFormId(mBaseTemplate);
break; // FO3
case ESM4::SUB_PNAM: // FO3/FONV/TES5
case ESM::fourCC("PNAM"): // FO3/FONV/TES5
reader.getFormId(mBodyParts.emplace_back());
break;
case ESM4::SUB_MODT:
case ESM4::SUB_RNAM:
case ESM4::SUB_CSDT:
case ESM4::SUB_OBND: // FO3
case ESM4::SUB_EAMT: // FO3
case ESM4::SUB_VTCK: // FO3
case ESM4::SUB_NAM4: // FO3
case ESM4::SUB_NAM5: // FO3
case ESM4::SUB_CNAM: // FO3
case ESM4::SUB_LNAM: // FO3
case ESM4::SUB_EITM: // FO3
case ESM4::SUB_DEST: // FO3
case ESM4::SUB_DSTD: // FO3
case ESM4::SUB_DSTF: // FO3
case ESM4::SUB_DMDL: // FO3
case ESM4::SUB_DMDT: // FO3
case ESM4::SUB_COED: // FO3
case ESM::fourCC("MODT"):
case ESM::fourCC("RNAM"):
case ESM::fourCC("CSDT"):
case ESM::fourCC("OBND"): // FO3
case ESM::fourCC("EAMT"): // FO3
case ESM::fourCC("VTCK"): // FO3
case ESM::fourCC("NAM4"): // FO3
case ESM::fourCC("NAM5"): // FO3
case ESM::fourCC("CNAM"): // FO3
case ESM::fourCC("LNAM"): // FO3
case ESM::fourCC("EITM"): // FO3
case ESM::fourCC("DEST"): // FO3
case ESM::fourCC("DSTD"): // FO3
case ESM::fourCC("DSTF"): // FO3
case ESM::fourCC("DMDL"): // FO3
case ESM::fourCC("DMDT"): // FO3
case ESM::fourCC("COED"): // FO3
reader.skipSubRecordData();
break;
default:

@ -42,19 +42,19 @@ void ESM4::Dialogue::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mTopicName);
break;
case ESM4::SUB_QSTI:
case ESM::fourCC("QSTI"):
reader.getFormId(mQuests.emplace_back());
break;
case ESM4::SUB_QSTR: // Seems never used in TES4
case ESM::fourCC("QSTR"): // Seems never used in TES4
reader.getFormId(mQuestsRemoved.emplace_back());
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
{
if (subHdr.dataSize == 4) // TES5
{
@ -74,20 +74,20 @@ void ESM4::Dialogue::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_PNAM:
case ESM::fourCC("PNAM"):
reader.get(mPriority);
break; // FO3/FONV
case ESM4::SUB_TDUM:
case ESM::fourCC("TDUM"):
reader.getZString(mTextDumb);
break; // FONV
case ESM4::SUB_SCRI:
case ESM4::SUB_INFC: // FONV info connection
case ESM4::SUB_INFX: // FONV info index
case ESM4::SUB_QNAM: // TES5
case ESM4::SUB_BNAM: // TES5
case ESM4::SUB_SNAM: // TES5
case ESM4::SUB_TIFC: // TES5
case ESM4::SUB_KNAM: // FO4
case ESM::fourCC("SCRI"):
case ESM::fourCC("INFC"): // FONV info connection
case ESM::fourCC("INFX"): // FONV info index
case ESM::fourCC("QNAM"): // TES5
case ESM::fourCC("BNAM"): // TES5
case ESM::fourCC("SNAM"): // TES5
case ESM::fourCC("TIFC"): // TES5
case ESM::fourCC("KNAM"): // FO4
reader.skipSubRecordData();
break;
default:

@ -44,10 +44,10 @@ void ESM4::DefaultObj::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break; // "DefaultObjectManager"
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
reader.getFormId(mData.stimpack);
reader.getFormId(mData.superStimpack);
reader.getFormId(mData.radX);
@ -87,7 +87,7 @@ void ESM4::DefaultObj::load(ESM4::Reader& reader)
reader.getFormId(mData.cateyeMobileEffectNYI);
}
break;
case ESM4::SUB_DNAM:
case ESM::fourCC("DNAM"):
reader.skipSubRecordData();
break;
default:

@ -41,57 +41,57 @@ void ESM4::Door::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_SNAM:
case ESM::fourCC("SNAM"):
reader.getFormId(mOpenSound);
break;
case ESM4::SUB_ANAM:
case ESM::fourCC("ANAM"):
reader.getFormId(mCloseSound);
break;
case ESM4::SUB_BNAM:
case ESM::fourCC("BNAM"):
reader.getFormId(mLoopSound);
break;
case ESM4::SUB_FNAM:
case ESM::fourCC("FNAM"):
reader.get(mDoorFlags);
break;
case ESM4::SUB_TNAM:
case ESM::fourCC("TNAM"):
reader.getFormId(mRandomTeleport);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_OBND:
case ESM4::SUB_VMAD:
case ESM4::SUB_DAMC: // Destructible
case ESM4::SUB_DEST:
case ESM4::SUB_DMDC:
case ESM4::SUB_DMDL:
case ESM4::SUB_DMDT:
case ESM4::SUB_DMDS:
case ESM4::SUB_DSTA:
case ESM4::SUB_DSTD:
case ESM4::SUB_DSTF: // Destructible end
case ESM4::SUB_KSIZ:
case ESM4::SUB_KWDA:
case ESM4::SUB_CNAM: // FO4
case ESM4::SUB_NTRM: // FO4
case ESM4::SUB_ONAM: // FO4
case ESM4::SUB_PTRN: // FO4
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("OBND"):
case ESM::fourCC("VMAD"):
case ESM::fourCC("DAMC"): // Destructible
case ESM::fourCC("DEST"):
case ESM::fourCC("DMDC"):
case ESM::fourCC("DMDL"):
case ESM::fourCC("DMDT"):
case ESM::fourCC("DMDS"):
case ESM::fourCC("DSTA"):
case ESM::fourCC("DSTD"):
case ESM::fourCC("DSTF"): // Destructible end
case ESM::fourCC("KSIZ"):
case ESM::fourCC("KWDA"):
case ESM::fourCC("CNAM"): // FO4
case ESM::fourCC("NTRM"): // FO4
case ESM::fourCC("ONAM"): // FO4
case ESM::fourCC("PTRN"): // FO4
reader.skipSubRecordData();
break;
default:

@ -41,16 +41,16 @@ void ESM4::Eyes::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mIcon);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
reader.get(mData);
break;
default:

@ -41,53 +41,53 @@ void ESM4::Flora::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_PFIG:
case ESM::fourCC("PFIG"):
reader.getFormId(mIngredient);
break;
case ESM4::SUB_PFPC:
case ESM::fourCC("PFPC"):
reader.get(mPercentHarvest);
break;
case ESM4::SUB_SNAM:
case ESM::fourCC("SNAM"):
reader.getFormId(mSound);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_FNAM:
case ESM4::SUB_OBND:
case ESM4::SUB_KSIZ:
case ESM4::SUB_KWDA:
case ESM4::SUB_PNAM:
case ESM4::SUB_RNAM:
case ESM4::SUB_VMAD:
case ESM4::SUB_DAMC: // Destructible
case ESM4::SUB_DEST:
case ESM4::SUB_DMDC:
case ESM4::SUB_DMDL:
case ESM4::SUB_DMDT:
case ESM4::SUB_DMDS:
case ESM4::SUB_DSTA:
case ESM4::SUB_DSTD:
case ESM4::SUB_DSTF: // Destructible end
case ESM4::SUB_PRPS: // FO4
case ESM4::SUB_PTRN: // FO4
case ESM4::SUB_ATTX: // FO4
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("FNAM"):
case ESM::fourCC("OBND"):
case ESM::fourCC("KSIZ"):
case ESM::fourCC("KWDA"):
case ESM::fourCC("PNAM"):
case ESM::fourCC("RNAM"):
case ESM::fourCC("VMAD"):
case ESM::fourCC("DAMC"): // Destructible
case ESM::fourCC("DEST"):
case ESM::fourCC("DMDC"):
case ESM::fourCC("DMDL"):
case ESM::fourCC("DMDT"):
case ESM::fourCC("DMDS"):
case ESM::fourCC("DSTA"):
case ESM::fourCC("DSTD"):
case ESM::fourCC("DSTF"): // Destructible end
case ESM::fourCC("PRPS"): // FO4
case ESM::fourCC("PTRN"): // FO4
case ESM::fourCC("ATTX"): // FO4
reader.skipSubRecordData();
break;
default:

@ -41,13 +41,13 @@ void ESM4::FormIdList::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_LNAM:
case ESM::fourCC("LNAM"):
reader.getFormId(mObjects.emplace_back());
break;
default:

@ -41,10 +41,10 @@ void ESM4::Furniture::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
{
std::string name;
reader.getLocalizedString(name);
@ -53,65 +53,65 @@ void ESM4::Furniture::load(ESM4::Reader& reader)
mFullName = std::move(name);
break;
}
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_MNAM:
case ESM::fourCC("MNAM"):
reader.get(mActiveMarkerFlags);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_DAMC: // Destructible
case ESM4::SUB_DEST:
case ESM4::SUB_DMDC:
case ESM4::SUB_DMDL:
case ESM4::SUB_DMDT:
case ESM4::SUB_DMDS:
case ESM4::SUB_DSTA:
case ESM4::SUB_DSTD:
case ESM4::SUB_DSTF: // Destructible end
case ESM4::SUB_ENAM:
case ESM4::SUB_FNAM:
case ESM4::SUB_FNMK:
case ESM4::SUB_FNPR:
case ESM4::SUB_KNAM:
case ESM4::SUB_KSIZ:
case ESM4::SUB_KWDA:
case ESM4::SUB_NAM0:
case ESM4::SUB_OBND:
case ESM4::SUB_PNAM:
case ESM4::SUB_VMAD:
case ESM4::SUB_WBDT:
case ESM4::SUB_XMRK:
case ESM4::SUB_PRPS:
case ESM4::SUB_CTDA:
case ESM4::SUB_CIS1:
case ESM4::SUB_CIS2:
case ESM4::SUB_APPR: // FO4
case ESM4::SUB_ATTX: // FO4
case ESM4::SUB_CITC: // FO4
case ESM4::SUB_CNTO: // FO4
case ESM4::SUB_COCT: // FO4
case ESM4::SUB_COED: // FO4
case ESM4::SUB_FTYP: // FO4
case ESM4::SUB_NAM1: // FO4
case ESM4::SUB_NTRM: // FO4
case ESM4::SUB_NVNM: // FO4
case ESM4::SUB_PTRN: // FO4
case ESM4::SUB_SNAM: // FO4
case ESM4::SUB_WNAM: // FO4
case ESM4::SUB_OBTE: // FO4 object template start
case ESM4::SUB_OBTF:
case ESM4::SUB_OBTS:
case ESM4::SUB_STOP: // FO4 object template end
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("DAMC"): // Destructible
case ESM::fourCC("DEST"):
case ESM::fourCC("DMDC"):
case ESM::fourCC("DMDL"):
case ESM::fourCC("DMDT"):
case ESM::fourCC("DMDS"):
case ESM::fourCC("DSTA"):
case ESM::fourCC("DSTD"):
case ESM::fourCC("DSTF"): // Destructible end
case ESM::fourCC("ENAM"):
case ESM::fourCC("FNAM"):
case ESM::fourCC("FNMK"):
case ESM::fourCC("FNPR"):
case ESM::fourCC("KNAM"):
case ESM::fourCC("KSIZ"):
case ESM::fourCC("KWDA"):
case ESM::fourCC("NAM0"):
case ESM::fourCC("OBND"):
case ESM::fourCC("PNAM"):
case ESM::fourCC("VMAD"):
case ESM::fourCC("WBDT"):
case ESM::fourCC("XMRK"):
case ESM::fourCC("PRPS"):
case ESM::fourCC("CTDA"):
case ESM::fourCC("CIS1"):
case ESM::fourCC("CIS2"):
case ESM::fourCC("APPR"): // FO4
case ESM::fourCC("ATTX"): // FO4
case ESM::fourCC("CITC"): // FO4
case ESM::fourCC("CNTO"): // FO4
case ESM::fourCC("COCT"): // FO4
case ESM::fourCC("COED"): // FO4
case ESM::fourCC("FTYP"): // FO4
case ESM::fourCC("NAM1"): // FO4
case ESM::fourCC("NTRM"): // FO4
case ESM::fourCC("NVNM"): // FO4
case ESM::fourCC("PTRN"): // FO4
case ESM::fourCC("SNAM"): // FO4
case ESM::fourCC("WNAM"): // FO4
case ESM::fourCC("OBTE"): // FO4 object template start
case ESM::fourCC("OBTF"):
case ESM::fourCC("OBTS"):
case ESM::fourCC("STOP"): // FO4 object template end
reader.skipSubRecordData();
break;
default:

@ -41,16 +41,16 @@ void ESM4::GlobalVariable::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM::fourCC("XALG"): // FO76
reader.get(mExtraFlags2);
break;
case ESM4::SUB_FNAM:
case ESM::fourCC("FNAM"):
reader.get(mType);
break;
case ESM4::SUB_FLTV:
case ESM::fourCC("FLTV"):
reader.get(mValue);
break;
case ESM::fourCC("NTWK"): // FO76

@ -67,10 +67,10 @@ namespace ESM4
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
mData = readData(mId, mEditorId, reader);
break;
default:

@ -41,23 +41,23 @@ void ESM4::Grass::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
reader.get(mData);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_OBND:
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("OBND"):
reader.skipSubRecordData();
break;
default:

@ -41,25 +41,25 @@ void ESM4::Hair::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getZString(mFullName);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mIcon);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
reader.get(mData);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_MODT:
case ESM::fourCC("MODT"):
reader.skipSubRecordData();
break;
default:

@ -45,32 +45,32 @@ void ESM4::HeadPart::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM::fourCC("XALG"): // FO76
reader.get(mExtraFlags2);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
reader.get(mData);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_HNAM:
case ESM::fourCC("HNAM"):
reader.getFormId(mExtraParts.emplace_back());
break;
case ESM4::SUB_NAM0: // TES5
case ESM::fourCC("NAM0"): // TES5
{
std::uint32_t value;
reader.get(value);
type = value;
break;
}
case ESM4::SUB_NAM1: // TES5
case ESM::fourCC("NAM1"): // TES5
{
std::string file;
reader.getZString(file);
@ -87,29 +87,29 @@ void ESM4::HeadPart::load(ESM4::Reader& reader)
mTriFile[*type] = std::move(file);
break;
}
case ESM4::SUB_TNAM:
case ESM::fourCC("TNAM"):
reader.getFormId(mBaseTexture);
break;
case ESM4::SUB_CNAM:
case ESM::fourCC("CNAM"):
reader.getFormId(mColor);
break;
case ESM4::SUB_RNAM:
case ESM::fourCC("RNAM"):
reader.getFormId(mValidRaces.emplace_back());
break;
case ESM4::SUB_PNAM:
case ESM::fourCC("PNAM"):
reader.get(mType);
break;
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF:
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"):
case ESM::fourCC("ENLM"):
case ESM::fourCC("XFLG"):
case ESM::fourCC("ENLT"):
case ESM::fourCC("ENLS"):
case ESM::fourCC("AUUV"):
case ESM::fourCC("MODD"): // Model data end
case ESM4::SUB_CTDA:
case ESM::fourCC("CTDA"):
reader.skipSubRecordData();
break;
default:

@ -41,16 +41,16 @@ void ESM4::IdleAnimation::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_DNAM:
case ESM::fourCC("DNAM"):
reader.getZString(mCollision);
break;
case ESM4::SUB_ENAM:
case ESM::fourCC("ENAM"):
reader.getZString(mEvent);
break;
case ESM4::SUB_ANAM:
case ESM::fourCC("ANAM"):
{
switch (subHdr.dataSize)
{
@ -74,21 +74,21 @@ void ESM4::IdleAnimation::load(ESM4::Reader& reader)
}
break;
}
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_CTDA: // formId
case ESM4::SUB_CTDT:
case ESM4::SUB_CIS1:
case ESM4::SUB_CIS2:
case ESM4::SUB_DATA:
case ESM4::SUB_MODD:
case ESM4::SUB_MODS:
case ESM4::SUB_MODT:
case ESM4::SUB_GNAM: // FO4
case ESM::fourCC("CTDA"): // formId
case ESM::fourCC("CTDT"):
case ESM::fourCC("CIS1"):
case ESM::fourCC("CIS2"):
case ESM::fourCC("DATA"):
case ESM::fourCC("MODD"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODT"):
case ESM::fourCC("GNAM"): // FO4
reader.skipSubRecordData();
break;
default:

@ -43,13 +43,13 @@ void ESM4::IdleMarker::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_IDLF:
case ESM::fourCC("IDLF"):
reader.get(mIdleFlags);
break;
case ESM4::SUB_IDLC:
case ESM::fourCC("IDLC"):
if (subHdr.dataSize != 1) // FO3 can have 4?
{
reader.skipSubRecordData();
@ -58,10 +58,10 @@ void ESM4::IdleMarker::load(ESM4::Reader& reader)
reader.get(mIdleCount);
break;
case ESM4::SUB_IDLT:
case ESM::fourCC("IDLT"):
reader.get(mIdleTimer);
break;
case ESM4::SUB_IDLA:
case ESM::fourCC("IDLA"):
{
bool isFONV = esmVer == ESM::VER_132 || esmVer == ESM::VER_133 || esmVer == ESM::VER_134;
if (esmVer == ESM::VER_094 || isFONV) // FO3? 4 or 8 bytes
@ -75,17 +75,17 @@ void ESM4::IdleMarker::load(ESM4::Reader& reader)
reader.getFormId(value);
break;
}
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_OBND: // object bounds
case ESM4::SUB_KSIZ:
case ESM4::SUB_KWDA:
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_QNAM:
case ESM::fourCC("OBND"): // object bounds
case ESM::fourCC("KSIZ"):
case ESM::fourCC("KWDA"):
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("QNAM"):
reader.skipSubRecordData();
break;
default:

@ -43,53 +43,53 @@ void ESM4::ItemMod::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_DESC:
case ESM::fourCC("DESC"):
reader.getLocalizedString(mText);
break;
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mIcon);
break;
case ESM4::SUB_MICO:
case ESM::fourCC("MICO"):
reader.getZString(mMiniIcon);
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_YNAM:
case ESM::fourCC("YNAM"):
reader.getFormId(mPickUpSound);
break;
case ESM4::SUB_ZNAM:
case ESM::fourCC("ZNAM"):
reader.getFormId(mDropSound);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
reader.get(mData.mValue);
reader.get(mData.mWeight);
break;
case ESM4::SUB_OBND:
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODS:
case ESM4::SUB_MODD: // Model data end
case ESM4::SUB_DAMC: // Destructible
case ESM4::SUB_DEST:
case ESM4::SUB_DMDC:
case ESM4::SUB_DMDL:
case ESM4::SUB_DMDT:
case ESM4::SUB_DMDS:
case ESM4::SUB_DSTA:
case ESM4::SUB_DSTD:
case ESM4::SUB_DSTF: // Destructible end
case ESM::fourCC("OBND"):
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODS"):
case ESM::fourCC("MODD"): // Model data end
case ESM::fourCC("DAMC"): // Destructible
case ESM::fourCC("DEST"):
case ESM::fourCC("DMDC"):
case ESM::fourCC("DMDL"):
case ESM::fourCC("DMDT"):
case ESM::fourCC("DMDS"):
case ESM::fourCC("DSTA"):
case ESM::fourCC("DSTD"):
case ESM::fourCC("DSTF"): // Destructible end
reader.skipSubRecordData();
break;
default:

@ -49,13 +49,13 @@ void ESM4::DialogInfo::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_QSTI:
case ESM::fourCC("QSTI"):
reader.getFormId(mQuest);
break; // FormId quest id
case ESM4::SUB_SNDD:
case ESM::fourCC("SNDD"):
reader.getFormId(mSound);
break; // FO3 (not used in FONV?)
case ESM4::SUB_TRDT:
case ESM::fourCC("TRDT"):
{
if (subHdr.dataSize == 16) // TES4
reader.get(&mResponseData, 16);
@ -70,16 +70,16 @@ void ESM4::DialogInfo::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_NAM1:
case ESM::fourCC("NAM1"):
reader.getLocalizedString(mResponse);
break; // response text
case ESM4::SUB_NAM2:
case ESM::fourCC("NAM2"):
reader.getZString(mNotes);
break; // actor notes
case ESM4::SUB_NAM3:
case ESM::fourCC("NAM3"):
reader.getZString(mEdits);
break; // not in TES4
case ESM4::SUB_CTDA: // FIXME: how to detect if 1st/2nd param is a formid?
case ESM::fourCC("CTDA"): // FIXME: how to detect if 1st/2nd param is a formid?
{
if (subHdr.dataSize == 24) // TES4
reader.get(&mTargetCondition, 24);
@ -105,7 +105,7 @@ void ESM4::DialogInfo::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_SCHR:
case ESM::fourCC("SCHR"):
{
if (!ignore)
reader.get(mScript.scriptHeader);
@ -114,16 +114,16 @@ void ESM4::DialogInfo::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_SCDA:
case ESM::fourCC("SCDA"):
reader.skipSubRecordData();
break; // compiled script data
case ESM4::SUB_SCTX:
case ESM::fourCC("SCTX"):
reader.getString(mScript.scriptSource);
break;
case ESM4::SUB_SCRO:
case ESM::fourCC("SCRO"):
reader.getFormId(mScript.globReference);
break;
case ESM4::SUB_SLSD:
case ESM::fourCC("SLSD"):
{
localVar.clear();
reader.get(localVar.index);
@ -136,7 +136,7 @@ void ESM4::DialogInfo::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_SCVR: // assumed always pair with SLSD
case ESM::fourCC("SCVR"): // assumed always pair with SLSD
{
reader.getZString(localVar.variableName);
@ -144,7 +144,7 @@ void ESM4::DialogInfo::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_SCRV:
case ESM::fourCC("SCRV"):
{
std::uint32_t index;
reader.get(index);
@ -153,13 +153,13 @@ void ESM4::DialogInfo::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_NEXT: // FO3/FONV marker for next script header
case ESM::fourCC("NEXT"): // FO3/FONV marker for next script header
{
ignore = true;
break;
}
case ESM4::SUB_DATA: // always 3 for TES4 ?
case ESM::fourCC("DATA"): // always 3 for TES4 ?
{
if (subHdr.dataSize == 4) // FO3/FONV
{
@ -171,48 +171,48 @@ void ESM4::DialogInfo::load(ESM4::Reader& reader)
reader.skipSubRecordData(); // FIXME
break;
}
case ESM4::SUB_NAME: // FormId add topic (not always present)
case ESM4::SUB_CTDT: // older version of CTDA? 20 bytes
case ESM4::SUB_SCHD: // 28 bytes
case ESM4::SUB_TCLT: // FormId choice
case ESM4::SUB_TCLF: // FormId
case ESM4::SUB_PNAM: // TES4 DLC
case ESM4::SUB_TPIC: // TES4 DLC
case ESM4::SUB_ANAM: // FO3 speaker formid
case ESM4::SUB_DNAM: // FO3 speech challenge
case ESM4::SUB_KNAM: // FO3 formid
case ESM4::SUB_LNAM: // FONV
case ESM4::SUB_TCFU: // FONV
case ESM4::SUB_TIFC: // TES5
case ESM4::SUB_TWAT: // TES5
case ESM4::SUB_CIS1: // TES5
case ESM4::SUB_CIS2: // TES5
case ESM4::SUB_CNAM: // TES5
case ESM4::SUB_ENAM: // TES5
case ESM4::SUB_EDID: // TES5
case ESM4::SUB_VMAD: // TES5
case ESM4::SUB_BNAM: // TES5
case ESM4::SUB_SNAM: // TES5
case ESM4::SUB_ONAM: // TES5
case ESM4::SUB_QNAM: // TES5 for mScript
case ESM4::SUB_RNAM: // TES5
case ESM4::SUB_ALFA: // FO4
case ESM4::SUB_GNAM: // FO4
case ESM4::SUB_GREE: // FO4
case ESM4::SUB_INAM: // FO4
case ESM4::SUB_INCC: // FO4
case ESM4::SUB_INTV: // FO4
case ESM4::SUB_IOVR: // FO4
case ESM4::SUB_MODQ: // FO4
case ESM4::SUB_NAM0: // FO4
case ESM4::SUB_NAM4: // FO4
case ESM4::SUB_NAM9: // FO4
case ESM4::SUB_SRAF: // FO4
case ESM4::SUB_TIQS: // FO4
case ESM4::SUB_TNAM: // FO4
case ESM4::SUB_TRDA: // FO4
case ESM4::SUB_TSCE: // FO4
case ESM4::SUB_WZMD: // FO4
case ESM::fourCC("NAME"): // FormId add topic (not always present)
case ESM::fourCC("CTDT"): // older version of CTDA? 20 bytes
case ESM::fourCC("SCHD"): // 28 bytes
case ESM::fourCC("TCLT"): // FormId choice
case ESM::fourCC("TCLF"): // FormId
case ESM::fourCC("PNAM"): // TES4 DLC
case ESM::fourCC("TPIC"): // TES4 DLC
case ESM::fourCC("ANAM"): // FO3 speaker formid
case ESM::fourCC("DNAM"): // FO3 speech challenge
case ESM::fourCC("KNAM"): // FO3 formid
case ESM::fourCC("LNAM"): // FONV
case ESM::fourCC("TCFU"): // FONV
case ESM::fourCC("TIFC"): // TES5
case ESM::fourCC("TWAT"): // TES5
case ESM::fourCC("CIS1"): // TES5
case ESM::fourCC("CIS2"): // TES5
case ESM::fourCC("CNAM"): // TES5
case ESM::fourCC("ENAM"): // TES5
case ESM::fourCC("EDID"): // TES5
case ESM::fourCC("VMAD"): // TES5
case ESM::fourCC("BNAM"): // TES5
case ESM::fourCC("SNAM"): // TES5
case ESM::fourCC("ONAM"): // TES5
case ESM::fourCC("QNAM"): // TES5 for mScript
case ESM::fourCC("RNAM"): // TES5
case ESM::fourCC("ALFA"): // FO4
case ESM::fourCC("GNAM"): // FO4
case ESM::fourCC("GREE"): // FO4
case ESM::fourCC("INAM"): // FO4
case ESM::fourCC("INCC"): // FO4
case ESM::fourCC("INTV"): // FO4
case ESM::fourCC("IOVR"): // FO4
case ESM::fourCC("MODQ"): // FO4
case ESM::fourCC("NAM0"): // FO4
case ESM::fourCC("NAM4"): // FO4
case ESM::fourCC("NAM9"): // FO4
case ESM::fourCC("SRAF"): // FO4
case ESM::fourCC("TIQS"): // FO4
case ESM::fourCC("TNAM"): // FO4
case ESM::fourCC("TRDA"): // FO4
case ESM::fourCC("TSCE"): // FO4
case ESM::fourCC("WZMD"): // FO4
reader.skipSubRecordData();
break;
default:

@ -42,10 +42,10 @@ void ESM4::Ingredient::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
{
if (mFullName.empty())
{
@ -64,7 +64,7 @@ void ESM4::Ingredient::load(ESM4::Reader& reader)
break;
}
}
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
{
// if (reader.esmVersion() == ESM::VER_094 || reader.esmVersion() == ESM::VER_170)
if (subHdr.dataSize == 8) // FO3 is size 4 even though VER_094
@ -74,49 +74,49 @@ void ESM4::Ingredient::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mIcon);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_ENIT:
case ESM::fourCC("ENIT"):
reader.get(mEnchantment);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_SCIT:
case ESM::fourCC("SCIT"):
{
reader.get(mEffect);
reader.adjustFormId(mEffect.formId);
break;
}
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_EFID:
case ESM4::SUB_EFIT:
case ESM4::SUB_OBND:
case ESM4::SUB_KSIZ:
case ESM4::SUB_KWDA:
case ESM4::SUB_VMAD:
case ESM4::SUB_YNAM:
case ESM4::SUB_ZNAM:
case ESM4::SUB_ETYP: // FO3
case ESM4::SUB_DAMC: // Destructible
case ESM4::SUB_DEST:
case ESM4::SUB_DMDC:
case ESM4::SUB_DMDL:
case ESM4::SUB_DMDT:
case ESM4::SUB_DMDS:
case ESM4::SUB_DSTA:
case ESM4::SUB_DSTD:
case ESM4::SUB_DSTF: // Destructible end
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("EFID"):
case ESM::fourCC("EFIT"):
case ESM::fourCC("OBND"):
case ESM::fourCC("KSIZ"):
case ESM::fourCC("KWDA"):
case ESM::fourCC("VMAD"):
case ESM::fourCC("YNAM"):
case ESM::fourCC("ZNAM"):
case ESM::fourCC("ETYP"): // FO3
case ESM::fourCC("DAMC"): // Destructible
case ESM::fourCC("DEST"):
case ESM::fourCC("DMDC"):
case ESM::fourCC("DMDL"):
case ESM::fourCC("DMDT"):
case ESM::fourCC("DMDS"):
case ESM::fourCC("DSTA"):
case ESM::fourCC("DSTD"):
case ESM::fourCC("DSTF"): // Destructible end
{
reader.skipSubRecordData();
break;

@ -41,54 +41,54 @@ void ESM4::Key::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mIcon);
break;
case ESM4::SUB_MICO:
case ESM::fourCC("MICO"):
reader.getZString(mMiniIcon);
break; // FO3
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
reader.get(mData);
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_YNAM:
case ESM::fourCC("YNAM"):
reader.getFormId(mPickUpSound);
break;
case ESM4::SUB_ZNAM:
case ESM::fourCC("ZNAM"):
reader.getFormId(mDropSound);
break;
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_KSIZ:
case ESM4::SUB_KWDA:
case ESM4::SUB_OBND:
case ESM4::SUB_VMAD:
case ESM4::SUB_DAMC: // Destructible
case ESM4::SUB_DEST:
case ESM4::SUB_DMDC:
case ESM4::SUB_DMDL:
case ESM4::SUB_DMDT:
case ESM4::SUB_DMDS:
case ESM4::SUB_DSTA:
case ESM4::SUB_DSTD:
case ESM4::SUB_DSTF: // Destructible end
case ESM4::SUB_PTRN: // FO4
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("KSIZ"):
case ESM::fourCC("KWDA"):
case ESM::fourCC("OBND"):
case ESM::fourCC("VMAD"):
case ESM::fourCC("DAMC"): // Destructible
case ESM::fourCC("DEST"):
case ESM::fourCC("DMDC"):
case ESM::fourCC("DMDL"):
case ESM::fourCC("DMDT"):
case ESM::fourCC("DMDS"):
case ESM::fourCC("DSTA"):
case ESM::fourCC("DSTD"):
case ESM::fourCC("DSTF"): // Destructible end
case ESM::fourCC("PTRN"): // FO4
reader.skipSubRecordData();
break;
default:

@ -65,18 +65,18 @@ void ESM4::Land::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
{
reader.get(mLandFlags);
break;
}
case ESM4::SUB_VNML: // vertex normals, 33x33x(1+1+1) = 3267
case ESM::fourCC("VNML"): // vertex normals, 33x33x(1+1+1) = 3267
{
reader.get(mVertNorm);
mDataTypes |= LAND_VNML;
break;
}
case ESM4::SUB_VHGT: // vertex height gradient, 4+33x33+3 = 4+1089+3 = 1096
case ESM::fourCC("VHGT"): // vertex height gradient, 4+33x33+3 = 4+1089+3 = 1096
{
#if 0
reader.get(mHeightMap.heightOffset);
@ -88,13 +88,13 @@ void ESM4::Land::load(ESM4::Reader& reader)
mDataTypes |= LAND_VHGT;
break;
}
case ESM4::SUB_VCLR: // vertex colours, 24bit RGB, 33x33x(1+1+1) = 3267
case ESM::fourCC("VCLR"): // vertex colours, 24bit RGB, 33x33x(1+1+1) = 3267
{
reader.get(mVertColr);
mDataTypes |= LAND_VCLR;
break;
}
case ESM4::SUB_BTXT:
case ESM::fourCC("BTXT"):
{
BTXT base;
if (reader.getExact(base))
@ -112,7 +112,7 @@ void ESM4::Land::load(ESM4::Reader& reader)
}
break;
}
case ESM4::SUB_ATXT:
case ESM::fourCC("ATXT"):
{
if (currentAddQuad != -1)
{
@ -144,7 +144,7 @@ void ESM4::Land::load(ESM4::Reader& reader)
currentAddQuad = layer.texture.quadrant;
break;
}
case ESM4::SUB_VTXT:
case ESM::fourCC("VTXT"):
{
if (currentAddQuad == -1)
throw std::runtime_error("VTXT without ATXT found");
@ -177,7 +177,7 @@ void ESM4::Land::load(ESM4::Reader& reader)
// std::cout << "VTXT: count " << std::dec << count << std::endl;
break;
}
case ESM4::SUB_VTEX: // only in Oblivion?
case ESM::fourCC("VTEX"): // only in Oblivion?
{
const std::uint16_t count = reader.subRecordHeader().dataSize / sizeof(ESM::FormId32);
if ((reader.subRecordHeader().dataSize % sizeof(ESM::FormId32)) != 0)
@ -191,7 +191,7 @@ void ESM4::Land::load(ESM4::Reader& reader)
}
break;
}
case ESM4::SUB_MPCD: // FO4
case ESM::fourCC("MPCD"): // FO4
reader.skipSubRecordData();
break;
default:

@ -44,10 +44,10 @@ void ESM4::LightingTemplate::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
if (subHdr.dataSize == 36) // TES4
reader.get(&mLighting, 36);
if (subHdr.dataSize == 40) // FO3/FONV
@ -60,7 +60,7 @@ void ESM4::LightingTemplate::load(ESM4::Reader& reader)
else
reader.skipSubRecordData(); // throw?
break;
case ESM4::SUB_DALC: // TES5
case ESM::fourCC("DALC"): // TES5
reader.skipSubRecordData();
break;
default:

@ -40,13 +40,13 @@ void ESM4::Light::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
{
if (subHdr.dataSize != 32 && subHdr.dataSize != 48 && subHdr.dataSize != 64)
{
@ -78,47 +78,47 @@ void ESM4::Light::load(ESM4::Reader& reader)
reader.get(mData.weight);
break;
}
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mIcon);
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_SNAM:
case ESM::fourCC("SNAM"):
reader.getFormId(mSound);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_FNAM:
case ESM::fourCC("FNAM"):
reader.get(mFade);
break;
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_OBND:
case ESM4::SUB_VMAD:
case ESM4::SUB_DAMC: // Destructible
case ESM4::SUB_DEST:
case ESM4::SUB_DMDC:
case ESM4::SUB_DMDL:
case ESM4::SUB_DMDT:
case ESM4::SUB_DMDS:
case ESM4::SUB_DSTA:
case ESM4::SUB_DSTD:
case ESM4::SUB_DSTF: // Destructible end
case ESM4::SUB_KSIZ:
case ESM4::SUB_KWDA:
case ESM4::SUB_LNAM: // FO4
case ESM4::SUB_MICO: // FO4
case ESM4::SUB_NAM0: // FO4
case ESM4::SUB_PRPS: // FO4
case ESM4::SUB_PTRN: // FO4
case ESM4::SUB_WGDR: // FO4
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("OBND"):
case ESM::fourCC("VMAD"):
case ESM::fourCC("DAMC"): // Destructible
case ESM::fourCC("DEST"):
case ESM::fourCC("DMDC"):
case ESM::fourCC("DMDL"):
case ESM::fourCC("DMDT"):
case ESM::fourCC("DMDS"):
case ESM::fourCC("DSTA"):
case ESM::fourCC("DSTD"):
case ESM::fourCC("DSTF"): // Destructible end
case ESM::fourCC("KSIZ"):
case ESM::fourCC("KWDA"):
case ESM::fourCC("LNAM"): // FO4
case ESM::fourCC("MICO"): // FO4
case ESM::fourCC("NAM0"): // FO4
case ESM::fourCC("PRPS"): // FO4
case ESM::fourCC("PTRN"): // FO4
case ESM::fourCC("WGDR"): // FO4
reader.skipSubRecordData();
break;
default:

@ -41,10 +41,10 @@ void ESM4::LandTexture::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_HNAM:
case ESM::fourCC("HNAM"):
{
switch (subHdr.dataSize)
{
@ -61,22 +61,22 @@ void ESM4::LandTexture::load(ESM4::Reader& reader)
}
break;
}
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mTextureFile);
break; // Oblivion only?
case ESM4::SUB_SNAM:
case ESM::fourCC("SNAM"):
reader.get(mTextureSpecular);
break;
case ESM4::SUB_GNAM:
case ESM::fourCC("GNAM"):
reader.getFormId(mGrass.emplace_back());
break;
case ESM4::SUB_TNAM:
case ESM::fourCC("TNAM"):
reader.getFormId(mTexture);
break; // TES5, FO4
case ESM4::SUB_MNAM:
case ESM::fourCC("MNAM"):
reader.getFormId(mMaterial);
break; // TES5, FO4
case ESM4::SUB_INAM:
case ESM::fourCC("INAM"):
reader.get(mMaterialFlags);
break; // SSE
default:

@ -41,22 +41,22 @@ void ESM4::LevelledCreature::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_TNAM:
case ESM::fourCC("TNAM"):
reader.getFormId(mTemplate);
break;
case ESM4::SUB_LVLD:
case ESM::fourCC("LVLD"):
reader.get(mChanceNone);
break;
case ESM4::SUB_LVLF:
case ESM::fourCC("LVLF"):
reader.get(mLvlCreaFlags);
break;
case ESM4::SUB_LVLO:
case ESM::fourCC("LVLO"):
{
static LVLO lvlo;
if (subHdr.dataSize != 12)
@ -83,7 +83,7 @@ void ESM4::LevelledCreature::load(ESM4::Reader& reader)
mLvlObject.push_back(lvlo);
break;
}
case ESM4::SUB_OBND: // FO3
case ESM::fourCC("OBND"): // FO3
reader.skipSubRecordData();
break;
default:

@ -41,20 +41,20 @@ void ESM4::LevelledItem::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_LVLD:
case ESM::fourCC("LVLD"):
reader.get(mChanceNone);
break;
case ESM4::SUB_LVLF:
case ESM::fourCC("LVLF"):
reader.get(mLvlItemFlags);
mHasLvlItemFlags = true;
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
reader.get(mData);
break;
case ESM4::SUB_LVLO:
case ESM::fourCC("LVLO"):
{
static LVLO lvlo;
if (subHdr.dataSize != 12)
@ -76,14 +76,14 @@ void ESM4::LevelledItem::load(ESM4::Reader& reader)
mLvlObject.push_back(lvlo);
break;
}
case ESM4::SUB_LLCT:
case ESM4::SUB_OBND: // FO3/FONV
case ESM4::SUB_COED: // FO3/FONV
case ESM4::SUB_LVLG: // FO3/FONV
case ESM4::SUB_LLKC: // FO4
case ESM4::SUB_LVLM: // FO4
case ESM4::SUB_LVSG: // FO4
case ESM4::SUB_ONAM: // FO4
case ESM::fourCC("LLCT"):
case ESM::fourCC("OBND"): // FO3/FONV
case ESM::fourCC("COED"): // FO3/FONV
case ESM::fourCC("LVLG"): // FO3/FONV
case ESM::fourCC("LLKC"): // FO4
case ESM::fourCC("LVLM"): // FO4
case ESM::fourCC("LVSG"): // FO4
case ESM::fourCC("ONAM"): // FO4
reader.skipSubRecordData();
break;
default:

@ -42,22 +42,22 @@ void ESM4::LevelledNpc::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_LLCT:
case ESM::fourCC("LLCT"):
reader.get(mListCount);
break;
case ESM4::SUB_LVLD:
case ESM::fourCC("LVLD"):
reader.get(mChanceNone);
break;
case ESM4::SUB_LVLF:
case ESM::fourCC("LVLF"):
reader.get(mLvlActorFlags);
break;
case ESM4::SUB_LVLO:
case ESM::fourCC("LVLO"):
{
static LVLO lvlo;
if (subHdr.dataSize != 12)
@ -89,15 +89,15 @@ void ESM4::LevelledNpc::load(ESM4::Reader& reader)
mLvlObject.push_back(lvlo);
break;
}
case ESM4::SUB_COED: // owner
case ESM4::SUB_OBND: // object bounds
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_LLKC: // FO4
case ESM4::SUB_LVLG: // FO4
case ESM4::SUB_LVLM: // FO4
case ESM::fourCC("COED"): // owner
case ESM::fourCC("OBND"): // object bounds
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("LLKC"): // FO4
case ESM::fourCC("LVLG"): // FO4
case ESM::fourCC("LVLM"): // FO4
reader.skipSubRecordData();
break;
default:

@ -41,18 +41,18 @@ void ESM4::Material::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_DNAM:
case ESM4::SUB_DATA:
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM::fourCC("DNAM"):
case ESM::fourCC("DATA"):
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
reader.skipSubRecordData();
break;
default:

@ -41,58 +41,58 @@ void ESM4::MiscItem::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mIcon);
break;
case ESM4::SUB_MICO:
case ESM::fourCC("MICO"):
reader.getZString(mMiniIcon);
break; // FO3
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
reader.get(mData);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_YNAM:
case ESM::fourCC("YNAM"):
reader.getFormId(mPickUpSound);
break;
case ESM4::SUB_ZNAM:
case ESM::fourCC("ZNAM"):
reader.getFormId(mDropSound);
break;
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_KSIZ:
case ESM4::SUB_KWDA:
case ESM4::SUB_OBND:
case ESM4::SUB_VMAD:
case ESM4::SUB_RNAM: // FONV
case ESM4::SUB_DAMC: // Destructible
case ESM4::SUB_DEST:
case ESM4::SUB_DMDC:
case ESM4::SUB_DMDL:
case ESM4::SUB_DMDT:
case ESM4::SUB_DMDS:
case ESM4::SUB_DSTA:
case ESM4::SUB_DSTD:
case ESM4::SUB_DSTF: // Destructible end
case ESM4::SUB_CDIX: // FO4
case ESM4::SUB_CVPA: // FO4
case ESM4::SUB_FIMD: // FO4
case ESM4::SUB_PTRN: // FO4
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("KSIZ"):
case ESM::fourCC("KWDA"):
case ESM::fourCC("OBND"):
case ESM::fourCC("VMAD"):
case ESM::fourCC("RNAM"): // FONV
case ESM::fourCC("DAMC"): // Destructible
case ESM::fourCC("DEST"):
case ESM::fourCC("DMDC"):
case ESM::fourCC("DMDL"):
case ESM::fourCC("DMDT"):
case ESM::fourCC("DMDS"):
case ESM::fourCC("DSTA"):
case ESM::fourCC("DSTD"):
case ESM::fourCC("DSTF"): // Destructible end
case ESM::fourCC("CDIX"): // FO4
case ESM::fourCC("CVPA"): // FO4
case ESM::fourCC("FIMD"): // FO4
case ESM::fourCC("PTRN"): // FO4
reader.skipSubRecordData();
break;
default:

@ -41,91 +41,91 @@ void ESM4::MediaSet::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getZString(mFullName);
break;
case ESM4::SUB_NAM1:
case ESM::fourCC("NAM1"):
reader.get(mSetType);
break;
case ESM4::SUB_PNAM:
case ESM::fourCC("PNAM"):
reader.get(mEnabled);
break;
case ESM4::SUB_NAM2:
case ESM::fourCC("NAM2"):
reader.getZString(mSet2);
break;
case ESM4::SUB_NAM3:
case ESM::fourCC("NAM3"):
reader.getZString(mSet3);
break;
case ESM4::SUB_NAM4:
case ESM::fourCC("NAM4"):
reader.getZString(mSet4);
break;
case ESM4::SUB_NAM5:
case ESM::fourCC("NAM5"):
reader.getZString(mSet5);
break;
case ESM4::SUB_NAM6:
case ESM::fourCC("NAM6"):
reader.getZString(mSet6);
break;
case ESM4::SUB_NAM7:
case ESM::fourCC("NAM7"):
reader.getZString(mSet7);
break;
case ESM4::SUB_HNAM:
case ESM::fourCC("HNAM"):
reader.getFormId(mSoundIntro);
break;
case ESM4::SUB_INAM:
case ESM::fourCC("INAM"):
reader.getFormId(mSoundOutro);
break;
case ESM4::SUB_NAM8:
case ESM::fourCC("NAM8"):
reader.get(mLevel8);
break;
case ESM4::SUB_NAM9:
case ESM::fourCC("NAM9"):
reader.get(mLevel9);
break;
case ESM4::SUB_NAM0:
case ESM::fourCC("NAM0"):
reader.get(mLevel0);
break;
case ESM4::SUB_ANAM:
case ESM::fourCC("ANAM"):
reader.get(mLevelA);
break;
case ESM4::SUB_BNAM:
case ESM::fourCC("BNAM"):
reader.get(mLevelB);
break;
case ESM4::SUB_CNAM:
case ESM::fourCC("CNAM"):
reader.get(mLevelC);
break;
case ESM4::SUB_JNAM:
case ESM::fourCC("JNAM"):
reader.get(mBoundaryDayOuter);
break;
case ESM4::SUB_KNAM:
case ESM::fourCC("KNAM"):
reader.get(mBoundaryDayMiddle);
break;
case ESM4::SUB_LNAM:
case ESM::fourCC("LNAM"):
reader.get(mBoundaryDayInner);
break;
case ESM4::SUB_MNAM:
case ESM::fourCC("MNAM"):
reader.get(mBoundaryNightOuter);
break;
case ESM4::SUB_NNAM:
case ESM::fourCC("NNAM"):
reader.get(mBoundaryNightMiddle);
break;
case ESM4::SUB_ONAM:
case ESM::fourCC("ONAM"):
reader.get(mBoundaryNightInner);
break;
case ESM4::SUB_DNAM:
case ESM::fourCC("DNAM"):
reader.get(mTime1);
break;
case ESM4::SUB_ENAM:
case ESM::fourCC("ENAM"):
reader.get(mTime2);
break;
case ESM4::SUB_FNAM:
case ESM::fourCC("FNAM"):
reader.get(mTime3);
break;
case ESM4::SUB_GNAM:
case ESM::fourCC("GNAM"):
reader.get(mTime4);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
reader.skipSubRecordData();
break;
default:

@ -41,41 +41,41 @@ void ESM4::MovableStatic::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
reader.get(mData);
break;
case ESM4::SUB_SNAM:
case ESM::fourCC("SNAM"):
reader.getFormId(mLoopingSound);
break;
case ESM4::SUB_DAMC: // Destructible
case ESM4::SUB_DEST:
case ESM4::SUB_DMDC:
case ESM4::SUB_DMDL:
case ESM4::SUB_DMDT:
case ESM4::SUB_DMDS:
case ESM4::SUB_DSTA:
case ESM4::SUB_DSTD:
case ESM4::SUB_DSTF: // Destructible end
case ESM4::SUB_OBND: // object bounds
case ESM4::SUB_KSIZ:
case ESM4::SUB_KWDA:
case ESM4::SUB_VMAD:
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_MODB:
case ESM4::SUB_PRPS:
case ESM4::SUB_PTRN: // FO4
case ESM::fourCC("DAMC"): // Destructible
case ESM::fourCC("DEST"):
case ESM::fourCC("DMDC"):
case ESM::fourCC("DMDL"):
case ESM::fourCC("DMDT"):
case ESM::fourCC("DMDS"):
case ESM::fourCC("DSTA"):
case ESM::fourCC("DSTD"):
case ESM::fourCC("DSTF"): // Destructible end
case ESM::fourCC("OBND"): // object bounds
case ESM::fourCC("KSIZ"):
case ESM::fourCC("KWDA"):
case ESM::fourCC("VMAD"):
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("MODB"):
case ESM::fourCC("PRPS"):
case ESM::fourCC("PTRN"): // FO4
reader.skipSubRecordData();
break;
default:

@ -43,16 +43,16 @@ void ESM4::Music::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FNAM:
case ESM::fourCC("FNAM"):
reader.getZString(mMusicFile);
break;
case ESM4::SUB_ANAM: // FONV float (attenuation in db? loop if positive?)
case ESM4::SUB_WNAM: // TES5
case ESM4::SUB_PNAM: // TES5
case ESM4::SUB_TNAM: // TES5
case ESM::fourCC("ANAM"): // FONV float (attenuation in db? loop if positive?)
case ESM::fourCC("WNAM"): // TES5
case ESM::fourCC("PNAM"): // TES5
case ESM::fourCC("TNAM"): // TES5
reader.skipSubRecordData();
break;
default:

@ -241,13 +241,13 @@ void ESM4::Navigation::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID: // seems to be unused?
case ESM::fourCC("EDID"): // seems to be unused?
{
if (!reader.getZString(mEditorId))
throw std::runtime_error("NAVI EDID data read error");
break;
}
case ESM4::SUB_NVPP:
case ESM::fourCC("NVPP"):
{
// FIXME: FO4 updates the format
if (reader.hasFormVersion() && (esmVer == ESM::VER_095 || esmVer == ESM::VER_100))
@ -330,14 +330,14 @@ void ESM4::Navigation::load(ESM4::Reader& reader)
}
break;
}
case ESM4::SUB_NVER:
case ESM::fourCC("NVER"):
{
std::uint32_t version; // always the same? (0x0c)
reader.get(version); // TODO: store this or use it for merging?
// std::cout << "NAVI version " << std::dec << version << std::endl;
break;
}
case ESM4::SUB_NVMI: // multiple
case ESM::fourCC("NVMI"): // multiple
{
// Can only read TES4 navmesh data
// Note FO4 FIXME above
@ -353,8 +353,8 @@ void ESM4::Navigation::load(ESM4::Reader& reader)
mNavMeshInfo.push_back(nvmi);
break;
}
case ESM4::SUB_NVSI: // from Dawnguard onwards
case ESM4::SUB_NVCI: // FO3
case ESM::fourCC("NVSI"): // from Dawnguard onwards
case ESM::fourCC("NVCI"): // FO3
{
reader.skipSubRecordData(); // FIXME:
break;

@ -209,7 +209,7 @@ void ESM4::NavMesh::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_NVNM:
case ESM::fourCC("NVNM"):
{
// See FIXME in ESM4::Navigation::load.
// FO4 updates the format
@ -224,19 +224,19 @@ void ESM4::NavMesh::load(ESM4::Reader& reader)
mData.push_back(nvnm); // FIXME try swap
break;
}
case ESM4::SUB_ONAM:
case ESM4::SUB_PNAM:
case ESM4::SUB_NNAM:
case ESM4::SUB_NVER: // FO3
case ESM4::SUB_DATA: // FO3
case ESM4::SUB_NVVX: // FO3
case ESM4::SUB_NVTR: // FO3
case ESM4::SUB_NVCA: // FO3
case ESM4::SUB_NVDP: // FO3
case ESM4::SUB_NVGD: // FO3
case ESM4::SUB_NVEX: // FO3
case ESM4::SUB_EDID: // FO3
case ESM4::SUB_MNAM: // FO4
case ESM::fourCC("ONAM"):
case ESM::fourCC("PNAM"):
case ESM::fourCC("NNAM"):
case ESM::fourCC("NVER"): // FO3
case ESM::fourCC("DATA"): // FO3
case ESM::fourCC("NVVX"): // FO3
case ESM::fourCC("NVTR"): // FO3
case ESM::fourCC("NVCA"): // FO3
case ESM::fourCC("NVDP"): // FO3
case ESM::fourCC("NVGD"): // FO3
case ESM::fourCC("NVEX"): // FO3
case ESM::fourCC("EDID"): // FO3
case ESM::fourCC("MNAM"): // FO4
reader.skipSubRecordData();
break;
default:

@ -41,41 +41,41 @@ void ESM4::Note::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mIcon);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_YNAM:
case ESM::fourCC("YNAM"):
reader.getFormId(mPickUpSound);
break;
case ESM4::SUB_ZNAM:
case ESM::fourCC("ZNAM"):
reader.getFormId(mDropSound);
break;
case ESM4::SUB_DATA:
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_ONAM:
case ESM4::SUB_SNAM:
case ESM4::SUB_TNAM:
case ESM4::SUB_XNAM:
case ESM4::SUB_OBND:
case ESM4::SUB_VMAD:
case ESM4::SUB_DNAM: // FO4
case ESM4::SUB_PNAM: // FO4
case ESM4::SUB_PTRN: // FO4
case ESM::fourCC("DATA"):
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("ONAM"):
case ESM::fourCC("SNAM"):
case ESM::fourCC("TNAM"):
case ESM::fourCC("XNAM"):
case ESM::fourCC("OBND"):
case ESM::fourCC("VMAD"):
case ESM::fourCC("DNAM"): // FO4
case ESM::fourCC("PNAM"): // FO4
case ESM::fourCC("PTRN"): // FO4
reader.skipSubRecordData();
break;
default:

@ -48,16 +48,16 @@ void ESM4::Npc::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break; // not for TES5, see Race
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_CNTO:
case ESM::fourCC("CNTO"):
{
static InventoryItem inv; // FIXME: use unique_ptr here?
reader.get(inv);
@ -65,13 +65,13 @@ void ESM4::Npc::load(ESM4::Reader& reader)
mInventory.push_back(inv);
break;
}
case ESM4::SUB_SPLO:
case ESM::fourCC("SPLO"):
reader.getFormId(mSpell.emplace_back());
break;
case ESM4::SUB_PKID:
case ESM::fourCC("PKID"):
reader.getFormId(mAIPackages.emplace_back());
break;
case ESM4::SUB_SNAM:
case ESM::fourCC("SNAM"):
{
// FO4, FO76
if (subHdr.dataSize == 5)
@ -81,27 +81,27 @@ void ESM4::Npc::load(ESM4::Reader& reader)
reader.adjustFormId(mFaction.faction);
break;
}
case ESM4::SUB_RNAM:
case ESM::fourCC("RNAM"):
reader.getFormId(mRace);
break;
case ESM4::SUB_CNAM:
case ESM::fourCC("CNAM"):
reader.getFormId(mClass);
break;
case ESM4::SUB_HNAM:
case ESM::fourCC("HNAM"):
reader.getFormId(mHair);
break; // not for TES5
case ESM4::SUB_ENAM:
case ESM::fourCC("ENAM"):
reader.getFormId(mEyes);
break;
//
case ESM4::SUB_INAM:
case ESM::fourCC("INAM"):
reader.getFormId(mDeathItem);
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
//
case ESM4::SUB_AIDT:
case ESM::fourCC("AIDT"):
{
if (subHdr.dataSize != 12)
{
@ -112,7 +112,7 @@ void ESM4::Npc::load(ESM4::Reader& reader)
reader.get(mAIData); // TES4
break;
}
case ESM4::SUB_ACBS:
case ESM::fourCC("ACBS"):
{
switch (subHdr.dataSize)
{
@ -129,7 +129,7 @@ void ESM4::Npc::load(ESM4::Reader& reader)
}
break;
}
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
{
if (subHdr.dataSize == 0)
break;
@ -140,19 +140,19 @@ void ESM4::Npc::load(ESM4::Reader& reader)
reader.skipSubRecordData();
break;
}
case ESM4::SUB_ZNAM:
case ESM::fourCC("ZNAM"):
reader.getFormId(mCombatStyle);
break;
case ESM4::SUB_CSCR:
case ESM::fourCC("CSCR"):
reader.getFormId(mSoundBase);
break;
case ESM4::SUB_CSDI:
case ESM::fourCC("CSDI"):
reader.getFormId(mSound);
break;
case ESM4::SUB_CSDC:
case ESM::fourCC("CSDC"):
reader.get(mSoundChance);
break;
case ESM4::SUB_WNAM:
case ESM::fourCC("WNAM"):
{
// FIXME: should be read into mWornArmor for FO4
if (reader.esmVersion() == ESM::VER_094 || reader.esmVersion() == ESM::VER_170)
@ -161,10 +161,10 @@ void ESM4::Npc::load(ESM4::Reader& reader)
reader.get(mFootWeight);
break;
}
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_KFFZ:
case ESM::fourCC("KFFZ"):
{
// Seems to be only below 3, and only happens 3 times while loading TES4:
// Forward_SheogorathWithCane.kf
@ -174,10 +174,10 @@ void ESM4::Npc::load(ESM4::Reader& reader)
throw std::runtime_error("NPC_ KFFZ data read error");
break;
}
case ESM4::SUB_LNAM:
case ESM::fourCC("LNAM"):
reader.get(mHairLength);
break;
case ESM4::SUB_HCLR:
case ESM::fourCC("HCLR"):
{
reader.get(mHairColour.red);
reader.get(mHairColour.green);
@ -186,10 +186,10 @@ void ESM4::Npc::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_TPLT:
case ESM::fourCC("TPLT"):
reader.getFormId(mBaseTemplate);
break;
case ESM4::SUB_FGGS:
case ESM::fourCC("FGGS"):
{
mSymShapeModeCoefficients.resize(50);
for (std::size_t i = 0; i < 50; ++i)
@ -197,7 +197,7 @@ void ESM4::Npc::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_FGGA:
case ESM::fourCC("FGGA"):
{
mAsymShapeModeCoefficients.resize(30);
for (std::size_t i = 0; i < 30; ++i)
@ -205,7 +205,7 @@ void ESM4::Npc::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_FGTS:
case ESM::fourCC("FGTS"):
{
mSymTextureModeCoefficients.resize(50);
for (std::size_t i = 0; i < 50; ++i)
@ -213,122 +213,122 @@ void ESM4::Npc::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_FNAM:
case ESM::fourCC("FNAM"):
{
reader.get(mFgRace);
// std::cout << "race " << mEditorId << " " << mRace << std::endl; // FIXME
// std::cout << "fg race " << mEditorId << " " << mFgRace << std::endl; // FIXME
break;
}
case ESM4::SUB_PNAM: // FO3/FONV/TES5
case ESM::fourCC("PNAM"): // FO3/FONV/TES5
reader.getFormId(mHeadParts.emplace_back());
break;
case ESM4::SUB_HCLF: // TES5 hair colour
case ESM::fourCC("HCLF"): // TES5 hair colour
{
reader.getFormId(mHairColourId);
break;
}
case ESM4::SUB_BCLF:
case ESM::fourCC("BCLF"):
{
reader.getFormId(mBeardColourId);
break;
}
case ESM4::SUB_COCT: // TES5
case ESM::fourCC("COCT"): // TES5
{
std::uint32_t count;
reader.get(count);
break;
}
case ESM4::SUB_DOFT:
case ESM::fourCC("DOFT"):
reader.getFormId(mDefaultOutfit);
break;
case ESM4::SUB_SOFT:
case ESM::fourCC("SOFT"):
reader.getFormId(mSleepOutfit);
break;
case ESM4::SUB_DPLT:
case ESM::fourCC("DPLT"):
reader.getFormId(mDefaultPkg);
break; // AI package list
case ESM4::SUB_DAMC: // Destructible
case ESM4::SUB_DEST:
case ESM4::SUB_DMDC:
case ESM4::SUB_DMDL:
case ESM4::SUB_DMDT:
case ESM4::SUB_DMDS:
case ESM4::SUB_DSTA:
case ESM4::SUB_DSTD:
case ESM4::SUB_DSTF: // Destructible end
case ESM4::SUB_NAM6: // height mult
case ESM4::SUB_NAM7: // weight mult
case ESM4::SUB_ATKR:
case ESM4::SUB_CRIF:
case ESM4::SUB_CSDT:
case ESM4::SUB_DNAM:
case ESM4::SUB_ECOR:
case ESM4::SUB_ANAM:
case ESM4::SUB_ATKD:
case ESM4::SUB_ATKE:
case ESM4::SUB_FTST:
case ESM4::SUB_KSIZ:
case ESM4::SUB_KWDA:
case ESM4::SUB_NAM5:
case ESM4::SUB_NAM8:
case ESM4::SUB_NAM9:
case ESM4::SUB_NAMA:
case ESM4::SUB_OBND:
case ESM4::SUB_PRKR:
case ESM4::SUB_PRKZ:
case ESM4::SUB_QNAM:
case ESM4::SUB_SPCT:
case ESM4::SUB_TIAS:
case ESM4::SUB_TINC:
case ESM4::SUB_TINI:
case ESM4::SUB_TINV:
case ESM4::SUB_VMAD:
case ESM4::SUB_VTCK:
case ESM4::SUB_GNAM:
case ESM4::SUB_SHRT:
case ESM4::SUB_SPOR:
case ESM4::SUB_EAMT: // FO3
case ESM4::SUB_NAM4: // FO3
case ESM4::SUB_COED: // FO3
case ESM4::SUB_APPR: // FO4
case ESM4::SUB_ATKS: // FO4
case ESM4::SUB_ATKT: // FO4
case ESM4::SUB_ATKW: // FO4
case ESM4::SUB_ATTX: // FO4
case ESM4::SUB_FTYP: // FO4
case ESM4::SUB_LTPT: // FO4
case ESM4::SUB_LTPC: // FO4
case ESM4::SUB_MWGT: // FO4
case ESM4::SUB_NTRM: // FO4
case ESM4::SUB_PFRN: // FO4
case ESM4::SUB_PRPS: // FO4
case ESM4::SUB_PTRN: // FO4
case ESM4::SUB_STCP: // FO4
case ESM4::SUB_TETI: // FO4
case ESM4::SUB_TEND: // FO4
case ESM4::SUB_TPTA: // FO4
case ESM4::SUB_OBTE: // FO4 object template start
case ESM4::SUB_OBTF: //
case ESM4::SUB_OBTS: //
case ESM4::SUB_STOP: // FO4 object template end
case ESM4::SUB_OCOR: // FO4 new package lists start
case ESM4::SUB_GWOR: //
case ESM4::SUB_FCPL: //
case ESM4::SUB_RCLR: // FO4 new package lists end
case ESM4::SUB_CS2D: // FO4 actor sound subrecords
case ESM4::SUB_CS2E: //
case ESM4::SUB_CS2F: //
case ESM4::SUB_CS2H: //
case ESM4::SUB_CS2K: // FO4 actor sound subrecords end
case ESM4::SUB_MSDK: // FO4 morph subrecords start
case ESM4::SUB_MSDV: //
case ESM4::SUB_MRSV: //
case ESM4::SUB_FMRI: //
case ESM4::SUB_FMRS: //
case ESM4::SUB_FMIN: // FO4 morph subrecords end
case ESM::fourCC("DAMC"): // Destructible
case ESM::fourCC("DEST"):
case ESM::fourCC("DMDC"):
case ESM::fourCC("DMDL"):
case ESM::fourCC("DMDT"):
case ESM::fourCC("DMDS"):
case ESM::fourCC("DSTA"):
case ESM::fourCC("DSTD"):
case ESM::fourCC("DSTF"): // Destructible end
case ESM::fourCC("NAM6"): // height mult
case ESM::fourCC("NAM7"): // weight mult
case ESM::fourCC("ATKR"):
case ESM::fourCC("CRIF"):
case ESM::fourCC("CSDT"):
case ESM::fourCC("DNAM"):
case ESM::fourCC("ECOR"):
case ESM::fourCC("ANAM"):
case ESM::fourCC("ATKD"):
case ESM::fourCC("ATKE"):
case ESM::fourCC("FTST"):
case ESM::fourCC("KSIZ"):
case ESM::fourCC("KWDA"):
case ESM::fourCC("NAM5"):
case ESM::fourCC("NAM8"):
case ESM::fourCC("NAM9"):
case ESM::fourCC("NAMA"):
case ESM::fourCC("OBND"):
case ESM::fourCC("PRKR"):
case ESM::fourCC("PRKZ"):
case ESM::fourCC("QNAM"):
case ESM::fourCC("SPCT"):
case ESM::fourCC("TIAS"):
case ESM::fourCC("TINC"):
case ESM::fourCC("TINI"):
case ESM::fourCC("TINV"):
case ESM::fourCC("VMAD"):
case ESM::fourCC("VTCK"):
case ESM::fourCC("GNAM"):
case ESM::fourCC("SHRT"):
case ESM::fourCC("SPOR"):
case ESM::fourCC("EAMT"): // FO3
case ESM::fourCC("NAM4"): // FO3
case ESM::fourCC("COED"): // FO3
case ESM::fourCC("APPR"): // FO4
case ESM::fourCC("ATKS"): // FO4
case ESM::fourCC("ATKT"): // FO4
case ESM::fourCC("ATKW"): // FO4
case ESM::fourCC("ATTX"): // FO4
case ESM::fourCC("FTYP"): // FO4
case ESM::fourCC("LTPT"): // FO4
case ESM::fourCC("LTPC"): // FO4
case ESM::fourCC("MWGT"): // FO4
case ESM::fourCC("NTRM"): // FO4
case ESM::fourCC("PFRN"): // FO4
case ESM::fourCC("PRPS"): // FO4
case ESM::fourCC("PTRN"): // FO4
case ESM::fourCC("STCP"): // FO4
case ESM::fourCC("TETI"): // FO4
case ESM::fourCC("TEND"): // FO4
case ESM::fourCC("TPTA"): // FO4
case ESM::fourCC("OBTE"): // FO4 object template start
case ESM::fourCC("OBTF"): //
case ESM::fourCC("OBTS"): //
case ESM::fourCC("STOP"): // FO4 object template end
case ESM::fourCC("OCOR"): // FO4 new package lists start
case ESM::fourCC("GWOR"): //
case ESM::fourCC("FCPL"): //
case ESM::fourCC("RCLR"): // FO4 new package lists end
case ESM::fourCC("CS2D"): // FO4 actor sound subrecords
case ESM::fourCC("CS2E"): //
case ESM::fourCC("CS2F"): //
case ESM::fourCC("CS2H"): //
case ESM::fourCC("CS2K"): // FO4 actor sound subrecords end
case ESM::fourCC("MSDK"): // FO4 morph subrecords start
case ESM::fourCC("MSDV"): //
case ESM::fourCC("MRSV"): //
case ESM::fourCC("FMRI"): //
case ESM::fourCC("FMRS"): //
case ESM::fourCC("FMIN"): // FO4 morph subrecords end
reader.skipSubRecordData();
break;
default:

@ -41,10 +41,10 @@ void ESM4::Outfit::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_INAM:
case ESM::fourCC("INAM"):
{
mInventory.resize(subHdr.dataSize / sizeof(ESM::FormId32));
for (ESM::FormId& formId : mInventory)

@ -42,10 +42,10 @@ void ESM4::AIPackage::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_PKDT:
case ESM::fourCC("PKDT"):
{
if (subHdr.dataSize != sizeof(PKDT) && subHdr.dataSize == 4)
{
@ -60,7 +60,7 @@ void ESM4::AIPackage::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_PSDT: // reader.get(mSchedule); break;
case ESM::fourCC("PSDT"): // reader.get(mSchedule); break;
{
if (subHdr.dataSize != sizeof(mSchedule))
reader.skipSubRecordData(); // FIXME:
@ -69,7 +69,7 @@ void ESM4::AIPackage::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_PLDT:
case ESM::fourCC("PLDT"):
{
if (subHdr.dataSize != sizeof(mLocation))
reader.skipSubRecordData(); // FIXME:
@ -82,7 +82,7 @@ void ESM4::AIPackage::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_PTDT:
case ESM::fourCC("PTDT"):
{
if (subHdr.dataSize != sizeof(mTarget))
reader.skipSubRecordData(); // FIXME: FO3
@ -95,7 +95,7 @@ void ESM4::AIPackage::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_CTDA:
case ESM::fourCC("CTDA"):
{
if (subHdr.dataSize != sizeof(CTDA))
{
@ -112,55 +112,55 @@ void ESM4::AIPackage::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_CTDT: // always 20 for TES4
case ESM4::SUB_TNAM: // FO3
case ESM4::SUB_INAM: // FO3
case ESM4::SUB_CNAM: // FO3
case ESM4::SUB_SCHR: // FO3
case ESM4::SUB_POBA: // FO3
case ESM4::SUB_POCA: // FO3
case ESM4::SUB_POEA: // FO3
case ESM4::SUB_SCTX: // FO3
case ESM4::SUB_SCDA: // FO3
case ESM4::SUB_SCRO: // FO3
case ESM4::SUB_IDLA: // FO3
case ESM4::SUB_IDLC: // FO3
case ESM4::SUB_IDLF: // FO3
case ESM4::SUB_IDLT: // FO3
case ESM4::SUB_PKDD: // FO3
case ESM4::SUB_PKD2: // FO3
case ESM4::SUB_PKPT: // FO3
case ESM4::SUB_PKED: // FO3
case ESM4::SUB_PKE2: // FO3
case ESM4::SUB_PKAM: // FO3
case ESM4::SUB_PUID: // FO3
case ESM4::SUB_PKW3: // FO3
case ESM4::SUB_PTD2: // FO3
case ESM4::SUB_PLD2: // FO3
case ESM4::SUB_PKFD: // FO3
case ESM4::SUB_SLSD: // FO3
case ESM4::SUB_SCVR: // FO3
case ESM4::SUB_SCRV: // FO3
case ESM4::SUB_IDLB: // FO3
case ESM4::SUB_ANAM: // TES5
case ESM4::SUB_BNAM: // TES5
case ESM4::SUB_FNAM: // TES5
case ESM4::SUB_PNAM: // TES5
case ESM4::SUB_QNAM: // TES5
case ESM4::SUB_UNAM: // TES5
case ESM4::SUB_XNAM: // TES5
case ESM4::SUB_PDTO: // TES5
case ESM4::SUB_PTDA: // TES5
case ESM4::SUB_PFOR: // TES5
case ESM4::SUB_PFO2: // TES5
case ESM4::SUB_PRCB: // TES5
case ESM4::SUB_PKCU: // TES5
case ESM4::SUB_PKC2: // TES5
case ESM4::SUB_CITC: // TES5
case ESM4::SUB_CIS1: // TES5
case ESM4::SUB_CIS2: // TES5
case ESM4::SUB_VMAD: // TES5
case ESM4::SUB_TPIC: // TES5
case ESM::fourCC("CTDT"): // always 20 for TES4
case ESM::fourCC("TNAM"): // FO3
case ESM::fourCC("INAM"): // FO3
case ESM::fourCC("CNAM"): // FO3
case ESM::fourCC("SCHR"): // FO3
case ESM::fourCC("POBA"): // FO3
case ESM::fourCC("POCA"): // FO3
case ESM::fourCC("POEA"): // FO3
case ESM::fourCC("SCTX"): // FO3
case ESM::fourCC("SCDA"): // FO3
case ESM::fourCC("SCRO"): // FO3
case ESM::fourCC("IDLA"): // FO3
case ESM::fourCC("IDLC"): // FO3
case ESM::fourCC("IDLF"): // FO3
case ESM::fourCC("IDLT"): // FO3
case ESM::fourCC("PKDD"): // FO3
case ESM::fourCC("PKD2"): // FO3
case ESM::fourCC("PKPT"): // FO3
case ESM::fourCC("PKED"): // FO3
case ESM::fourCC("PKE2"): // FO3
case ESM::fourCC("PKAM"): // FO3
case ESM::fourCC("PUID"): // FO3
case ESM::fourCC("PKW3"): // FO3
case ESM::fourCC("PTD2"): // FO3
case ESM::fourCC("PLD2"): // FO3
case ESM::fourCC("PKFD"): // FO3
case ESM::fourCC("SLSD"): // FO3
case ESM::fourCC("SCVR"): // FO3
case ESM::fourCC("SCRV"): // FO3
case ESM::fourCC("IDLB"): // FO3
case ESM::fourCC("ANAM"): // TES5
case ESM::fourCC("BNAM"): // TES5
case ESM::fourCC("FNAM"): // TES5
case ESM::fourCC("PNAM"): // TES5
case ESM::fourCC("QNAM"): // TES5
case ESM::fourCC("UNAM"): // TES5
case ESM::fourCC("XNAM"): // TES5
case ESM::fourCC("PDTO"): // TES5
case ESM::fourCC("PTDA"): // TES5
case ESM::fourCC("PFOR"): // TES5
case ESM::fourCC("PFO2"): // TES5
case ESM::fourCC("PRCB"): // TES5
case ESM::fourCC("PKCU"): // TES5
case ESM::fourCC("PKC2"): // TES5
case ESM::fourCC("CITC"): // TES5
case ESM::fourCC("CIS1"): // TES5
case ESM::fourCC("CIS2"): // TES5
case ESM::fourCC("VMAD"): // TES5
case ESM::fourCC("TPIC"): // TES5
reader.skipSubRecordData();
break;
default:

@ -44,10 +44,10 @@ void ESM4::Pathgrid::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
reader.get(mData);
break;
case ESM4::SUB_PGRP:
case ESM::fourCC("PGRP"):
{
std::size_t numNodes = subHdr.dataSize / sizeof(PGRP);
if (numNodes != std::size_t(mData)) // keep gcc quiet
@ -66,7 +66,7 @@ void ESM4::Pathgrid::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_PGRR:
case ESM::fourCC("PGRR"):
{
static PGRR link;
@ -91,7 +91,7 @@ void ESM4::Pathgrid::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_PGRI:
case ESM::fourCC("PGRI"):
{
std::size_t numForeign = subHdr.dataSize / sizeof(PGRI);
mForeign.resize(numForeign);
@ -103,7 +103,7 @@ void ESM4::Pathgrid::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_PGRL:
case ESM::fourCC("PGRL"):
{
static PGRL objLink;
reader.getFormId(objLink.object);
@ -118,7 +118,7 @@ void ESM4::Pathgrid::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_PGAG:
case ESM::fourCC("PGAG"):
{
#if 0
std::vector<unsigned char> mDataBuf(subHdr.dataSize);

@ -43,51 +43,51 @@ void ESM4::PlacedGrenade::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_NAME:
case ESM4::SUB_XEZN:
case ESM4::SUB_XRGD:
case ESM4::SUB_XRGB:
case ESM4::SUB_XPRD:
case ESM4::SUB_XPPA:
case ESM4::SUB_INAM:
case ESM4::SUB_TNAM:
case ESM4::SUB_XOWN:
case ESM4::SUB_XRNK:
case ESM4::SUB_XCNT:
case ESM4::SUB_XRDS:
case ESM4::SUB_XHLP:
case ESM4::SUB_XPWR:
case ESM4::SUB_XDCR:
case ESM4::SUB_XLKR:
case ESM4::SUB_XLKT: // FO4
case ESM4::SUB_XCLP:
case ESM4::SUB_XAPD:
case ESM4::SUB_XAPR:
case ESM4::SUB_XATO:
case ESM4::SUB_XESP:
case ESM4::SUB_XEMI:
case ESM4::SUB_XMBR:
case ESM4::SUB_XIBS:
case ESM4::SUB_XSCL:
case ESM4::SUB_DATA:
case ESM4::SUB_VMAD:
case ESM4::SUB_MNAM: // FO4
case ESM4::SUB_XAMC: // FO4
case ESM4::SUB_XASP: // FO4
case ESM4::SUB_XATP: // FO4
case ESM4::SUB_XCVR: // FO4
case ESM4::SUB_XFVC: // FO4
case ESM4::SUB_XHTW: // FO4
case ESM4::SUB_XIS2: // FO4
case ESM4::SUB_XLOD: // FO4
case ESM4::SUB_XLRL: // FO4
case ESM4::SUB_XLRT: // FO4
case ESM4::SUB_XLYR: // FO4
case ESM4::SUB_XMSP: // FO4
case ESM4::SUB_XRFG: // FO4
case ESM::fourCC("NAME"):
case ESM::fourCC("XEZN"):
case ESM::fourCC("XRGD"):
case ESM::fourCC("XRGB"):
case ESM::fourCC("XPRD"):
case ESM::fourCC("XPPA"):
case ESM::fourCC("INAM"):
case ESM::fourCC("TNAM"):
case ESM::fourCC("XOWN"):
case ESM::fourCC("XRNK"):
case ESM::fourCC("XCNT"):
case ESM::fourCC("XRDS"):
case ESM::fourCC("XHLP"):
case ESM::fourCC("XPWR"):
case ESM::fourCC("XDCR"):
case ESM::fourCC("XLKR"):
case ESM::fourCC("XLKT"): // FO4
case ESM::fourCC("XCLP"):
case ESM::fourCC("XAPD"):
case ESM::fourCC("XAPR"):
case ESM::fourCC("XATO"):
case ESM::fourCC("XESP"):
case ESM::fourCC("XEMI"):
case ESM::fourCC("XMBR"):
case ESM::fourCC("XIBS"):
case ESM::fourCC("XSCL"):
case ESM::fourCC("DATA"):
case ESM::fourCC("VMAD"):
case ESM::fourCC("MNAM"): // FO4
case ESM::fourCC("XAMC"): // FO4
case ESM::fourCC("XASP"): // FO4
case ESM::fourCC("XATP"): // FO4
case ESM::fourCC("XCVR"): // FO4
case ESM::fourCC("XFVC"): // FO4
case ESM::fourCC("XHTW"): // FO4
case ESM::fourCC("XIS2"): // FO4
case ESM::fourCC("XLOD"): // FO4
case ESM::fourCC("XLRL"): // FO4
case ESM::fourCC("XLRT"): // FO4
case ESM::fourCC("XLYR"): // FO4
case ESM::fourCC("XMSP"): // FO4
case ESM::fourCC("XRFG"): // FO4
reader.skipSubRecordData();
break;
default:

@ -43,12 +43,12 @@ void ESM4::PlaceableWater::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_OBND:
case ESM4::SUB_MODL:
case ESM4::SUB_DNAM:
case ESM::fourCC("OBND"):
case ESM::fourCC("MODL"):
case ESM::fourCC("DNAM"):
reader.skipSubRecordData();
break;
default:

@ -42,16 +42,16 @@ void ESM4::Quest::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getZString(mQuestName);
break;
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mFileName);
break; // TES4 (none in FO3/FONV)
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
{
if (subHdr.dataSize == 2) // TES4
{
@ -66,10 +66,10 @@ void ESM4::Quest::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mQuestScript);
break;
case ESM4::SUB_CTDA: // FIXME: how to detect if 1st/2nd param is a formid?
case ESM::fourCC("CTDA"): // FIXME: how to detect if 1st/2nd param is a formid?
{
if (subHdr.dataSize == 24) // TES4
{
@ -95,80 +95,80 @@ void ESM4::Quest::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_SCHR:
case ESM::fourCC("SCHR"):
reader.get(mScript.scriptHeader);
break;
case ESM4::SUB_SCDA:
case ESM::fourCC("SCDA"):
reader.skipSubRecordData();
break; // compiled script data
case ESM4::SUB_SCTX:
case ESM::fourCC("SCTX"):
reader.getString(mScript.scriptSource);
break;
case ESM4::SUB_SCRO:
case ESM::fourCC("SCRO"):
reader.getFormId(mScript.globReference);
break;
case ESM4::SUB_INDX:
case ESM4::SUB_QSDT:
case ESM4::SUB_CNAM:
case ESM4::SUB_QSTA:
case ESM4::SUB_NNAM: // FO3
case ESM4::SUB_QOBJ: // FO3
case ESM4::SUB_NAM0: // FO3
case ESM4::SUB_ANAM: // TES5
case ESM4::SUB_DNAM: // TES5
case ESM4::SUB_ENAM: // TES5
case ESM4::SUB_FNAM: // TES5
case ESM4::SUB_NEXT: // TES5
case ESM4::SUB_ALCA: // TES5
case ESM4::SUB_ALCL: // TES5
case ESM4::SUB_ALCO: // TES5
case ESM4::SUB_ALDN: // TES5
case ESM4::SUB_ALEA: // TES5
case ESM4::SUB_ALED: // TES5
case ESM4::SUB_ALEQ: // TES5
case ESM4::SUB_ALFA: // TES5
case ESM4::SUB_ALFC: // TES5
case ESM4::SUB_ALFD: // TES5
case ESM4::SUB_ALFE: // TES5
case ESM4::SUB_ALFI: // TES5
case ESM4::SUB_ALFL: // TES5
case ESM4::SUB_ALFR: // TES5
case ESM4::SUB_ALID: // TES5
case ESM4::SUB_ALLS: // TES5
case ESM4::SUB_ALNA: // TES5
case ESM4::SUB_ALNT: // TES5
case ESM4::SUB_ALPC: // TES5
case ESM4::SUB_ALRT: // TES5
case ESM4::SUB_ALSP: // TES5
case ESM4::SUB_ALST: // TES5
case ESM4::SUB_ALUA: // TES5
case ESM4::SUB_CIS1: // TES5
case ESM4::SUB_CIS2: // TES5
case ESM4::SUB_CNTO: // TES5
case ESM4::SUB_COCT: // TES5
case ESM4::SUB_ECOR: // TES5
case ESM4::SUB_FLTR: // TES5
case ESM4::SUB_KNAM: // TES5
case ESM4::SUB_KSIZ: // TES5
case ESM4::SUB_KWDA: // TES5
case ESM4::SUB_QNAM: // TES5
case ESM4::SUB_QTGL: // TES5
case ESM4::SUB_SPOR: // TES5
case ESM4::SUB_VMAD: // TES5
case ESM4::SUB_VTCK: // TES5
case ESM4::SUB_ALCC: // FO4
case ESM4::SUB_ALCS: // FO4
case ESM4::SUB_ALDI: // FO4
case ESM4::SUB_ALFV: // FO4
case ESM4::SUB_ALLA: // FO4
case ESM4::SUB_ALMI: // FO4
case ESM4::SUB_GNAM: // FO4
case ESM4::SUB_GWOR: // FO4
case ESM4::SUB_LNAM: // FO4
case ESM4::SUB_NAM2: // FO4
case ESM4::SUB_OCOR: // FO4
case ESM4::SUB_SNAM: // FO4
case ESM4::SUB_XNAM: // FO4
case ESM::fourCC("INDX"):
case ESM::fourCC("QSDT"):
case ESM::fourCC("CNAM"):
case ESM::fourCC("QSTA"):
case ESM::fourCC("NNAM"): // FO3
case ESM::fourCC("QOBJ"): // FO3
case ESM::fourCC("NAM0"): // FO3
case ESM::fourCC("ANAM"): // TES5
case ESM::fourCC("DNAM"): // TES5
case ESM::fourCC("ENAM"): // TES5
case ESM::fourCC("FNAM"): // TES5
case ESM::fourCC("NEXT"): // TES5
case ESM::fourCC("ALCA"): // TES5
case ESM::fourCC("ALCL"): // TES5
case ESM::fourCC("ALCO"): // TES5
case ESM::fourCC("ALDN"): // TES5
case ESM::fourCC("ALEA"): // TES5
case ESM::fourCC("ALED"): // TES5
case ESM::fourCC("ALEQ"): // TES5
case ESM::fourCC("ALFA"): // TES5
case ESM::fourCC("ALFC"): // TES5
case ESM::fourCC("ALFD"): // TES5
case ESM::fourCC("ALFE"): // TES5
case ESM::fourCC("ALFI"): // TES5
case ESM::fourCC("ALFL"): // TES5
case ESM::fourCC("ALFR"): // TES5
case ESM::fourCC("ALID"): // TES5
case ESM::fourCC("ALLS"): // TES5
case ESM::fourCC("ALNA"): // TES5
case ESM::fourCC("ALNT"): // TES5
case ESM::fourCC("ALPC"): // TES5
case ESM::fourCC("ALRT"): // TES5
case ESM::fourCC("ALSP"): // TES5
case ESM::fourCC("ALST"): // TES5
case ESM::fourCC("ALUA"): // TES5
case ESM::fourCC("CIS1"): // TES5
case ESM::fourCC("CIS2"): // TES5
case ESM::fourCC("CNTO"): // TES5
case ESM::fourCC("COCT"): // TES5
case ESM::fourCC("ECOR"): // TES5
case ESM::fourCC("FLTR"): // TES5
case ESM::fourCC("KNAM"): // TES5
case ESM::fourCC("KSIZ"): // TES5
case ESM::fourCC("KWDA"): // TES5
case ESM::fourCC("QNAM"): // TES5
case ESM::fourCC("QTGL"): // TES5
case ESM::fourCC("SPOR"): // TES5
case ESM::fourCC("VMAD"): // TES5
case ESM::fourCC("VTCK"): // TES5
case ESM::fourCC("ALCC"): // FO4
case ESM::fourCC("ALCS"): // FO4
case ESM::fourCC("ALDI"): // FO4
case ESM::fourCC("ALFV"): // FO4
case ESM::fourCC("ALLA"): // FO4
case ESM::fourCC("ALMI"): // FO4
case ESM::fourCC("GNAM"): // FO4
case ESM::fourCC("GWOR"): // FO4
case ESM::fourCC("LNAM"): // FO4
case ESM::fourCC("NAM2"): // FO4
case ESM::fourCC("OCOR"): // FO4
case ESM::fourCC("SNAM"): // FO4
case ESM::fourCC("XNAM"): // FO4
reader.skipSubRecordData();
break;
default:

@ -52,7 +52,7 @@ void ESM4::Race::load(ESM4::Reader& reader)
// std::cout << "RACE " << ESM::printName(subHdr.typeId) << std::endl;
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
{
reader.getZString(mEditorId);
// TES4
@ -73,10 +73,10 @@ void ESM4::Race::load(ESM4::Reader& reader)
// Imperial 0x00000907
break;
}
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_DESC:
case ESM::fourCC("DESC"):
{
if (subHdr.dataSize == 1) // FO3?
{
@ -87,10 +87,10 @@ void ESM4::Race::load(ESM4::Reader& reader)
reader.getLocalizedString(mDesc);
break;
}
case ESM4::SUB_SPLO: // bonus spell formid (TES5 may have SPCT and multiple SPLO)
case ESM::fourCC("SPLO"): // bonus spell formid (TES5 may have SPCT and multiple SPLO)
reader.getFormId(mBonusSpells.emplace_back());
break;
case ESM4::SUB_DATA: // ?? different length for TES5
case ESM::fourCC("DATA"): // ?? different length for TES5
{
// DATA:size 128
// 0f 0f ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 00 00
@ -210,14 +210,14 @@ void ESM4::Race::load(ESM4::Reader& reader)
#endif
break;
}
case ESM4::SUB_DNAM:
case ESM::fourCC("DNAM"):
{
reader.getFormId(mDefaultHair[0]); // male
reader.getFormId(mDefaultHair[1]); // female
break;
}
case ESM4::SUB_CNAM:
case ESM::fourCC("CNAM"):
// CNAM SNAM VNAM
// Sheogorath 0x0 0000 98 2b 10011000 00101011
// Golden Saint 0x3 0011 26 46 00100110 01000110
@ -238,13 +238,13 @@ void ESM4::Race::load(ESM4::Reader& reader)
reader.skipSubRecordData();
break;
}
case ESM4::SUB_PNAM:
case ESM::fourCC("PNAM"):
reader.get(mFaceGenMainClamp);
break; // 0x40A00000 = 5.f
case ESM4::SUB_UNAM:
case ESM::fourCC("UNAM"):
reader.get(mFaceGenFaceClamp);
break; // 0x40400000 = 3.f
case ESM4::SUB_ATTR: // Only in TES4?
case ESM::fourCC("ATTR"): // Only in TES4?
{
if (subHdr.dataSize == 2) // FO3?
{
@ -276,7 +276,7 @@ void ESM4::Race::load(ESM4::Reader& reader)
// | |
// +-------------+
//
case ESM4::SUB_NAM0: // start marker head data /* 1 */
case ESM::fourCC("NAM0"): // start marker head data /* 1 */
{
curr_part = 0; // head part
@ -296,7 +296,7 @@ void ESM4::Race::load(ESM4::Reader& reader)
currentIndex = 0xffffffff;
break;
}
case ESM4::SUB_INDX:
case ESM::fourCC("INDX"):
{
reader.get(currentIndex);
// FIXME: below check is rather useless
@ -313,7 +313,7 @@ void ESM4::Race::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
{
if (currentIndex == 0xffffffff)
{
@ -350,10 +350,10 @@ void ESM4::Race::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.skipSubRecordData();
break; // always 0x0000?
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
{
if (currentIndex == 0xffffffff)
{
@ -379,7 +379,7 @@ void ESM4::Race::load(ESM4::Reader& reader)
break;
}
//
case ESM4::SUB_NAM1: // start marker body data /* 4 */
case ESM::fourCC("NAM1"): // start marker body data /* 4 */
{
if (isFO3 || isFONV)
@ -406,14 +406,14 @@ void ESM4::Race::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_MNAM:
case ESM::fourCC("MNAM"):
isMale = true;
break; /* 2, 5, 7 */
case ESM4::SUB_FNAM:
case ESM::fourCC("FNAM"):
isMale = false;
break; /* 3, 6, 8 */
//
case ESM4::SUB_HNAM:
case ESM::fourCC("HNAM"):
{
// FIXME: this is a texture name in FO4
if (subHdr.dataSize % sizeof(ESM::FormId32) != 0)
@ -428,7 +428,7 @@ void ESM4::Race::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_ENAM:
case ESM::fourCC("ENAM"):
{
std::size_t numEyeChoices = subHdr.dataSize / sizeof(ESM::FormId32);
mEyeChoices.resize(numEyeChoices);
@ -437,7 +437,7 @@ void ESM4::Race::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_FGGS:
case ESM::fourCC("FGGS"):
{
if (isMale || isTES4)
{
@ -454,7 +454,7 @@ void ESM4::Race::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_FGGA:
case ESM::fourCC("FGGA"):
{
if (isMale || isTES4)
{
@ -471,7 +471,7 @@ void ESM4::Race::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_FGTS:
case ESM::fourCC("FGTS"):
{
if (isMale || isTES4)
{
@ -489,12 +489,12 @@ void ESM4::Race::load(ESM4::Reader& reader)
break;
}
//
case ESM4::SUB_SNAM: // skipping...2 // only in TES4?
case ESM::fourCC("SNAM"): // skipping...2 // only in TES4?
{
reader.skipSubRecordData();
break;
}
case ESM4::SUB_XNAM:
case ESM::fourCC("XNAM"):
{
ESM::FormId race;
std::int32_t adjustment;
@ -504,7 +504,7 @@ void ESM4::Race::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_VNAM:
case ESM::fourCC("VNAM"):
{
if (subHdr.dataSize == 8) // TES4
{
@ -528,7 +528,7 @@ void ESM4::Race::load(ESM4::Reader& reader)
break;
}
//
case ESM4::SUB_ANAM: // TES5
case ESM::fourCC("ANAM"): // TES5
{
if (isMale)
reader.getZString(mModelMale);
@ -536,10 +536,10 @@ void ESM4::Race::load(ESM4::Reader& reader)
reader.getZString(mModelFemale);
break;
}
case ESM4::SUB_KSIZ:
case ESM::fourCC("KSIZ"):
reader.get(mNumKeywords);
break;
case ESM4::SUB_KWDA:
case ESM::fourCC("KWDA"):
{
ESM::FormId formid;
for (unsigned int i = 0; i < mNumKeywords; ++i)
@ -547,13 +547,13 @@ void ESM4::Race::load(ESM4::Reader& reader)
break;
}
//
case ESM4::SUB_WNAM: // ARMO FormId
case ESM::fourCC("WNAM"): // ARMO FormId
{
reader.getFormId(mSkin);
// std::cout << mEditorId << " skin " << formIdToString(mSkin) << std::endl; // FIXME
break;
}
case ESM4::SUB_BODT: // body template
case ESM::fourCC("BODT"): // body template
{
reader.get(mBodyTemplate.bodyPart);
reader.get(mBodyTemplate.flags);
@ -564,7 +564,7 @@ void ESM4::Race::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_BOD2:
case ESM::fourCC("BOD2"):
{
if (subHdr.dataSize == 8 || subHdr.dataSize == 4) // TES5, FO4
{
@ -584,7 +584,7 @@ void ESM4::Race::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_HEAD: // TES5
case ESM::fourCC("HEAD"): // TES5
{
ESM::FormId formId;
reader.getFormId(formId);
@ -611,7 +611,7 @@ void ESM4::Race::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_NAM3: // start of hkx model
case ESM::fourCC("NAM3"): // start of hkx model
{
curr_part = 3; // for TES5 NAM3 indicates the start of hkx model
@ -651,7 +651,7 @@ void ESM4::Race::load(ESM4::Reader& reader)
// ManakinRace
// ManakinRace
// ManakinRace FX0
case ESM4::SUB_NAME: // TES5 biped object names (x32)
case ESM::fourCC("NAME"): // TES5 biped object names (x32)
{
std::string name;
reader.getZString(name);
@ -659,112 +659,112 @@ void ESM4::Race::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_MTNM: // movement type
case ESM4::SUB_ATKD: // attack data
case ESM4::SUB_ATKE: // attach event
case ESM4::SUB_GNAM: // body part data
case ESM4::SUB_NAM4: // material type
case ESM4::SUB_NAM5: // unarmed impact?
case ESM4::SUB_LNAM: // close loot sound
case ESM4::SUB_QNAM: // equipment slot formid
case ESM4::SUB_HCLF: // default hair colour
case ESM4::SUB_UNES: // unarmed equipment slot formid
case ESM4::SUB_TINC:
case ESM4::SUB_TIND:
case ESM4::SUB_TINI:
case ESM4::SUB_TINL:
case ESM4::SUB_TINP:
case ESM4::SUB_TINT:
case ESM4::SUB_TINV:
case ESM4::SUB_TIRS:
case ESM4::SUB_PHWT:
case ESM4::SUB_AHCF:
case ESM4::SUB_AHCM:
case ESM4::SUB_MPAI:
case ESM4::SUB_MPAV:
case ESM4::SUB_DFTF:
case ESM4::SUB_DFTM:
case ESM4::SUB_FLMV:
case ESM4::SUB_FTSF:
case ESM4::SUB_FTSM:
case ESM4::SUB_MTYP:
case ESM4::SUB_NAM7:
case ESM4::SUB_NAM8:
case ESM4::SUB_PHTN:
case ESM4::SUB_RNAM:
case ESM4::SUB_RNMV:
case ESM4::SUB_RPRF:
case ESM4::SUB_RPRM:
case ESM4::SUB_SNMV:
case ESM4::SUB_SPCT:
case ESM4::SUB_SPED:
case ESM4::SUB_SWMV:
case ESM4::SUB_WKMV:
case ESM4::SUB_SPMV:
case ESM4::SUB_ATKR:
case ESM4::SUB_CTDA:
case ESM4::SUB_CIS1:
case ESM4::SUB_CIS2:
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM::fourCC("MTNM"): // movement type
case ESM::fourCC("ATKD"): // attack data
case ESM::fourCC("ATKE"): // attach event
case ESM::fourCC("GNAM"): // body part data
case ESM::fourCC("NAM4"): // material type
case ESM::fourCC("NAM5"): // unarmed impact?
case ESM::fourCC("LNAM"): // close loot sound
case ESM::fourCC("QNAM"): // equipment slot formid
case ESM::fourCC("HCLF"): // default hair colour
case ESM::fourCC("UNES"): // unarmed equipment slot formid
case ESM::fourCC("TINC"):
case ESM::fourCC("TIND"):
case ESM::fourCC("TINI"):
case ESM::fourCC("TINL"):
case ESM::fourCC("TINP"):
case ESM::fourCC("TINT"):
case ESM::fourCC("TINV"):
case ESM::fourCC("TIRS"):
case ESM::fourCC("PHWT"):
case ESM::fourCC("AHCF"):
case ESM::fourCC("AHCM"):
case ESM::fourCC("MPAI"):
case ESM::fourCC("MPAV"):
case ESM::fourCC("DFTF"):
case ESM::fourCC("DFTM"):
case ESM::fourCC("FLMV"):
case ESM::fourCC("FTSF"):
case ESM::fourCC("FTSM"):
case ESM::fourCC("MTYP"):
case ESM::fourCC("NAM7"):
case ESM::fourCC("NAM8"):
case ESM::fourCC("PHTN"):
case ESM::fourCC("RNAM"):
case ESM::fourCC("RNMV"):
case ESM::fourCC("RPRF"):
case ESM::fourCC("RPRM"):
case ESM::fourCC("SNMV"):
case ESM::fourCC("SPCT"):
case ESM::fourCC("SPED"):
case ESM::fourCC("SWMV"):
case ESM::fourCC("WKMV"):
case ESM::fourCC("SPMV"):
case ESM::fourCC("ATKR"):
case ESM::fourCC("CTDA"):
case ESM::fourCC("CIS1"):
case ESM::fourCC("CIS2"):
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
//
case ESM4::SUB_YNAM: // FO3
case ESM4::SUB_NAM2: // FO3
case ESM4::SUB_VTCK: // FO3
case ESM4::SUB_MODD: // FO3
case ESM4::SUB_ONAM: // FO3
case ESM4::SUB_APPR: // FO4
case ESM4::SUB_ATKS: // FO4
case ESM4::SUB_ATKT: // FO4
case ESM4::SUB_ATKW: // FO4
case ESM4::SUB_BMMP: // FO4
case ESM4::SUB_BSMB: // FO4
case ESM4::SUB_BSMP: // FO4
case ESM4::SUB_BSMS: // FO4
case ESM4::SUB_FMRI: // FO4
case ESM4::SUB_FMRN: // FO4
case ESM4::SUB_HLTX: // FO4
case ESM4::SUB_MLSI: // FO4
case ESM4::SUB_MPGN: // FO4
case ESM4::SUB_MPGS: // FO4
case ESM4::SUB_MPPC: // FO4
case ESM4::SUB_MPPF: // FO4
case ESM4::SUB_MPPI: // FO4
case ESM4::SUB_MPPK: // FO4
case ESM4::SUB_MPPM: // FO4
case ESM4::SUB_MPPN: // FO4
case ESM4::SUB_MPPT: // FO4
case ESM4::SUB_MSID: // FO4
case ESM4::SUB_MSM0: // FO4
case ESM4::SUB_MSM1: // FO4
case ESM4::SUB_NNAM: // FO4
case ESM4::SUB_NTOP: // FO4
case ESM4::SUB_PRPS: // FO4
case ESM4::SUB_PTOP: // FO4
case ESM4::SUB_QSTI: // FO4
case ESM4::SUB_RBPC: // FO4
case ESM4::SUB_SADD: // FO4
case ESM4::SUB_SAKD: // FO4
case ESM4::SUB_SAPT: // FO4
case ESM4::SUB_SGNM: // FO4
case ESM4::SUB_SRAC: // FO4
case ESM4::SUB_SRAF: // FO4
case ESM4::SUB_STCP: // FO4
case ESM4::SUB_STKD: // FO4
case ESM4::SUB_TETI: // FO4
case ESM4::SUB_TTEB: // FO4
case ESM4::SUB_TTEC: // FO4
case ESM4::SUB_TTED: // FO4
case ESM4::SUB_TTEF: // FO4
case ESM4::SUB_TTET: // FO4
case ESM4::SUB_TTGE: // FO4
case ESM4::SUB_TTGP: // FO4
case ESM4::SUB_UNWP: // FO4
case ESM4::SUB_WMAP: // FO4
case ESM4::SUB_ZNAM: // FO4
case ESM::fourCC("YNAM"): // FO3
case ESM::fourCC("NAM2"): // FO3
case ESM::fourCC("VTCK"): // FO3
case ESM::fourCC("MODD"): // FO3
case ESM::fourCC("ONAM"): // FO3
case ESM::fourCC("APPR"): // FO4
case ESM::fourCC("ATKS"): // FO4
case ESM::fourCC("ATKT"): // FO4
case ESM::fourCC("ATKW"): // FO4
case ESM::fourCC("BMMP"): // FO4
case ESM::fourCC("BSMB"): // FO4
case ESM::fourCC("BSMP"): // FO4
case ESM::fourCC("BSMS"): // FO4
case ESM::fourCC("FMRI"): // FO4
case ESM::fourCC("FMRN"): // FO4
case ESM::fourCC("HLTX"): // FO4
case ESM::fourCC("MLSI"): // FO4
case ESM::fourCC("MPGN"): // FO4
case ESM::fourCC("MPGS"): // FO4
case ESM::fourCC("MPPC"): // FO4
case ESM::fourCC("MPPF"): // FO4
case ESM::fourCC("MPPI"): // FO4
case ESM::fourCC("MPPK"): // FO4
case ESM::fourCC("MPPM"): // FO4
case ESM::fourCC("MPPN"): // FO4
case ESM::fourCC("MPPT"): // FO4
case ESM::fourCC("MSID"): // FO4
case ESM::fourCC("MSM0"): // FO4
case ESM::fourCC("MSM1"): // FO4
case ESM::fourCC("NNAM"): // FO4
case ESM::fourCC("NTOP"): // FO4
case ESM::fourCC("PRPS"): // FO4
case ESM::fourCC("PTOP"): // FO4
case ESM::fourCC("QSTI"): // FO4
case ESM::fourCC("RBPC"): // FO4
case ESM::fourCC("SADD"): // FO4
case ESM::fourCC("SAKD"): // FO4
case ESM::fourCC("SAPT"): // FO4
case ESM::fourCC("SGNM"): // FO4
case ESM::fourCC("SRAC"): // FO4
case ESM::fourCC("SRAF"): // FO4
case ESM::fourCC("STCP"): // FO4
case ESM::fourCC("STKD"): // FO4
case ESM::fourCC("TETI"): // FO4
case ESM::fourCC("TTEB"): // FO4
case ESM::fourCC("TTEC"): // FO4
case ESM::fourCC("TTED"): // FO4
case ESM::fourCC("TTEF"): // FO4
case ESM::fourCC("TTET"): // FO4
case ESM::fourCC("TTGE"): // FO4
case ESM::fourCC("TTGP"): // FO4
case ESM::fourCC("UNWP"): // FO4
case ESM::fourCC("WMAP"): // FO4
case ESM::fourCC("ZNAM"): // FO4
reader.skipSubRecordData();
break;
default:

@ -46,26 +46,26 @@ void ESM4::Reference::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_NAME:
case ESM::fourCC("NAME"):
{
ESM::FormId BaseId;
reader.getFormId(BaseId);
mBaseObj = BaseId;
break;
}
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
reader.get(mPos);
break;
case ESM4::SUB_XSCL:
case ESM::fourCC("XSCL"):
reader.get(mScale);
break;
case ESM4::SUB_XOWN:
case ESM::fourCC("XOWN"):
{
switch (subHdr.dataSize)
{
@ -86,13 +86,13 @@ void ESM4::Reference::load(ESM4::Reader& reader)
}
break;
}
case ESM4::SUB_XGLB:
case ESM::fourCC("XGLB"):
reader.getFormId(mGlobal);
break;
case ESM4::SUB_XRNK:
case ESM::fourCC("XRNK"):
reader.get(mFactionRank);
break;
case ESM4::SUB_XESP:
case ESM::fourCC("XESP"):
{
reader.getFormId(mEsp.parent);
reader.get(mEsp.flags);
@ -100,7 +100,7 @@ void ESM4::Reference::load(ESM4::Reader& reader)
// << ", 0x" << std::hex << (mEsp.flags & 0xff) << std::endl;// FIXME
break;
}
case ESM4::SUB_XTEL:
case ESM::fourCC("XTEL"):
{
switch (subHdr.dataSize)
{
@ -125,7 +125,7 @@ void ESM4::Reference::load(ESM4::Reader& reader)
}
break;
}
case ESM4::SUB_XSED:
case ESM::fourCC("XSED"):
{
// 1 or 4 bytes
if (subHdr.dataSize == 1)
@ -147,7 +147,7 @@ void ESM4::Reference::load(ESM4::Reader& reader)
reader.skipSubRecordData();
break;
}
case ESM4::SUB_XLOD:
case ESM::fourCC("XLOD"):
{
// 12 bytes
if (subHdr.dataSize == 12)
@ -168,7 +168,7 @@ void ESM4::Reference::load(ESM4::Reader& reader)
reader.skipSubRecordData();
break;
}
case ESM4::SUB_XACT:
case ESM::fourCC("XACT"):
{
if (subHdr.dataSize == 4)
{
@ -182,7 +182,7 @@ void ESM4::Reference::load(ESM4::Reader& reader)
reader.skipSubRecordData();
break;
}
case ESM4::SUB_XRTM: // formId
case ESM::fourCC("XRTM"): // formId
{
// seems like another ref, e.g. 00064583 has base object 00000034 which is "XMarkerHeading"
// e.g. some are doors (prob. quest related)
@ -199,7 +199,7 @@ void ESM4::Reference::load(ESM4::Reader& reader)
// std::cout << "REFR " << mEditorId << " XRTM : " << formIdToString(marker) << std::endl;// FIXME
break;
}
case ESM4::SUB_TNAM: // reader.get(mMapMarker); break;
case ESM::fourCC("TNAM"): // reader.get(mMapMarker); break;
{
if (subHdr.dataSize != sizeof(mMapMarker))
// reader.skipSubRecordData(); // FIXME: FO3
@ -209,26 +209,26 @@ void ESM4::Reference::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_XMRK:
case ESM::fourCC("XMRK"):
mIsMapMarker = true;
break; // all have mBaseObj 0x00000010 "MapMarker"
case ESM4::SUB_FNAM:
case ESM::fourCC("FNAM"):
{
// std::cout << "REFR " << ESM::printName(subHdr.typeId) << " skipping..."
// << subHdr.dataSize << std::endl;
reader.skipSubRecordData();
break;
}
case ESM4::SUB_XTRG: // formId
case ESM::fourCC("XTRG"): // formId
{
reader.getFormId(mTargetRef);
// std::cout << "REFR XRTG : " << formIdToString(id) << std::endl;// FIXME
break;
}
case ESM4::SUB_CNAM:
case ESM::fourCC("CNAM"):
reader.getFormId(mAudioLocation);
break; // FONV
case ESM4::SUB_XRDO: // FO3
case ESM::fourCC("XRDO"): // FO3
{
// FIXME: completely different meaning in FO4
reader.get(mRadio.rangeRadius);
@ -238,14 +238,14 @@ void ESM4::Reference::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_SCRO: // FO3
case ESM::fourCC("SCRO"): // FO3
{
reader.getFormId(sid);
// if (mFormId == 0x0016b74B)
// std::cout << "REFR SCRO : " << formIdToString(sid) << std::endl;// FIXME
break;
}
case ESM4::SUB_XLOC:
case ESM::fourCC("XLOC"):
{
mIsLocked = true;
std::int8_t dummy; // FIXME: very poor code
@ -268,97 +268,97 @@ void ESM4::Reference::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_XCNT:
case ESM::fourCC("XCNT"):
{
reader.get(mCount);
break;
}
// lighting
case ESM4::SUB_LNAM: // lighting template formId
case ESM4::SUB_XLIG: // struct, FOV, fade, etc
case ESM4::SUB_XEMI: // LIGH formId
case ESM4::SUB_XRDS: // Radius or Radiance
case ESM4::SUB_XRGB:
case ESM4::SUB_XRGD: // tangent data?
case ESM4::SUB_XALP: // alpha cutoff
case ESM::fourCC("LNAM"): // lighting template formId
case ESM::fourCC("XLIG"): // struct, FOV, fade, etc
case ESM::fourCC("XEMI"): // LIGH formId
case ESM::fourCC("XRDS"): // Radius or Radiance
case ESM::fourCC("XRGB"):
case ESM::fourCC("XRGD"): // tangent data?
case ESM::fourCC("XALP"): // alpha cutoff
//
case ESM4::SUB_XPCI: // formId
case ESM4::SUB_XLCM:
case ESM4::SUB_ONAM:
case ESM4::SUB_VMAD:
case ESM4::SUB_XPRM:
case ESM4::SUB_INAM:
case ESM4::SUB_PDTO:
case ESM4::SUB_SCHR:
case ESM4::SUB_SCTX:
case ESM4::SUB_XAPD:
case ESM4::SUB_XAPR:
case ESM4::SUB_XCVL:
case ESM4::SUB_XCZA:
case ESM4::SUB_XCZC:
case ESM4::SUB_XEZN:
case ESM4::SUB_XFVC:
case ESM4::SUB_XHTW:
case ESM4::SUB_XIS2:
case ESM4::SUB_XLCN:
case ESM4::SUB_XLIB:
case ESM4::SUB_XLKR:
case ESM4::SUB_XLRM:
case ESM4::SUB_XLRT:
case ESM4::SUB_XLTW:
case ESM4::SUB_XMBO:
case ESM4::SUB_XMBP:
case ESM4::SUB_XMBR:
case ESM4::SUB_XNDP:
case ESM4::SUB_XOCP:
case ESM4::SUB_XPOD:
case ESM4::SUB_XPTL:
case ESM4::SUB_XPPA:
case ESM4::SUB_XPRD:
case ESM4::SUB_XPWR:
case ESM4::SUB_XRMR:
case ESM4::SUB_XSPC:
case ESM4::SUB_XTNM:
case ESM4::SUB_XTRI:
case ESM4::SUB_XWCN:
case ESM4::SUB_XWCU:
case ESM4::SUB_XATR:
case ESM4::SUB_XHLT: // Unofficial Oblivion Patch
case ESM4::SUB_XCHG: // thievery.exp
case ESM4::SUB_XHLP: // FO3
case ESM4::SUB_XAMT: // FO3
case ESM4::SUB_XAMC: // FO3
case ESM4::SUB_XRAD: // FO3
case ESM4::SUB_XIBS: // FO3
case ESM4::SUB_XORD: // FO3
case ESM4::SUB_XCLP: // FO3
case ESM4::SUB_SCDA: // FO3
case ESM4::SUB_RCLR: // FO3
case ESM4::SUB_BNAM: // FONV
case ESM4::SUB_MMRK: // FONV
case ESM4::SUB_MNAM: // FONV
case ESM4::SUB_NNAM: // FONV
case ESM4::SUB_XATO: // FONV
case ESM4::SUB_SCRV: // FONV
case ESM4::SUB_SCVR: // FONV
case ESM4::SUB_SLSD: // FONV
case ESM4::SUB_XSRF: // FONV
case ESM4::SUB_XSRD: // FONV
case ESM4::SUB_WMI1: // FONV
case ESM4::SUB_XLRL: // Unofficial Skyrim Patch
case ESM4::SUB_XASP: // FO4
case ESM4::SUB_XATP: // FO4
case ESM4::SUB_XBSD: // FO4
case ESM4::SUB_XCVR: // FO4
case ESM4::SUB_XCZR: // FO4
case ESM4::SUB_XLKT: // FO4
case ESM4::SUB_XLYR: // FO4
case ESM4::SUB_XMSP: // FO4
case ESM4::SUB_XPDD: // FO4
case ESM4::SUB_XPLK: // FO4
case ESM4::SUB_XRFG: // FO4
case ESM4::SUB_XWPG: // FO4
case ESM4::SUB_XWPN: // FO4
case ESM::fourCC("XPCI"): // formId
case ESM::fourCC("XLCM"):
case ESM::fourCC("ONAM"):
case ESM::fourCC("VMAD"):
case ESM::fourCC("XPRM"):
case ESM::fourCC("INAM"):
case ESM::fourCC("PDTO"):
case ESM::fourCC("SCHR"):
case ESM::fourCC("SCTX"):
case ESM::fourCC("XAPD"):
case ESM::fourCC("XAPR"):
case ESM::fourCC("XCVL"):
case ESM::fourCC("XCZA"):
case ESM::fourCC("XCZC"):
case ESM::fourCC("XEZN"):
case ESM::fourCC("XFVC"):
case ESM::fourCC("XHTW"):
case ESM::fourCC("XIS2"):
case ESM::fourCC("XLCN"):
case ESM::fourCC("XLIB"):
case ESM::fourCC("XLKR"):
case ESM::fourCC("XLRM"):
case ESM::fourCC("XLRT"):
case ESM::fourCC("XLTW"):
case ESM::fourCC("XMBO"):
case ESM::fourCC("XMBP"):
case ESM::fourCC("XMBR"):
case ESM::fourCC("XNDP"):
case ESM::fourCC("XOCP"):
case ESM::fourCC("XPOD"):
case ESM::fourCC("XPTL"):
case ESM::fourCC("XPPA"):
case ESM::fourCC("XPRD"):
case ESM::fourCC("XPWR"):
case ESM::fourCC("XRMR"):
case ESM::fourCC("XSPC"):
case ESM::fourCC("XTNM"):
case ESM::fourCC("XTRI"):
case ESM::fourCC("XWCN"):
case ESM::fourCC("XWCU"):
case ESM::fourCC("XATR"):
case ESM::fourCC("XHLT"): // Unofficial Oblivion Patch
case ESM::fourCC("XCHG"): // thievery.exp
case ESM::fourCC("XHLP"): // FO3
case ESM::fourCC("XAMT"): // FO3
case ESM::fourCC("XAMC"): // FO3
case ESM::fourCC("XRAD"): // FO3
case ESM::fourCC("XIBS"): // FO3
case ESM::fourCC("XORD"): // FO3
case ESM::fourCC("XCLP"): // FO3
case ESM::fourCC("SCDA"): // FO3
case ESM::fourCC("RCLR"): // FO3
case ESM::fourCC("BNAM"): // FONV
case ESM::fourCC("MMRK"): // FONV
case ESM::fourCC("MNAM"): // FONV
case ESM::fourCC("NNAM"): // FONV
case ESM::fourCC("XATO"): // FONV
case ESM::fourCC("SCRV"): // FONV
case ESM::fourCC("SCVR"): // FONV
case ESM::fourCC("SLSD"): // FONV
case ESM::fourCC("XSRF"): // FONV
case ESM::fourCC("XSRD"): // FONV
case ESM::fourCC("WMI1"): // FONV
case ESM::fourCC("XLRL"): // Unofficial Skyrim Patch
case ESM::fourCC("XASP"): // FO4
case ESM::fourCC("XATP"): // FO4
case ESM::fourCC("XBSD"): // FO4
case ESM::fourCC("XCVR"): // FO4
case ESM::fourCC("XCZR"): // FO4
case ESM::fourCC("XLKT"): // FO4
case ESM::fourCC("XLYR"): // FO4
case ESM::fourCC("XMSP"): // FO4
case ESM::fourCC("XPDD"): // FO4
case ESM::fourCC("XPLK"): // FO4
case ESM::fourCC("XRFG"): // FO4
case ESM::fourCC("XWPG"): // FO4
case ESM::fourCC("XWPN"): // FO4
// if (mFormId == 0x0007e90f) // XPRM XPOD
// if (mBaseObj == 0x17) //XPRM XOCP occlusion plane data XMBO bound half extents
reader.skipSubRecordData();

@ -41,22 +41,22 @@ void ESM4::Region::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_RCLR:
case ESM::fourCC("RCLR"):
reader.get(mColour);
break;
case ESM4::SUB_WNAM:
case ESM::fourCC("WNAM"):
reader.getFormId(mWorldId);
break;
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mShader);
break;
case ESM4::SUB_RPLI:
case ESM::fourCC("RPLI"):
reader.get(mEdgeFalloff);
break;
case ESM4::SUB_RPLD:
case ESM::fourCC("RPLD"):
{
mRPLD.resize(subHdr.dataSize / sizeof(std::uint32_t));
for (std::vector<std::uint32_t>::iterator it = mRPLD.begin(); it != mRPLD.end(); ++it)
@ -71,10 +71,10 @@ void ESM4::Region::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_RDAT:
case ESM::fourCC("RDAT"):
reader.get(mData);
break;
case ESM4::SUB_RDMP:
case ESM::fourCC("RDMP"):
{
if (mData.type != RDAT_Map)
throw std::runtime_error("REGN unexpected data type");
@ -83,7 +83,7 @@ void ESM4::Region::load(ESM4::Reader& reader)
}
// FO3 only 2: DemoMegatonSound and DC01 (both 0 RDMD)
// FONV none
case ESM4::SUB_RDMD: // music type; 0 default, 1 public, 2 dungeon
case ESM::fourCC("RDMD"): // music type; 0 default, 1 public, 2 dungeon
{
#if 0
int dummy;
@ -94,14 +94,14 @@ void ESM4::Region::load(ESM4::Reader& reader)
#endif
break;
}
case ESM4::SUB_RDMO: // not seen in FO3/FONV?
case ESM::fourCC("RDMO"): // not seen in FO3/FONV?
{
// std::cout << "REGN " << ESM::printName(subHdr.typeId) << " skipping..."
// << subHdr.dataSize << std::endl;
reader.skipSubRecordData();
break;
}
case ESM4::SUB_RDSD: // Possibly the same as RDSA
case ESM::fourCC("RDSD"): // Possibly the same as RDSA
{
if (mData.type != RDAT_Sound)
throw std::runtime_error(
@ -114,16 +114,16 @@ void ESM4::Region::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_RDGS: // Only in Oblivion? (ToddTestRegion1) // formId
case ESM4::SUB_RDSA:
case ESM4::SUB_RDWT: // formId
case ESM4::SUB_RDOT: // formId
case ESM4::SUB_RDID: // FONV
case ESM4::SUB_RDSB: // FONV
case ESM4::SUB_RDSI: // FONV
case ESM4::SUB_NVMI: // TES5
case ESM4::SUB_ANAM: // FO4
case ESM4::SUB_RLDM: // FO4
case ESM::fourCC("RDGS"): // Only in Oblivion? (ToddTestRegion1) // formId
case ESM::fourCC("RDSA"):
case ESM::fourCC("RDWT"): // formId
case ESM::fourCC("RDOT"): // formId
case ESM::fourCC("RDID"): // FONV
case ESM::fourCC("RDSB"): // FONV
case ESM::fourCC("RDSI"): // FONV
case ESM::fourCC("NVMI"): // TES5
case ESM::fourCC("ANAM"): // FO4
case ESM::fourCC("RLDM"): // FO4
// RDAT skipping... following is a map
// RDMP skipping... map name
//

@ -45,7 +45,7 @@ void ESM4::Road::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_PGRP:
case ESM::fourCC("PGRP"):
{
std::size_t numNodes = subHdr.dataSize / sizeof(PGRP);
@ -57,7 +57,7 @@ void ESM4::Road::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_PGRR:
case ESM::fourCC("PGRR"):
{
static PGRR link;
static RDRP linkPt;

@ -41,10 +41,10 @@ void ESM4::SubSpace::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_DNAM:
case ESM::fourCC("DNAM"):
{
reader.get(mDimension.x);
reader.get(mDimension.y);

@ -43,22 +43,22 @@ void ESM4::StaticCollection::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_OBND:
case ESM4::SUB_MODL: // Model data start
case ESM4::SUB_MODT:
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_ONAM:
case ESM4::SUB_DATA:
case ESM4::SUB_FLTR: // FO4
case ESM4::SUB_PTRN: // FO4
case ESM::fourCC("OBND"):
case ESM::fourCC("MODL"): // Model data start
case ESM::fourCC("MODT"):
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("ONAM"):
case ESM::fourCC("DATA"):
case ESM::fourCC("FLTR"): // FO4
case ESM::fourCC("PTRN"): // FO4
reader.skipSubRecordData();
break;
default:

@ -43,12 +43,12 @@ void ESM4::Script::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
{
reader.getZString(mEditorId);
break;
}
case ESM4::SUB_SCHR:
case ESM::fourCC("SCHR"):
{
// For debugging only
#if 0
@ -73,12 +73,12 @@ void ESM4::Script::load(ESM4::Reader& reader)
#endif
break;
}
case ESM4::SUB_SCTX:
case ESM::fourCC("SCTX"):
reader.getString(mScript.scriptSource);
// if (mEditorId == "CTrapLogs01SCRIPT")
// std::cout << mScript.scriptSource << std::endl;
break;
case ESM4::SUB_SCDA: // compiled script data
case ESM::fourCC("SCDA"): // compiled script data
{
// For debugging only
#if 0
@ -112,10 +112,10 @@ void ESM4::Script::load(ESM4::Reader& reader)
#endif
break;
}
case ESM4::SUB_SCRO:
case ESM::fourCC("SCRO"):
reader.getFormId(mScript.globReference);
break;
case ESM4::SUB_SLSD:
case ESM::fourCC("SLSD"):
{
localVar.clear();
reader.get(localVar.index);
@ -128,11 +128,11 @@ void ESM4::Script::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_SCVR: // assumed always pair with SLSD
case ESM::fourCC("SCVR"): // assumed always pair with SLSD
reader.getZString(localVar.variableName);
mScript.localVarData.push_back(localVar);
break;
case ESM4::SUB_SCRV:
case ESM::fourCC("SCRV"):
{
std::uint32_t index;
reader.get(index);

@ -41,40 +41,40 @@ void ESM4::Scroll::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_DESC:
case ESM::fourCC("DESC"):
reader.getLocalizedString(mText);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
reader.get(mData.value);
reader.get(mData.weight);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_YNAM:
case ESM::fourCC("YNAM"):
reader.getFormId(mPickUpSound);
break;
case ESM4::SUB_ZNAM:
case ESM::fourCC("ZNAM"):
reader.getFormId(mDropSound);
break;
// case ESM4::SUB_MODB: reader.get(mBoundRadius); break;
case ESM4::SUB_OBND:
case ESM4::SUB_CTDA:
case ESM4::SUB_EFID:
case ESM4::SUB_EFIT:
case ESM4::SUB_ETYP:
case ESM4::SUB_KSIZ:
case ESM4::SUB_KWDA:
case ESM4::SUB_MDOB:
case ESM4::SUB_MODT:
case ESM4::SUB_SPIT:
case ESM4::SUB_CIS2:
// case ESM::fourCC("MODB"): reader.get(mBoundRadius); break;
case ESM::fourCC("OBND"):
case ESM::fourCC("CTDA"):
case ESM::fourCC("EFID"):
case ESM::fourCC("EFIT"):
case ESM::fourCC("ETYP"):
case ESM::fourCC("KSIZ"):
case ESM::fourCC("KWDA"):
case ESM::fourCC("MDOB"):
case ESM::fourCC("MODT"):
case ESM::fourCC("SPIT"):
case ESM::fourCC("CIS2"):
reader.skipSubRecordData();
break;
default:

@ -42,10 +42,10 @@ void ESM4::SigilStone::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
{
if (mFullName.empty())
{
@ -62,34 +62,34 @@ void ESM4::SigilStone::load(ESM4::Reader& reader)
}
break;
}
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
{
reader.get(mData.uses);
reader.get(mData.value);
reader.get(mData.weight);
break;
}
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mIcon);
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_SCIT:
case ESM::fourCC("SCIT"):
{
reader.get(mEffect);
reader.adjustFormId(mEffect.formId);
break;
}
case ESM4::SUB_MODT:
case ESM4::SUB_EFID:
case ESM4::SUB_EFIT:
case ESM::fourCC("MODT"):
case ESM::fourCC("EFID"):
case ESM::fourCC("EFIT"):
{
reader.skipSubRecordData();
break;

@ -41,38 +41,38 @@ void ESM4::SoulGem::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mIcon);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
reader.get(mData);
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_SOUL:
case ESM::fourCC("SOUL"):
reader.get(mSoul);
break;
case ESM4::SUB_SLCP:
case ESM::fourCC("SLCP"):
reader.get(mSoulCapacity);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_MODT:
case ESM4::SUB_KSIZ:
case ESM4::SUB_KWDA:
case ESM4::SUB_NAM0:
case ESM4::SUB_OBND:
case ESM::fourCC("MODT"):
case ESM::fourCC("KSIZ"):
case ESM::fourCC("KWDA"):
case ESM::fourCC("NAM0"):
case ESM::fourCC("OBND"):
reader.skipSubRecordData();
break;
default:

@ -41,10 +41,10 @@ void ESM4::SoundReference::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_CTDA:
case ESM::fourCC("CTDA"):
reader.get(&mTargetCondition, 20);
reader.get(mTargetCondition.runOn);
reader.get(mTargetCondition.reference);
@ -52,22 +52,22 @@ void ESM4::SoundReference::load(ESM4::Reader& reader)
reader.adjustFormId(mTargetCondition.reference);
reader.skipSubRecordData(4); // unknown
break;
case ESM4::SUB_GNAM:
case ESM::fourCC("GNAM"):
reader.getFormId(mSoundCategory);
break;
case ESM4::SUB_SNAM:
case ESM::fourCC("SNAM"):
reader.getFormId(mSoundId);
break;
case ESM4::SUB_ONAM:
case ESM::fourCC("ONAM"):
reader.getFormId(mOutputModel);
break;
case ESM4::SUB_ANAM:
case ESM::fourCC("ANAM"):
reader.getZString(mSoundFile);
break;
case ESM4::SUB_LNAM:
case ESM::fourCC("LNAM"):
reader.get(mLoopInfo);
break;
case ESM4::SUB_BNAM:
case ESM::fourCC("BNAM"):
{
if (subHdr.dataSize == 6)
reader.get(mData);
@ -77,16 +77,16 @@ void ESM4::SoundReference::load(ESM4::Reader& reader)
reader.skipSubRecordData();
break;
}
case ESM4::SUB_CIS1:
case ESM4::SUB_CIS2:
case ESM4::SUB_CNAM: // CRC32 hash
case ESM4::SUB_DNAM: // FO4
case ESM4::SUB_FNAM: // unknown
case ESM4::SUB_INTV: // FO4
case ESM4::SUB_ITMC: // FO4
case ESM4::SUB_ITME: // FO4
case ESM4::SUB_ITMS: // FO4
case ESM4::SUB_NNAM: // FO4
case ESM::fourCC("CIS1"):
case ESM::fourCC("CIS2"):
case ESM::fourCC("CNAM"): // CRC32 hash
case ESM::fourCC("DNAM"): // FO4
case ESM::fourCC("FNAM"): // unknown
case ESM::fourCC("INTV"): // FO4
case ESM::fourCC("ITMC"): // FO4
case ESM::fourCC("ITME"): // FO4
case ESM::fourCC("ITMS"): // FO4
case ESM::fourCC("NNAM"): // FO4
reader.skipSubRecordData();
break;
default:

@ -41,16 +41,16 @@ void ESM4::Sound::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FNAM:
case ESM::fourCC("FNAM"):
reader.getZString(mSoundFile);
break;
case ESM4::SUB_SNDX:
case ESM::fourCC("SNDX"):
reader.get(mData);
break;
case ESM4::SUB_SNDD:
case ESM::fourCC("SNDD"):
if (subHdr.dataSize == 8)
reader.get(&mData, 8);
else
@ -59,13 +59,13 @@ void ESM4::Sound::load(ESM4::Reader& reader)
reader.get(mExtra);
}
break;
case ESM4::SUB_OBND: // TES5 only
case ESM4::SUB_SDSC: // TES5 only
case ESM4::SUB_ANAM: // FO3
case ESM4::SUB_GNAM: // FO3
case ESM4::SUB_HNAM: // FO3
case ESM4::SUB_RNAM: // FONV
case ESM4::SUB_REPT: // FO4
case ESM::fourCC("OBND"): // TES5 only
case ESM::fourCC("SDSC"): // TES5 only
case ESM::fourCC("ANAM"): // FO3
case ESM::fourCC("GNAM"): // FO3
case ESM::fourCC("HNAM"): // FO3
case ESM::fourCC("RNAM"): // FONV
case ESM::fourCC("REPT"): // FO4
reader.skipSubRecordData();
break;
default:

@ -41,19 +41,19 @@ void ESM4::Static::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_MODT:
case ESM::fourCC("MODT"):
{
// version is only availabe in TES5 (seems to be 27 or 28?)
// if (reader.esmVersion() == ESM::VER_094 || reader.esmVersion() == ESM::VER_170)
@ -72,7 +72,7 @@ void ESM4::Static::load(ESM4::Reader& reader)
}
break;
}
case ESM4::SUB_MNAM:
case ESM::fourCC("MNAM"):
{
for (std::string& level : mLOD)
{
@ -84,18 +84,18 @@ void ESM4::Static::load(ESM4::Reader& reader)
}
break;
}
case ESM4::SUB_MODC: // More model data
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_OBND:
case ESM4::SUB_DNAM:
case ESM4::SUB_BRUS: // FONV
case ESM4::SUB_RNAM: // FONV
case ESM4::SUB_FTYP: // FO4
case ESM4::SUB_NVNM: // FO4
case ESM4::SUB_PRPS: // FO4
case ESM4::SUB_PTRN: // FO4
case ESM4::SUB_VMAD: // FO4
case ESM::fourCC("MODC"): // More model data
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("OBND"):
case ESM::fourCC("DNAM"):
case ESM::fourCC("BRUS"): // FONV
case ESM::fourCC("RNAM"): // FONV
case ESM::fourCC("FTYP"): // FO4
case ESM::fourCC("NVNM"): // FO4
case ESM::fourCC("PRPS"): // FO4
case ESM::fourCC("PTRN"): // FO4
case ESM::fourCC("VMAD"): // FO4
reader.skipSubRecordData();
break;
default:

@ -41,44 +41,44 @@ void ESM4::TalkingActivator::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_VNAM:
case ESM::fourCC("VNAM"):
reader.getFormId(mVoiceType);
break;
case ESM4::SUB_SNAM:
case ESM::fourCC("SNAM"):
reader.getFormId(mLoopSound);
break;
case ESM4::SUB_INAM:
case ESM::fourCC("INAM"):
reader.getFormId(mRadioTemplate);
break; // FONV
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_DAMC: // Destructible
case ESM4::SUB_DEST:
case ESM4::SUB_DMDC:
case ESM4::SUB_DMDL:
case ESM4::SUB_DMDT:
case ESM4::SUB_DMDS:
case ESM4::SUB_DSTA:
case ESM4::SUB_DSTD:
case ESM4::SUB_DSTF: // Destructible end
case ESM4::SUB_FNAM:
case ESM4::SUB_PNAM:
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_OBND:
case ESM4::SUB_VMAD:
case ESM::fourCC("DAMC"): // Destructible
case ESM::fourCC("DEST"):
case ESM::fourCC("DMDC"):
case ESM::fourCC("DMDL"):
case ESM::fourCC("DMDT"):
case ESM::fourCC("DMDS"):
case ESM::fourCC("DSTA"):
case ESM::fourCC("DSTD"):
case ESM::fourCC("DSTF"): // Destructible end
case ESM::fourCC("FNAM"):
case ESM::fourCC("PNAM"):
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("OBND"):
case ESM::fourCC("VMAD"):
reader.skipSubRecordData();
break;
default:

@ -41,73 +41,73 @@ void ESM4::Terminal::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_DESC:
case ESM::fourCC("DESC"):
reader.getLocalizedString(mText);
break;
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_PNAM:
case ESM::fourCC("PNAM"):
reader.getFormId(mPasswordNote);
break;
case ESM4::SUB_SNAM:
case ESM::fourCC("SNAM"):
if (subHdr.dataSize == 4)
reader.getFormId(mSound);
// FIXME: FO4 sound marker params
else
reader.skipSubRecordData();
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_RNAM:
case ESM::fourCC("RNAM"):
reader.getZString(mResultText);
break;
case ESM4::SUB_DNAM: // difficulty
case ESM4::SUB_ANAM: // flags
case ESM4::SUB_CTDA:
case ESM4::SUB_CIS1:
case ESM4::SUB_CIS2:
case ESM4::SUB_INAM:
case ESM4::SUB_ITXT: // Menu Item
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_SCDA:
case ESM4::SUB_SCHR:
case ESM4::SUB_SCRO:
case ESM4::SUB_SCRV:
case ESM4::SUB_SCTX:
case ESM4::SUB_SCVR:
case ESM4::SUB_SLSD:
case ESM4::SUB_TNAM:
case ESM4::SUB_OBND:
case ESM4::SUB_VMAD:
case ESM4::SUB_KSIZ:
case ESM4::SUB_KWDA:
case ESM4::SUB_BSIZ: // FO4
case ESM4::SUB_BTXT: // FO4
case ESM4::SUB_COCT: // FO4
case ESM4::SUB_CNTO: // FO4
case ESM4::SUB_FNAM: // FO4
case ESM4::SUB_ISIZ: // FO4
case ESM4::SUB_ITID: // FO4
case ESM4::SUB_MNAM: // FO4
case ESM4::SUB_NAM0: // FO4
case ESM4::SUB_PRPS: // FO4
case ESM4::SUB_PTRN: // FO4
case ESM4::SUB_UNAM: // FO4
case ESM4::SUB_VNAM: // FO4
case ESM4::SUB_WBDT: // FO4
case ESM4::SUB_WNAM: // FO4
case ESM4::SUB_XMRK: // FO4
case ESM::fourCC("DNAM"): // difficulty
case ESM::fourCC("ANAM"): // flags
case ESM::fourCC("CTDA"):
case ESM::fourCC("CIS1"):
case ESM::fourCC("CIS2"):
case ESM::fourCC("INAM"):
case ESM::fourCC("ITXT"): // Menu Item
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("SCDA"):
case ESM::fourCC("SCHR"):
case ESM::fourCC("SCRO"):
case ESM::fourCC("SCRV"):
case ESM::fourCC("SCTX"):
case ESM::fourCC("SCVR"):
case ESM::fourCC("SLSD"):
case ESM::fourCC("TNAM"):
case ESM::fourCC("OBND"):
case ESM::fourCC("VMAD"):
case ESM::fourCC("KSIZ"):
case ESM::fourCC("KWDA"):
case ESM::fourCC("BSIZ"): // FO4
case ESM::fourCC("BTXT"): // FO4
case ESM::fourCC("COCT"): // FO4
case ESM::fourCC("CNTO"): // FO4
case ESM::fourCC("FNAM"): // FO4
case ESM::fourCC("ISIZ"): // FO4
case ESM::fourCC("ITID"): // FO4
case ESM::fourCC("MNAM"): // FO4
case ESM::fourCC("NAM0"): // FO4
case ESM::fourCC("PRPS"): // FO4
case ESM::fourCC("PTRN"): // FO4
case ESM::fourCC("UNAM"): // FO4
case ESM::fourCC("VNAM"): // FO4
case ESM::fourCC("WBDT"): // FO4
case ESM::fourCC("WNAM"): // FO4
case ESM::fourCC("XMRK"): // FO4
reader.skipSubRecordData();
break;
default:

@ -41,7 +41,7 @@ void ESM4::Header::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_HEDR:
case ESM::fourCC("HEDR"):
{
if (!reader.getExact(mData.version) || !reader.getExact(mData.records)
|| !reader.getExact(mData.nextObjectId))
@ -51,13 +51,13 @@ void ESM4::Header::load(ESM4::Reader& reader)
throw std::runtime_error("TES4 HEDR data size mismatch");
break;
}
case ESM4::SUB_CNAM:
case ESM::fourCC("CNAM"):
reader.getZString(mAuthor);
break;
case ESM4::SUB_SNAM:
case ESM::fourCC("SNAM"):
reader.getZString(mDesc);
break;
case ESM4::SUB_MAST: // multiple
case ESM::fourCC("MAST"): // multiple
{
ESM::MasterData m;
if (!reader.getZString(m.name))
@ -68,7 +68,7 @@ void ESM4::Header::load(ESM4::Reader& reader)
mMaster.push_back(m);
break;
}
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
{
if (mMaster.empty())
throw std::runtime_error(
@ -78,7 +78,7 @@ void ESM4::Header::load(ESM4::Reader& reader)
throw std::runtime_error("TES4 DATA data read error");
break;
}
case ESM4::SUB_ONAM:
case ESM::fourCC("ONAM"):
{
mOverrides.resize(subHdr.dataSize / sizeof(ESM::FormId32));
for (ESM::FormId& mOverride : mOverrides)
@ -95,11 +95,11 @@ void ESM4::Header::load(ESM4::Reader& reader)
}
break;
}
case ESM4::SUB_INTV:
case ESM4::SUB_INCC:
case ESM4::SUB_OFST: // Oblivion only?
case ESM4::SUB_DELE: // Oblivion only?
case ESM4::SUB_TNAM: // Fallout 4 (CK only)
case ESM::fourCC("INTV"):
case ESM::fourCC("INCC"):
case ESM::fourCC("OFST"): // Oblivion only?
case ESM::fourCC("DELE"): // Oblivion only?
case ESM::fourCC("TNAM"): // Fallout 4 (CK only)
case ESM::fourCC("MMSB"): // Fallout 76
reader.skipSubRecordData();
break;

@ -41,29 +41,29 @@ void ESM4::Tree::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mLeafTexture);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_CNAM:
case ESM4::SUB_BNAM:
case ESM4::SUB_SNAM:
case ESM4::SUB_FULL:
case ESM4::SUB_OBND:
case ESM4::SUB_PFIG:
case ESM4::SUB_PFPC:
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("CNAM"):
case ESM::fourCC("BNAM"):
case ESM::fourCC("SNAM"):
case ESM::fourCC("FULL"):
case ESM::fourCC("OBND"):
case ESM::fourCC("PFIG"):
case ESM::fourCC("PFPC"):
reader.skipSubRecordData();
break;
default:

@ -41,37 +41,37 @@ void ESM4::TextureSet::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM::fourCC("FLTR"): // FO76
reader.getZString(mFilter);
break;
case ESM4::SUB_TX00:
case ESM::fourCC("TX00"):
reader.getZString(mDiffuse);
break;
case ESM4::SUB_TX01:
case ESM::fourCC("TX01"):
reader.getZString(mNormalMap);
break;
case ESM4::SUB_TX02:
case ESM::fourCC("TX02"):
// This is a "wrinkle map" in FO4/76
reader.getZString(mEnvMask);
break;
case ESM4::SUB_TX03:
case ESM::fourCC("TX03"):
// This is a glow map in FO4/76
reader.getZString(mToneMap);
break;
case ESM4::SUB_TX04:
case ESM::fourCC("TX04"):
// This is a height map in FO4/76
reader.getZString(mDetailMap);
break;
case ESM4::SUB_TX05:
case ESM::fourCC("TX05"):
reader.getZString(mEnvMap);
break;
case ESM4::SUB_TX06:
case ESM::fourCC("TX06"):
reader.getZString(mMultiLayer);
break;
case ESM4::SUB_TX07:
case ESM::fourCC("TX07"):
// This is a "smooth specular" map in FO4/76
reader.getZString(mSpecular);
break;
@ -84,14 +84,14 @@ void ESM4::TextureSet::load(ESM4::Reader& reader)
case ESM::fourCC("TX10"): // FO76
reader.getZString(mFlow);
break;
case ESM4::SUB_DNAM:
case ESM::fourCC("DNAM"):
reader.get(mDataFlags);
break;
case ESM4::SUB_MNAM:
case ESM::fourCC("MNAM"):
reader.getZString(mMaterial);
break;
case ESM4::SUB_DODT: // Decal data
case ESM4::SUB_OBND: // object bounds
case ESM::fourCC("DODT"): // Decal data
case ESM::fourCC("OBND"): // object bounds
case ESM::fourCC("OPDS"): // Object placement defaults, FO76
reader.skipSubRecordData();
break;

@ -43,13 +43,13 @@ void ESM4::Weapon::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
{
// if (reader.esmVersion() == ESM::VER_094 || reader.esmVersion() == ESM::VER_170)
if (subHdr.dataSize == 10) // FO3 has 15 bytes even though VER_094
@ -79,126 +79,126 @@ void ESM4::Weapon::load(ESM4::Reader& reader)
}
break;
}
case ESM4::SUB_MODL:
case ESM::fourCC("MODL"):
reader.getZString(mModel);
break;
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mIcon);
break;
case ESM4::SUB_MICO:
case ESM::fourCC("MICO"):
reader.getZString(mMiniIcon);
break; // FO3
case ESM4::SUB_SCRI:
case ESM::fourCC("SCRI"):
reader.getFormId(mScriptId);
break;
case ESM4::SUB_ANAM:
case ESM::fourCC("ANAM"):
reader.get(mEnchantmentPoints);
break;
case ESM4::SUB_ENAM:
case ESM::fourCC("ENAM"):
reader.getFormId(mEnchantment);
break;
case ESM4::SUB_MODB:
case ESM::fourCC("MODB"):
reader.get(mBoundRadius);
break;
case ESM4::SUB_DESC:
case ESM::fourCC("DESC"):
reader.getLocalizedString(mText);
break;
case ESM4::SUB_YNAM:
case ESM::fourCC("YNAM"):
reader.getFormId(mPickUpSound);
break;
case ESM4::SUB_ZNAM:
case ESM::fourCC("ZNAM"):
reader.getFormId(mDropSound);
break;
case ESM4::SUB_MODT: // Model data
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_BAMT:
case ESM4::SUB_BIDS:
case ESM4::SUB_INAM:
case ESM4::SUB_CNAM:
case ESM4::SUB_CRDT:
case ESM4::SUB_DNAM:
case ESM4::SUB_EAMT:
case ESM4::SUB_EITM:
case ESM4::SUB_ETYP:
case ESM4::SUB_KSIZ:
case ESM4::SUB_KWDA:
case ESM4::SUB_NAM8:
case ESM4::SUB_NAM9:
case ESM4::SUB_OBND:
case ESM4::SUB_SNAM:
case ESM4::SUB_TNAM:
case ESM4::SUB_UNAM:
case ESM4::SUB_VMAD:
case ESM4::SUB_VNAM:
case ESM4::SUB_WNAM:
case ESM4::SUB_XNAM: // Dawnguard only?
case ESM4::SUB_NNAM:
case ESM4::SUB_NAM0: // FO3
case ESM4::SUB_REPL: // FO3
case ESM4::SUB_MOD2: // FO3
case ESM4::SUB_MO2T: // FO3
case ESM4::SUB_MO2S: // FO3
case ESM4::SUB_NAM6: // FO3
case ESM4::SUB_MOD4: // First person model data
case ESM4::SUB_MO4T:
case ESM4::SUB_MO4S:
case ESM4::SUB_MO4C:
case ESM4::SUB_MO4F: // First person model data end
case ESM4::SUB_BIPL: // FO3
case ESM4::SUB_NAM7: // FO3
case ESM4::SUB_MOD3: // FO3
case ESM4::SUB_MO3T: // FO3
case ESM4::SUB_MO3S: // FO3
case ESM4::SUB_MODD: // FO3
// case ESM4::SUB_MOSD: // FO3
case ESM4::SUB_DAMC: // Destructible
case ESM4::SUB_DEST:
case ESM4::SUB_DMDC:
case ESM4::SUB_DMDL:
case ESM4::SUB_DMDT:
case ESM4::SUB_DMDS:
case ESM4::SUB_DSTA:
case ESM4::SUB_DSTD:
case ESM4::SUB_DSTF: // Destructible end
case ESM4::SUB_VATS: // FONV
case ESM4::SUB_VANM: // FONV
case ESM4::SUB_MWD1: // FONV
case ESM4::SUB_MWD2: // FONV
case ESM4::SUB_MWD3: // FONV
case ESM4::SUB_MWD4: // FONV
case ESM4::SUB_MWD5: // FONV
case ESM4::SUB_MWD6: // FONV
case ESM4::SUB_MWD7: // FONV
case ESM4::SUB_WMI1: // FONV
case ESM4::SUB_WMI2: // FONV
case ESM4::SUB_WMI3: // FONV
case ESM4::SUB_WMS1: // FONV
case ESM4::SUB_WMS2: // FONV
case ESM4::SUB_WNM1: // FONV
case ESM4::SUB_WNM2: // FONV
case ESM4::SUB_WNM3: // FONV
case ESM4::SUB_WNM4: // FONV
case ESM4::SUB_WNM5: // FONV
case ESM4::SUB_WNM6: // FONV
case ESM4::SUB_WNM7: // FONV
case ESM4::SUB_EFSD: // FONV DeadMoney
case ESM4::SUB_APPR: // FO4
case ESM4::SUB_DAMA: // FO4
case ESM4::SUB_FLTR: // FO4
case ESM4::SUB_FNAM: // FO4
case ESM4::SUB_INRD: // FO4
case ESM4::SUB_LNAM: // FO4
case ESM4::SUB_MASE: // FO4
case ESM4::SUB_PTRN: // FO4
case ESM4::SUB_STCP: // FO4
case ESM4::SUB_WAMD: // FO4
case ESM4::SUB_WZMD: // FO4
case ESM4::SUB_OBTE: // FO4 object template start
case ESM4::SUB_OBTF:
case ESM4::SUB_OBTS:
case ESM4::SUB_STOP: // FO4 object template end
case ESM::fourCC("MODT"): // Model data
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("BAMT"):
case ESM::fourCC("BIDS"):
case ESM::fourCC("INAM"):
case ESM::fourCC("CNAM"):
case ESM::fourCC("CRDT"):
case ESM::fourCC("DNAM"):
case ESM::fourCC("EAMT"):
case ESM::fourCC("EITM"):
case ESM::fourCC("ETYP"):
case ESM::fourCC("KSIZ"):
case ESM::fourCC("KWDA"):
case ESM::fourCC("NAM8"):
case ESM::fourCC("NAM9"):
case ESM::fourCC("OBND"):
case ESM::fourCC("SNAM"):
case ESM::fourCC("TNAM"):
case ESM::fourCC("UNAM"):
case ESM::fourCC("VMAD"):
case ESM::fourCC("VNAM"):
case ESM::fourCC("WNAM"):
case ESM::fourCC("XNAM"): // Dawnguard only?
case ESM::fourCC("NNAM"):
case ESM::fourCC("NAM0"): // FO3
case ESM::fourCC("REPL"): // FO3
case ESM::fourCC("MOD2"): // FO3
case ESM::fourCC("MO2T"): // FO3
case ESM::fourCC("MO2S"): // FO3
case ESM::fourCC("NAM6"): // FO3
case ESM::fourCC("MOD4"): // First person model data
case ESM::fourCC("MO4T"):
case ESM::fourCC("MO4S"):
case ESM::fourCC("MO4C"):
case ESM::fourCC("MO4F"): // First person model data end
case ESM::fourCC("BIPL"): // FO3
case ESM::fourCC("NAM7"): // FO3
case ESM::fourCC("MOD3"): // FO3
case ESM::fourCC("MO3T"): // FO3
case ESM::fourCC("MO3S"): // FO3
case ESM::fourCC("MODD"): // FO3
// case ESM::fourCC("MOSD"): // FO3
case ESM::fourCC("DAMC"): // Destructible
case ESM::fourCC("DEST"):
case ESM::fourCC("DMDC"):
case ESM::fourCC("DMDL"):
case ESM::fourCC("DMDT"):
case ESM::fourCC("DMDS"):
case ESM::fourCC("DSTA"):
case ESM::fourCC("DSTD"):
case ESM::fourCC("DSTF"): // Destructible end
case ESM::fourCC("VATS"): // FONV
case ESM::fourCC("VANM"): // FONV
case ESM::fourCC("MWD1"): // FONV
case ESM::fourCC("MWD2"): // FONV
case ESM::fourCC("MWD3"): // FONV
case ESM::fourCC("MWD4"): // FONV
case ESM::fourCC("MWD5"): // FONV
case ESM::fourCC("MWD6"): // FONV
case ESM::fourCC("MWD7"): // FONV
case ESM::fourCC("WMI1"): // FONV
case ESM::fourCC("WMI2"): // FONV
case ESM::fourCC("WMI3"): // FONV
case ESM::fourCC("WMS1"): // FONV
case ESM::fourCC("WMS2"): // FONV
case ESM::fourCC("WNM1"): // FONV
case ESM::fourCC("WNM2"): // FONV
case ESM::fourCC("WNM3"): // FONV
case ESM::fourCC("WNM4"): // FONV
case ESM::fourCC("WNM5"): // FONV
case ESM::fourCC("WNM6"): // FONV
case ESM::fourCC("WNM7"): // FONV
case ESM::fourCC("EFSD"): // FONV DeadMoney
case ESM::fourCC("APPR"): // FO4
case ESM::fourCC("DAMA"): // FO4
case ESM::fourCC("FLTR"): // FO4
case ESM::fourCC("FNAM"): // FO4
case ESM::fourCC("INRD"): // FO4
case ESM::fourCC("LNAM"): // FO4
case ESM::fourCC("MASE"): // FO4
case ESM::fourCC("PTRN"): // FO4
case ESM::fourCC("STCP"): // FO4
case ESM::fourCC("WAMD"): // FO4
case ESM::fourCC("WZMD"): // FO4
case ESM::fourCC("OBTE"): // FO4 object template start
case ESM::fourCC("OBTF"):
case ESM::fourCC("OBTS"):
case ESM::fourCC("STOP"): // FO4 object template end
reader.skipSubRecordData();
break;
default:

@ -56,46 +56,46 @@ void ESM4::World::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId)
{
case ESM4::SUB_EDID:
case ESM::fourCC("EDID"):
reader.getZString(mEditorId);
break;
case ESM4::SUB_FULL:
case ESM::fourCC("FULL"):
reader.getLocalizedString(mFullName);
break;
case ESM4::SUB_WCTR: // TES5+
case ESM::fourCC("WCTR"): // TES5+
reader.get(mCenterCell);
break;
case ESM4::SUB_WNAM:
case ESM::fourCC("WNAM"):
reader.getFormId(mParent);
break;
case ESM4::SUB_SNAM:
case ESM::fourCC("SNAM"):
reader.get(mSound);
break; // sound, Oblivion only?
case ESM4::SUB_ICON:
case ESM::fourCC("ICON"):
reader.getZString(mMapFile);
break;
case ESM4::SUB_CNAM:
case ESM::fourCC("CNAM"):
reader.getFormId(mClimate);
break;
case ESM4::SUB_NAM2:
case ESM::fourCC("NAM2"):
reader.getFormId(mWater);
break;
case ESM4::SUB_NAM0:
case ESM::fourCC("NAM0"):
{
reader.get(mMinX);
reader.get(mMinY);
break;
}
case ESM4::SUB_NAM9:
case ESM::fourCC("NAM9"):
{
reader.get(mMaxX);
reader.get(mMaxY);
break;
}
case ESM4::SUB_DATA:
case ESM::fourCC("DATA"):
reader.get(mWorldFlags);
break;
case ESM4::SUB_MNAM:
case ESM::fourCC("MNAM"):
{
reader.get(mMap.width);
reader.get(mMap.height);
@ -113,7 +113,7 @@ void ESM4::World::load(ESM4::Reader& reader)
break;
}
case ESM4::SUB_DNAM: // defaults
case ESM::fourCC("DNAM"): // defaults
{
reader.get(mLandLevel); // -2700.f for TES5
reader.get(mWaterLevel); // -14000.f for TES5
@ -135,37 +135,37 @@ void ESM4::World::load(ESM4::Reader& reader)
// 00119D2E freeside\freeside_01.mp3 0012D94D FreesideNorthWorld (Freeside)
// 00119D2E freeside\freeside_01.mp3 0012D94E FreesideFortWorld (Old Mormon Fort)
// NOTE: FONV DefaultObjectManager has 00090908 "explore" as the default music
case ESM4::SUB_ZNAM:
case ESM::fourCC("ZNAM"):
reader.getFormId(mMusic);
break;
case ESM4::SUB_PNAM:
case ESM::fourCC("PNAM"):
reader.get(mParentUseFlags);
break;
case ESM4::SUB_OFST:
case ESM4::SUB_RNAM: // multiple
case ESM4::SUB_MHDT:
case ESM4::SUB_LTMP:
case ESM4::SUB_XEZN:
case ESM4::SUB_XLCN:
case ESM4::SUB_NAM3:
case ESM4::SUB_NAM4:
case ESM4::SUB_NAMA:
case ESM4::SUB_ONAM:
case ESM4::SUB_TNAM:
case ESM4::SUB_UNAM:
case ESM4::SUB_XWEM:
case ESM4::SUB_MODL: // Model data start
case ESM4::SUB_MODT:
case ESM4::SUB_MODC:
case ESM4::SUB_MODS:
case ESM4::SUB_MODF: // Model data end
case ESM4::SUB_INAM: // FO3
case ESM4::SUB_NNAM: // FO3
case ESM4::SUB_XNAM: // FO3
case ESM4::SUB_IMPS: // FO3 Anchorage
case ESM4::SUB_IMPF: // FO3 Anchorage
case ESM4::SUB_CLSZ: // FO4
case ESM4::SUB_WLEV: // FO4
case ESM::fourCC("OFST"):
case ESM::fourCC("RNAM"): // multiple
case ESM::fourCC("MHDT"):
case ESM::fourCC("LTMP"):
case ESM::fourCC("XEZN"):
case ESM::fourCC("XLCN"):
case ESM::fourCC("NAM3"):
case ESM::fourCC("NAM4"):
case ESM::fourCC("NAMA"):
case ESM::fourCC("ONAM"):
case ESM::fourCC("TNAM"):
case ESM::fourCC("UNAM"):
case ESM::fourCC("XWEM"):
case ESM::fourCC("MODL"): // Model data start
case ESM::fourCC("MODT"):
case ESM::fourCC("MODC"):
case ESM::fourCC("MODS"):
case ESM::fourCC("MODF"): // Model data end
case ESM::fourCC("INAM"): // FO3
case ESM::fourCC("NNAM"): // FO3
case ESM::fourCC("XNAM"): // FO3
case ESM::fourCC("IMPS"): // FO3 Anchorage
case ESM::fourCC("IMPF"): // FO3 Anchorage
case ESM::fourCC("CLSZ"): // FO4
case ESM::fourCC("WLEV"): // FO4
reader.skipSubRecordData();
break;
default:

@ -588,7 +588,7 @@ namespace ESM4
// Extended storage subrecord redefines the following subrecord's size.
// Would need to redesign the loader to support that, so skip over both subrecords.
if (result && mCtx.subRecordHeader.typeId == ESM4::SUB_XXXX)
if (result && mCtx.subRecordHeader.typeId == ESM::fourCC("XXXX"))
{
std::uint32_t extDataSize;
get(extDataSize);

@ -335,7 +335,7 @@ namespace ESM4
// Get a subrecord of a particular type and data type
template <typename T>
bool getSubRecord(const ESM4::SubRecordTypes type, T& t)
bool getSubRecord(const std::uint32_t type, T& t)
{
ESM4::SubRecordHeader hdr;
if (!getExact(hdr) || (hdr.typeId != type) || (hdr.dataSize != sizeof(T)))

Loading…
Cancel
Save