public PGRIField[] PGRIs; // Inter-Cell Connections public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize) { switch (type) { case "EDID": case "NAME": EDID = r.ReadSTRV(dataSize); return(true); case "DATA": DATA = new DATAField(r, dataSize, format); return(true); case "PGRP": PGRPs = new PGRPField[dataSize >> 4]; for (var i = 0; i < PGRPs.Length; i++) { PGRPs[i] = new PGRPField(r, 16); } return(true); case "PGRC": PGRC = r.ReadUNKN(dataSize); return(true); case "PGAG": PGAG = r.ReadUNKN(dataSize); return(true); case "PGRR": PGRRs = new PGRRField[dataSize >> 2]; for (var i = 0; i < PGRRs.Length; i++) { PGRRs[i] = new PGRRField(r, 4); } r.Skip(dataSize % 4); return(true); case "PGRL": if (PGRLs == null) { PGRLs = new List <PGRLField>(); } PGRLs.Add(new PGRLField(r, dataSize)); return(true); case "PGRI": PGRIs = new PGRIField[dataSize >> 4]; for (var i = 0; i < PGRIs.Length; i++) { PGRIs[i] = new PGRIField(r, 16); } return(true); default: return(false); } }
public UNKNField?TNAM; // overrides (Optional) public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize) { switch (type) { case "HEDR": HEDR = r.ReadT <HEDRField>(dataSize); return(true); case "OFST": r.Skip(dataSize); return(true); case "DELE": r.Skip(dataSize); return(true); case "CNAM": CNAM = r.ReadSTRV(dataSize); return(true); case "SNAM": SNAM = r.ReadSTRV(dataSize); return(true); case "MAST": if (MASTs == null) { MASTs = new List <STRVField>(); } MASTs.Add(r.ReadSTRV(dataSize)); return(true); case "DATA": if (DATAs == null) { DATAs = new List <INTVField>(); } DATAs.Add(r.ReadINTV(dataSize)); return(true); case "ONAM": ONAM = r.ReadUNKN(dataSize); return(true); case "INTV": INTV = r.ReadT <IN32Field>(dataSize); return(true); case "INCC": INCC = r.ReadT <IN32Field>(dataSize); return(true); // TES5 case "TNAM": TNAM = r.ReadUNKN(dataSize); return(true); default: return(false); } }
public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize) { switch (type) { case "PGRP": PGRPs = new PGRDRecord.PGRPField[dataSize >> 4]; for (var i = 0; i < PGRPs.Length; i++) { PGRPs[i] = new PGRDRecord.PGRPField(r, dataSize); } return(true); case "PGRR": PGRR = r.ReadUNKN(dataSize); return(true); default: return(false); } }
public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize) { if (format == GameFormat.TES3) { switch (type) { case "NAME": EDID = r.ReadSTRV(dataSize); return(true); case "FNAM": FULL = r.ReadSTRV(dataSize); return(true); case "RADT": DATA = new DATAField(r, dataSize, format); return(true); case "NPCS": SPLOs.Add(r.ReadSTRV(dataSize)); return(true); case "DESC": DESC = r.ReadSTRV(dataSize); return(true); default: return(false); } } if (format == GameFormat.TES4) { switch (_nameState) { case 0: switch (type) { case "EDID": EDID = r.ReadSTRV(dataSize); return(true); case "FULL": FULL = r.ReadSTRV(dataSize); return(true); case "DESC": DESC = r.ReadSTRV(dataSize); return(true); case "DATA": DATA = new DATAField(r, dataSize, format); return(true); case "SPLO": SPLOs.Add(r.ReadSTRV(dataSize)); return(true); case "VNAM": VNAM = new FMID2Field <RACERecord>(r, dataSize); return(true); case "DNAM": DNAM = new FMID2Field <HAIRRecord>(r, dataSize); return(true); case "CNAM": CNAM = r.ReadT <BYTEField>(dataSize); return(true); case "PNAM": PNAM = r.ReadT <FLTVField>(dataSize); return(true); case "UNAM": UNAM = r.ReadT <FLTVField>(dataSize); return(true); case "XNAM": XNAM = r.ReadUNKN(dataSize); return(true); case "ATTR": DATA.ATTRField(r, dataSize); return(true); case "NAM0": _nameState++; return(true); default: return(false); } case 1: // Face Data switch (type) { case "INDX": FaceParts.Add(new FacePartGroup { INDX = r.ReadT <UI32Field>(dataSize) }); return(true); case "MODL": FaceParts.Last().MODL = new MODLGroup(r, dataSize); return(true); case "ICON": FaceParts.Last().ICON = r.ReadFILE(dataSize); return(true); case "MODB": FaceParts.Last().MODL.MODBField(r, dataSize); return(true); case "NAM1": _nameState++; return(true); default: return(false); } case 2: // Body Data switch (type) { case "MNAM": _genderState = 0; return(true); case "FNAM": _genderState = 1; return(true); case "MODL": Bodys[_genderState].MODL = r.ReadFILE(dataSize); return(true); case "MODB": Bodys[_genderState].MODB = r.ReadT <FLTVField>(dataSize); return(true); case "INDX": Bodys[_genderState].BodyParts.Add(new BodyPartGroup { INDX = r.ReadT <UI32Field>(dataSize) }); return(true); case "ICON": Bodys[_genderState].BodyParts.Last().ICON = r.ReadFILE(dataSize); return(true); case "HNAM": _nameState++; break; default: return(false); } goto case 3; case 3: // Postamble switch (type) { case "HNAM": for (var i = 0; i < dataSize >> 2; i++) { HNAMs.Add(new FMIDField <HAIRRecord>(r, 4)); } return(true); case "ENAM": for (var i = 0; i < dataSize >> 2; i++) { ENAMs.Add(new FMIDField <EYESRecord>(r, 4)); } return(true); case "FGGS": FGGS = r.ReadBYTV(dataSize); return(true); case "FGGA": FGGA = r.ReadBYTV(dataSize); return(true); case "FGTS": FGTS = r.ReadBYTV(dataSize); return(true); case "SNAM": SNAM = r.ReadUNKN(dataSize); return(true); default: return(false); } default: return(false); } } return(false); }
public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize) { if (format == GameFormat.TES3) { switch (type) { case "INAM": EDID = r.ReadSTRV(dataSize); DIALRecord.LastRecord?.INFOs.Add(this); return(true); case "PNAM": PNAM = new FMIDField <INFORecord>(r, dataSize); return(true); case "NNAM": TES3.NNAM = r.ReadSTRV(dataSize); return(true); case "DATA": TES3.DATA = new DATA3Field(r, dataSize); return(true); case "ONAM": TES3.ONAM = r.ReadSTRV(dataSize); return(true); case "RNAM": TES3.RNAM = r.ReadSTRV(dataSize); return(true); case "CNAM": TES3.CNAM = r.ReadSTRV(dataSize); return(true); case "FNAM": TES3.FNAM = r.ReadSTRV(dataSize); return(true); case "ANAM": TES3.ANAM = r.ReadSTRV(dataSize); return(true); case "DNAM": TES3.DNAM = r.ReadSTRV(dataSize); return(true); case "NAME": TES3.NAME = r.ReadSTRV(dataSize); return(true); case "SNAM": TES3.SNAM = r.ReadFILE(dataSize); return(true); case "QSTN": TES3.QSTN = r.ReadT <BYTEField>(dataSize); return(true); case "QSTF": TES3.QSTF = r.ReadT <BYTEField>(dataSize); return(true); case "QSTR": TES3.QSTR = r.ReadT <BYTEField>(dataSize); return(true); case "SCVR": TES3.SCVR = new SCPTRecord.CTDAField(r, dataSize, format); return(true); case "INTV": TES3.INTV = r.ReadUNKN(dataSize); return(true); case "FLTV": TES3.FLTV = r.ReadUNKN(dataSize); return(true); case "BNAM": TES3.BNAM = r.ReadSTRV(dataSize); return(true); default: return(false); } } switch (type) { case "DATA": TES4.DATA = new DATA4Field(r, dataSize); return(true); case "QSTI": TES4.QSTI = new FMIDField <QUSTRecord>(r, dataSize); return(true); case "TPIC": TES4.TPIC = new FMIDField <DIALRecord>(r, dataSize); return(true); case "NAME": TES4.NAMEs.Add(new FMIDField <DIALRecord>(r, dataSize)); return(true); case "TRDT": TES4.TRDTs.Add(new TRDTField(r, dataSize)); return(true); case "NAM1": TES4.TRDTs.Last().NAM1Field(r, dataSize); return(true); case "NAM2": TES4.TRDTs.Last().NAM2Field(r, dataSize); return(true); case "CTDA": case "CTDT": TES4.CTDAs.Add(new SCPTRecord.CTDAField(r, dataSize, format)); return(true); case "TCLT": TES4.TCLTs.Add(new FMIDField <DIALRecord>(r, dataSize)); return(true); case "TCLF": TES4.TCLFs.Add(new FMIDField <DIALRecord>(r, dataSize)); return(true); case "SCHR": case "SCHD": TES4.SCHR = new SCPTRecord.SCHRField(r, dataSize); return(true); case "SCDA": TES4.SCDA = r.ReadBYTV(dataSize); return(true); case "SCTX": TES4.SCTX = r.ReadSTRV(dataSize); return(true); case "SCRO": TES4.SCROs.Add(new FMIDField <Record>(r, dataSize)); return(true); default: return(false); } }