Пример #1
0
        public TNAMField TNAM;                                  // Timing

        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 "FNAM": FNAM = r.ReadFILE(dataSize); return(true);

            case "GNAM": GNAM = r.ReadFILE(dataSize); return(true);

            case "WLST": for (var i = 0; i < dataSize >> 3; i++)
                {
                    WLSTs.Add(new WLSTField(r, dataSize));
                }
                return(true);

            case "TNAM": TNAM = new TNAMField(r, dataSize); return(true);

            default: return(false);
            }
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        public STRVField MNAM; // Master Text

        public override bool CreateField(BinaryFileReader r, GameFormat 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);
            }
        }
Пример #5
0
        public List <RNAMField> RNAMs = new List <RNAMField>(); // Large References

        public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize)
        {
            switch (type)
            {
            case "EDID": EDID = r.ReadSTRV(dataSize); return(true);

            case "FULL": FULL = r.ReadSTRV(dataSize); return(true);

            case "WNAM": WNAM = new FMIDField <WRLDRecord>(r, dataSize); return(true);

            case "CNAM": CNAM = new FMIDField <CLMTRecord>(r, dataSize); return(true);

            case "NAM2": NAM2 = new FMIDField <WATRRecord>(r, dataSize); return(true);

            case "ICON": ICON = r.ReadFILE(dataSize); return(true);

            case "MNAM": MNAM = r.ReadT <MNAMField>(dataSize); return(true);

            case "DATA": DATA = r.ReadT <BYTEField>(dataSize); return(true);

            case "NAM0": NAM0 = new NAM0Field(r, dataSize); return(true);

            case "NAM9": NAM0.NAM9Field(r, dataSize); return(true);

            case "SNAM": SNAM = r.ReadT <UI32Field>(dataSize); return(true);

            case "OFST": r.Skip(dataSize); return(true);

            // TES5
            case "RNAM": RNAMs.Add(new RNAMField(r, dataSize)); return(true);

            default: return(false);
            }
        }
Пример #6
0
        public List <FMIDField <Record> > SCROs = new List <FMIDField <Record> >(); // Global variable reference

        public override bool CreateField(BinaryFileReader r, GameFormat 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.Skip(dataSize); return(true);

            case "INDX": r.Skip(dataSize); return(true);

            case "QSDT": r.Skip(dataSize); return(true);

            case "CNAM": r.Skip(dataSize); return(true);

            case "QSTA": r.Skip(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);
            }
        }
Пример #7
0
        public FMIDField <ENCHRecord> ENAM; // enchantment ID

        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 "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);
            }
        }
Пример #8
0
        public List <FMIDField <Record> > SPLOs = new List <FMIDField <Record> >(); // TES4: (points to a SPEL or LVSP record)

        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":
            case "FNAM": FULL = r.ReadSTRV(dataSize); return(true);

            case "ICON":
            case "TNAM": ICON = r.ReadFILE(dataSize); return(true);

            case "DESC": DESC = r.ReadSTRV(dataSize); return(true);

            case "SPLO": if (SPLOs == null)
                {
                    SPLOs = new List <FMIDField <Record> >();
                }
                SPLOs.Add(new FMIDField <Record>(r, dataSize)); return(true);

            case "NPCS": if (NPCSs == null)
                {
                    NPCSs = new List <STRVField>();
                }
                NPCSs.Add(r.ReadSTRV(dataSize)); return(true);

            default: return(false);
            }
        }
Пример #9
0
        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);
            }
        }
Пример #10
0
        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);
            }
        }
Пример #11
0
        public List <LNAMField> LNAMs; // LoadForm

        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 "DESC": DESC = r.ReadSTRV(dataSize); return(true);

            case "LNAM": if (LNAMs == null)
                {
                    LNAMs = new List <LNAMField>();
                }
                LNAMs.Add(new LNAMField(r, dataSize)); return(true);

            default: return(false);
            }
        }
Пример #12
0
        public BYTEField DATA; // Playable, Not Male, Not Female, Fixed

        public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize)
        {
            switch (type)
            {
            case "EDID": EDID = r.ReadSTRV(dataSize); return(true);

            case "FULL": FULL = r.ReadSTRV(dataSize); return(true);

            case "MODL": MODL = new MODLGroup(r, dataSize); return(true);

            case "MODB": MODL.MODBField(r, dataSize); return(true);

            case "ICON": ICON = r.ReadFILE(dataSize); return(true);

            case "DATA": DATA = r.ReadT <BYTEField>(dataSize); return(true);

            default: return(false);
            }
        }
Пример #13
0
        public List <FMIDField <GRASRecord> > GNAMs = new List <FMIDField <GRASRecord> >(); // Potential grass

        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 "INTV": INTV = r.ReadINTV(dataSize); return(true);

            case "ICON":
            case "DATA": ICON = r.ReadFILE(dataSize); return(true);

            // TES4
            case "HNAM": HNAM = new HNAMField(r, dataSize); return(true);

            case "SNAM": SNAM = r.ReadT <BYTEField>(dataSize); return(true);

            case "GNAM": GNAMs.Add(new FMIDField <GRASRecord>(r, dataSize)); return(true);

            default: return(false);
            }
        }
Пример #14
0
        public FMIDField <SCPTRecord> SCRI; // Script Name

        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 "MODL": MODL = new MODLGroup(r, dataSize); return(true);

                case "FNAM": FNAM = r.ReadSTRV(dataSize); return(true);

                case "PBDT": PBDT = new PBDTField(r, dataSize); return(true);

                case "ITEX": ICON = r.ReadFILE(dataSize); return(true);

                case "SCRI": SCRI = new FMIDField <SCPTRecord>(r, dataSize); return(true);

                default: return(false);
                }
            }
            return(false);
        }
Пример #15
0
        public BNAMField BNAM; // Billboard Dimensions

        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 "ICON": ICON = r.ReadFILE(dataSize); return(true);

            case "SNAM": SNAM = new SNAMField(r, dataSize); return(true);

            case "CNAM": CNAM = new CNAMField(r, dataSize); return(true);

            case "BNAM": BNAM = new BNAMField(r, dataSize); return(true);

            default: return(false);
            }
        }
Пример #16
0
        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);
            }
        }
Пример #17
0
        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(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);
            }
        }
        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);
        }