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 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 // Based on http://www.uesp.net/wiki/Tes5Mod:Mod_File_Format#Records
enum RecordFlag enum RecordFlag
{ {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -65,18 +65,18 @@ void ESM4::Land::load(ESM4::Reader& reader)
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader(); const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
switch (subHdr.typeId) switch (subHdr.typeId)
{ {
case ESM4::SUB_DATA: case ESM::fourCC("DATA"):
{ {
reader.get(mLandFlags); reader.get(mLandFlags);
break; 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); reader.get(mVertNorm);
mDataTypes |= LAND_VNML; mDataTypes |= LAND_VNML;
break; 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 #if 0
reader.get(mHeightMap.heightOffset); reader.get(mHeightMap.heightOffset);
@ -88,13 +88,13 @@ void ESM4::Land::load(ESM4::Reader& reader)
mDataTypes |= LAND_VHGT; mDataTypes |= LAND_VHGT;
break; 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); reader.get(mVertColr);
mDataTypes |= LAND_VCLR; mDataTypes |= LAND_VCLR;
break; break;
} }
case ESM4::SUB_BTXT: case ESM::fourCC("BTXT"):
{ {
BTXT base; BTXT base;
if (reader.getExact(base)) if (reader.getExact(base))
@ -112,7 +112,7 @@ void ESM4::Land::load(ESM4::Reader& reader)
} }
break; break;
} }
case ESM4::SUB_ATXT: case ESM::fourCC("ATXT"):
{ {
if (currentAddQuad != -1) if (currentAddQuad != -1)
{ {
@ -144,7 +144,7 @@ void ESM4::Land::load(ESM4::Reader& reader)
currentAddQuad = layer.texture.quadrant; currentAddQuad = layer.texture.quadrant;
break; break;
} }
case ESM4::SUB_VTXT: case ESM::fourCC("VTXT"):
{ {
if (currentAddQuad == -1) if (currentAddQuad == -1)
throw std::runtime_error("VTXT without ATXT found"); 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; // std::cout << "VTXT: count " << std::dec << count << std::endl;
break; 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); const std::uint16_t count = reader.subRecordHeader().dataSize / sizeof(ESM::FormId32);
if ((reader.subRecordHeader().dataSize % sizeof(ESM::FormId32)) != 0) if ((reader.subRecordHeader().dataSize % sizeof(ESM::FormId32)) != 0)
@ -191,7 +191,7 @@ void ESM4::Land::load(ESM4::Reader& reader)
} }
break; break;
} }
case ESM4::SUB_MPCD: // FO4 case ESM::fourCC("MPCD"): // FO4
reader.skipSubRecordData(); reader.skipSubRecordData();
break; break;
default: default:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -588,7 +588,7 @@ namespace ESM4
// Extended storage subrecord redefines the following subrecord's size. // Extended storage subrecord redefines the following subrecord's size.
// Would need to redesign the loader to support that, so skip over both subrecords. // 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; std::uint32_t extDataSize;
get(extDataSize); get(extDataSize);

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

Loading…
Cancel
Save