public List <SNAMField> SNAMs = new List <SNAMField>(); // Sounds public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize) { switch (type) { case "EDID": EDID = r.ReadSTRV(dataSize); return(true); case "MODL": MODL = new MODLGroup(r, dataSize); return(true); case "MODB": MODL.MODBField(r, dataSize); return(true); case "CNAM": CNAM = r.ReadFILE(dataSize); return(true); case "DNAM": DNAM = r.ReadFILE(dataSize); return(true); case "NAM0": NAM0 = r.ReadBYTV(dataSize); return(true); case "FNAM": FNAM = new FNAMField(r, dataSize); return(true); case "HNAM": HNAM = new HNAMField(r, dataSize); return(true); case "DATA": DATA = new DATAField(r, dataSize); return(true); case "SNAM": SNAMs.Add(new SNAMField(r, dataSize)); return(true); default: return(false); } }
public BYTEField SLCP; // Soul gem maximum capacity public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize) { switch (type) { case "EDID": EDID = r.ReadSTRV(dataSize); return(true); case "MODL": MODL = new MODLGroup(r, dataSize); return(true); case "MODB": MODL.MODBField(r, dataSize); return(true); case "MODT": MODL.MODTField(r, dataSize); return(true); case "FULL": FULL = r.ReadSTRV(dataSize); return(true); case "SCRI": SCRI = new FMIDField <SCPTRecord>(r, dataSize); return(true); case "DATA": DATA = new DATAField(r, dataSize); return(true); case "ICON": ICON = r.ReadFILE(dataSize); return(true); case "SOUL": SOUL = r.ReadT <BYTEField>(dataSize); return(true); case "SLCP": SLCP = r.ReadT <BYTEField>(dataSize); return(true); default: return(false); } }
public DATAField DATA; // Ammo Data public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize) { switch (type) { case "EDID": EDID = r.ReadSTRV(dataSize); return(true); case "MODL": MODL = new MODLGroup(r, dataSize); return(true); case "MODB": MODL.MODBField(r, dataSize); return(true); case "MODT": MODL.MODTField(r, dataSize); return(true); case "FULL": FULL = r.ReadSTRV(dataSize); return(true); case "ICON": ICON = r.ReadFILE(dataSize); return(true); case "ENAM": ENAM = new FMIDField <ENCHRecord>(r, dataSize); return(true); case "ANAM": ANAM = r.ReadT <IN16Field>(dataSize); return(true); case "DATA": DATA = new DATAField(r, dataSize); return(true); default: return(false); } }
public List <FMIDField <Record> > SCROs = new List <FMIDField <Record> >(); // Global variable reference public override bool CreateField(UnityBinaryReader r, GameFormatId format, string type, int dataSize) { switch (type) { case "EDID": EDID = r.ReadSTRV(dataSize); return(true); case "FULL": FULL = r.ReadSTRV(dataSize); return(true); case "ICON": ICON = r.ReadFILE(dataSize); return(true); case "DATA": DATA = new DATAField(r, dataSize); return(true); case "SCRI": SCRI = new FMIDField <SCPTRecord>(r, dataSize); return(true); case "CTDA": r.SkipBytes(dataSize); return(true); case "INDX": r.SkipBytes(dataSize); return(true); case "QSDT": r.SkipBytes(dataSize); return(true); case "CNAM": r.SkipBytes(dataSize); return(true); case "QSTA": r.SkipBytes(dataSize); return(true); case "SCHR": SCHR = new SCPTRecord.SCHRField(r, dataSize); return(true); case "SCDA": SCDA = r.ReadBYTV(dataSize); return(true); case "SCTX": SCTX = r.ReadSTRV(dataSize); return(true); case "SCRO": SCROs.Add(new FMIDField <Record>(r, dataSize)); return(true); default: return(false); } }
public FMIDField <SOUNRecord> QNAM; // Close sound 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 "MODL": MODL = new MODLGroup(r, dataSize); return(true); case "MODB": MODL.MODBField(r, dataSize); return(true); case "MODT": MODL.MODTField(r, dataSize); return(true); case "FULL": case "FNAM": FULL = r.ReadSTRV(dataSize); return(true); case "DATA": case "CNDT": DATA = new DATAField(r, dataSize, format); return(true); case "FLAG": DATA.FLAGField(r, dataSize); return(true); case "CNTO": case "NPCO": CNTOs.Add(new CNTOField(r, dataSize, format)); return(true); case "SCRI": SCRI = new FMIDField <SCPTRecord>(r, dataSize); return(true); case "SNAM": SNAM = new FMIDField <SOUNRecord>(r, dataSize); return(true); case "QNAM": QNAM = new FMIDField <SOUNRecord>(r, dataSize); return(true); default: return(false); } }
public DATAField DATA; // Data 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 "CLDT": r.Skip(dataSize); return(true); case "DESC": DESC = r.ReadSTRV(dataSize); return(true); default: return(false); } } 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 "ICON": ICON = r.ReadSTRV(dataSize); return(true); case "DATA": DATA = new DATAField(r, dataSize); return(true); default: return(false); } }
public FMIDField <ENCHRecord> ENAM; // enchantment ID public override bool CreateField(UnityBinaryReader r, GameFormatId format, string type, int dataSize) { switch (type) { case "EDID": case "NAME": EDID = r.ReadSTRV(dataSize); return(true); case "MODL": MODL = new MODLGroup(r, dataSize); return(true); case "MODB": MODL.MODBField(r, dataSize); return(true); case "MODT": MODL.MODTField(r, dataSize); return(true); case "FULL": case "FNAM": FULL = r.ReadSTRV(dataSize); return(true); case "DATA": case "MCDT": DATA = new DATAField(r, dataSize, format); return(true); case "ICON": case "ITEX": ICON = r.ReadFILE(dataSize); return(true); case "ENAM": ENAM = new FMIDField <ENCHRecord>(r, dataSize); return(true); case "SCRI": SCRI = new FMIDField <SCPTRecord>(r, dataSize); return(true); default: return(false); } }
public STRVField MNAM; // Master Text public override bool CreateField(UnityBinaryReader r, GameFormatId format, string type, int dataSize) { switch (type) { case "EDID": EDID = r.ReadSTRV(dataSize); return(true); case "INDX": INDX = r.ReadT <IN32Field>(dataSize); return(true); case "DATA": case "SKDT": DATA = new DATAField(r, dataSize, format); return(true); case "DESC": DESC = r.ReadSTRV(dataSize); return(true); case "ICON": ICON = r.ReadFILE(dataSize); return(true); case "ANAM": ANAM = r.ReadSTRV(dataSize); return(true); case "JNAM": JNAM = r.ReadSTRV(dataSize); return(true); case "ENAM": ENAM = r.ReadSTRV(dataSize); return(true); case "MNAM": MNAM = r.ReadSTRV(dataSize); return(true); default: return(false); } }
public REFRRecord(Record record) { baseRecord = record; var fields = record.Fields .GroupBy(f => f.Type) .ToDictionary(f => f.Key, f => f.First().DataBytes); EditorID = fields.ContainsKey("EDID") ? (ZString?)ZString.Parse(fields["EDID"]) : null; Name = new LocalFormID(fields["NAME"], 0); Data = fields.ContainsKey("DATA") ? DATAField.Parse(fields["DATA"]) : null; Bounds = fields.ContainsKey("XMBO") ? XMBOField.Parse(fields["XMBO"]) : null; }
public DATAField DATA; // Data public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize) { switch (type) { case "EDID": EDID = r.ReadSTRV(dataSize); return(true); case "ICON": ICON = r.ReadFILE(dataSize); return(true); case "ICO2": ICO2 = r.ReadFILE(dataSize); return(true); case "DATA": DATA = new DATAField(r, dataSize); return(true); default: return(false); } }
public GNAMField GNAM; // GNAM public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize) { switch (type) { case "EDID": EDID = r.ReadSTRV(dataSize); return true; case "TNAM": TNAM = r.ReadSTRV(dataSize); return true; case "ANAM": ANAM = r.ReadT<BYTEField>(dataSize); return true; case "FNAM": FNAM = r.ReadT<BYTEField>(dataSize); return true; case "MNAM": MNAM = r.ReadSTRV(dataSize); return true; case "SNAM": SNAM = new FMIDField<SOUNRecord>(r, dataSize); return true; case "DATA": DATA = new DATAField(r, dataSize); return true; case "GNAM": GNAM = new GNAMField(r, dataSize); return true; default: return false; } }
public List <ENCHRecord.SCITField> SCITs = new List <ENCHRecord.SCITField>(); // Script Effect Data 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 "MODL": MODL = new MODLGroup(r, dataSize); return(true); case "MODB": MODL.MODBField(r, dataSize); return(true); case "MODT": MODL.MODTField(r, dataSize); return(true); case "FULL": if (SCITs.Count == 0) { FULL = r.ReadSTRV(dataSize); } else { SCITs.Last().FULLField(r, dataSize); } return(true); case "FNAM": FULL = r.ReadSTRV(dataSize); return(true); case "DATA": case "ALDT": DATA = new DATAField(r, dataSize, format); return(true); case "ENAM": ENAM = new ENAMField(r, dataSize); return(true); case "ICON": case "TEXT": ICON = r.ReadFILE(dataSize); return(true); case "SCRI": SCRI = new FMIDField <SCPTRecord>(r, dataSize); return(true); // case "ENIT": DATA.ENITField(r, dataSize); return(true); case "EFID": r.Skip(dataSize); return(true); case "EFIT": EFITs.Add(new ENCHRecord.EFITField(r, dataSize, format)); return(true); case "SCIT": SCITs.Add(new ENCHRecord.SCITField(r, dataSize)); return(true); default: return(false); } }
public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize) { switch (type) { case "EDID": EDID = r.ReadSTRV(dataSize); return(true); case "MODL": MODL = new MODLGroup(r, dataSize); return(true); case "MODB": MODL.MODBField(r, dataSize); return(true); case "MODT": MODL.MODTField(r, dataSize); return(true); case "DATA": DATA = new DATAField(r, dataSize); return(true); default: return(false); } }
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 DATAField DATA; // Sound Data 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 "FNAM": FNAM = r.ReadFILE(dataSize); return(true); case "SNDX": DATA = new DATAField(r, dataSize, format); return(true); case "SNDD": DATA = new DATAField(r, dataSize, format); return(true); case "DATA": DATA = new DATAField(r, dataSize, format); return(true); default: return(false); } }
public FMIDField <SOUNRecord> SNAM; // Sound FormId (optional) 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 "FULL": FULL = r.ReadSTRV(dataSize); return(true); case "FNAM": if (format != GameFormat.TES3) { FNAM = r.ReadT <FLTVField>(dataSize); } else { FULL = r.ReadSTRV(dataSize); } return(true); case "DATA": case "LHDT": DATA = new DATAField(r, dataSize, format); return(true); case "SCPT": SCPT = r.ReadSTRV(dataSize); return(true); case "SCRI": SCRI = new FMIDField <SCPTRecord>(r, dataSize); return(true); case "ICON": case "ITEX": ICON = r.ReadFILE(dataSize); return(true); case "MODL": MODL = new MODLGroup(r, dataSize); return(true); case "MODB": MODL.MODBField(r, dataSize); return(true); case "MODT": MODL.MODTField(r, dataSize); return(true); case "SNAM": SNAM = new FMIDField <SOUNRecord>(r, 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 "INDX": INDX = r.ReadINTV(dataSize); return(true); case "MEDT": MEDT = new MEDTField(r, dataSize); return(true); case "ITEX": ICON = r.ReadFILE(dataSize); return(true); case "PTEX": PTEX = r.ReadSTRV(dataSize); return(true); case "CVFX": CVFX = r.ReadSTRV(dataSize); return(true); case "BVFX": BVFX = r.ReadSTRV(dataSize); return(true); case "HVFX": HVFX = r.ReadSTRV(dataSize); return(true); case "AVFX": AVFX = r.ReadSTRV(dataSize); return(true); case "DESC": DESC = r.ReadSTRV(dataSize); return(true); case "CSND": CSND = r.ReadSTRV(dataSize); return(true); case "BSND": BSND = r.ReadSTRV(dataSize); return(true); case "HSND": HSND = r.ReadSTRV(dataSize); return(true); case "ASND": ASND = r.ReadSTRV(dataSize); return(true); default: return(false); } } 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 "ICON": ICON = r.ReadFILE(dataSize); return(true); case "MODL": MODL = new MODLGroup(r, dataSize); return(true); case "MODB": MODL.MODBField(r, dataSize); return(true); case "DATA": DATA = new DATAField(r, dataSize); return(true); case "ESCE": ESCEs = new STRVField[dataSize >> 2]; for (var i = 0; i < ESCEs.Length; i++) { ESCEs[i] = r.ReadSTRV(4); } return(true); default: return(false); } }
public IN16Field?ANAM; // Enchantment points (optional) 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 "MODL": MODL = new MODLGroup(r, dataSize); return(true); case "MODB": MODL.MODBField(r, dataSize); return(true); case "MODT": MODL.MODTField(r, dataSize); return(true); case "FULL": case "FNAM": FULL = r.ReadSTRV(dataSize); return(true); case "DATA": case "CTDT": DATA = new DATAField(r, dataSize, format); return(true); case "ICON": case "ITEX": ICON = r.ReadFILE(dataSize); return(true); case "INDX": INDXs.Add(new INDXFieldGroup { INDX = r.ReadINTV(dataSize) }); return(true); case "BNAM": INDXs.Last().BNAM = r.ReadSTRV(dataSize); return(true); case "CNAM": INDXs.Last().CNAM = r.ReadSTRV(dataSize); return(true); case "ENAM": ENAM = r.ReadSTRV(dataSize); return(true); case "SCRI": SCRI = new FMIDField <SCPTRecord>(r, dataSize); return(true); case "BMDT": BMDT = r.ReadT <UI32Field>(dataSize); return(true); case "MOD2": MOD2 = new MODLGroup(r, dataSize); return(true); case "MO2B": MOD2.MODBField(r, dataSize); return(true); case "MO2T": MOD2.MODTField(r, dataSize); return(true); case "MOD3": MOD3 = new MODLGroup(r, dataSize); return(true); case "MO3B": MOD3.MODBField(r, dataSize); return(true); case "MO3T": MOD3.MODTField(r, dataSize); return(true); case "MOD4": MOD4 = new MODLGroup(r, dataSize); return(true); case "MO4B": MOD4.MODBField(r, dataSize); return(true); case "MO4T": MOD4.MODTField(r, dataSize); return(true); case "ICO2": ICO2 = r.ReadFILE(dataSize); return(true); case "ANAM": ANAM = r.ReadT <IN16Field>(dataSize); return(true); default: return(false); } }
public override bool CreateField(UnityBinaryReader r, GameFormatId format, string type, int dataSize) { if (format == GameFormatId.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 == GameFormatId.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) { switch (type) { case "EDID": EDID = r.ReadSTRV(dataSize); return(true); case "NAME": NAME = new FMIDField <Record>(r, dataSize); return(true); case "XTEL": XTEL = new XTELField(r, dataSize); return(true); case "DATA": DATA = new DATAField(r, dataSize); return(true); case "XLOC": XLOC = new XLOCField(r, dataSize); return(true); case "XOWN": if (XOWNs == null) { XOWNs = new List <CELLRecord.XOWNGroup>(); } XOWNs.Add(new CELLRecord.XOWNGroup { XOWN = new FMIDField <Record>(r, dataSize) }); return(true); case "XRNK": XOWNs.Last().XRNK = r.ReadT <IN32Field>(dataSize); return(true); case "XGLB": XOWNs.Last().XGLB = new FMIDField <Record>(r, dataSize); return(true); case "XESP": XESP = new XESPField(r, dataSize); return(true); case "XTRG": XTRG = new FMIDField <Record>(r, dataSize); return(true); case "XSED": XSED = new XSEDField(r, dataSize); return(true); case "XLOD": XLOD = r.ReadBYTV(dataSize); return(true); case "XCHG": XCHG = r.ReadT <FLTVField>(dataSize); return(true); case "XHLT": XCHG = r.ReadT <FLTVField>(dataSize); return(true); case "XPCI": XPCI = new FMIDField <CELLRecord>(r, dataSize); _nextFull = 1; return(true); case "FULL": if (_nextFull == 1) { XPCI.Value.AddName(r.ReadASCIIString(dataSize)); } else if (_nextFull == 2) { XMRKs.Last().FULL = r.ReadSTRV(dataSize); } _nextFull = 0; return(true); case "XLCM": XLCM = r.ReadT <IN32Field>(dataSize); return(true); case "XRTM": XRTM = new FMIDField <REFRRecord>(r, dataSize); return(true); case "XACT": XACT = r.ReadT <UI32Field>(dataSize); return(true); case "XCNT": XCNT = r.ReadT <IN32Field>(dataSize); return(true); case "XMRK": if (XMRKs == null) { XMRKs = new List <XMRKGroup>(); } XMRKs.Add(new XMRKGroup()); _nextFull = 2; return(true); case "FNAM": XMRKs.Last().FNAM = r.ReadT <BYTEField>(dataSize); return(true); case "TNAM": XMRKs.Last().TNAM = r.ReadT <BYTEField>(dataSize); r.ReadByte(); return(true); case "ONAM": return(true); case "XRGD": XRGD = r.ReadBYTV(dataSize); return(true); case "XSCL": XSCL = r.ReadT <FLTVField>(dataSize); return(true); case "XSOL": XSOL = r.ReadT <BYTEField>(dataSize); return(true); default: return(false); } }