コード例 #1
0
        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": FNAM = r.ReadSTRV(dataSize); return(true);

                case "RNAM": RNAMs.Add(new RNAMGroup {
                        MNAM = r.ReadSTRV(dataSize)
                    }); return(true);

                case "FADT": FADT = new FADTField(r, dataSize); return(true);

                case "ANAM": ANAMs.Add(r.ReadSTRV(dataSize)); return(true);

                case "INTV": INTVs.Add(r.ReadINTV(dataSize)); return(true);

                default: return(false);
                }
            }
            switch (type)
            {
            case "EDID": EDID = r.ReadSTRV(dataSize); return(true);

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

            case "XNAM": XNAM = new XNAMField(r, dataSize, format); return(true);

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

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

            case "RNAM": RNAMs.Add(new RNAMGroup {
                    RNAM = r.ReadT <IN32Field>(dataSize)
                }); return(true);

            case "MNAM": RNAMs.Last().MNAM = r.ReadSTRV(dataSize); return(true);

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

            case "INAM": RNAMs.Last().INAM = r.ReadSTRV(dataSize); return(true);

            default: return(false);
            }
        }
コード例 #2
0
        public FMIDField <SCPTRecord>?SCRI;                     // Unknown

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

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

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

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

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

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

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

            case "NPDT": NPDT = new NPDTField(r, dataSize); return(true);

            case "FLAG": FLAG = r.ReadINTV(dataSize); return(true);

            case "NPCO": NPCOs.Add(new CNTOField(r, dataSize, format)); return(true);

            case "NPCS": NPCSs.Add(r.ReadSTRV(dataSize, ASCIIFormat.ZeroPadded)); return(true);

            case "AIDT": AIDT = new CREARecord.AIDTField(r, dataSize); return(true);

            case "AI_W": AI_W = new CREARecord.AI_WField(r, dataSize); return(true);

            case "AI_T": AI_T = new CREARecord.AI_TField(r, dataSize); return(true);

            case "AI_F": AI_F = new CREARecord.AI_FField(r, dataSize); return(true);

            case "AI_E": AI_E = new CREARecord.AI_FField(r, dataSize); return(true);

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

            case "AI_A": AI_A = new CREARecord.AI_AField(r, dataSize); return(true);

            case "DODT": DODT = new DODTField(r, dataSize); return(true);

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

            case "XSCL": XSCL = r.ReadT <FLTVField>(dataSize); return(true);

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

            default: return(false);
            }
        }
コード例 #3
0
        public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize)
        {
            switch (type)
            {
            case "HEDR": HEDR = new HEDRField(r, 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);

            default: return(false);
            }
        }
コード例 #4
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);
            }
        }
コード例 #5
0
        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);
            }
        }
コード例 #6
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);
            }
        }
コード例 #7
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);
            }
        }
コード例 #8
0
        public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize)
        {
            //Console.WriteLine($"   {type}");
            if (!InFRMR && type == "FRMR")
            {
                InFRMR = true;
            }
            if (!InFRMR)
            {
                switch (type)
                {
                case "EDID":
                case "NAME": EDID = r.ReadSTRV(dataSize); return(true);

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

                case "DATA": DATA = r.ReadINTV(format == GameFormat.TES3 ? 4 : dataSize).ToUI16Field(); if (format == GameFormat.TES3)
                    {
                        goto case "XCLC";
                    }
                    return(true);

                case "XCLC": XCLC = r.ReadT <XCLCField>(format == GameFormat.TES3 ? 8 : dataSize); return(true);

                case "XCLL":
                case "AMBI": XCLL = r.ReadT <XCLLField>(dataSize); return(true);

                case "XCLW":
                case "WHGT": XCLW = r.ReadT <FLTVField>(dataSize); return(true);

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

                case "INTV": INTV = r.ReadINTV(dataSize); return(true);

                case "NAM5": NAM5 = r.ReadT <CREFField>(dataSize); return(true);

                // TES4
                case "XCLR":
                    XCLRs = new FMIDField <REGNRecord> [dataSize >> 2];
                    for (var i = 0; i < XCLRs.Length; i++)
                    {
                        XCLRs[i] = new FMIDField <REGNRecord>(r, 4);
                    }
                    return(true);

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

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

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

                case "XOWN": XOWNs.Add(new 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);

                default: return(false);
                }
            }
            // Referenced Object Data Grouping
            else
            {
                switch (type)
                {
                // RefObjDataGroup sub-records
                case "FRMR":
                    _lastRef      = new RefObj(); RefObjs.Add(_lastRef);
                    _lastRef.FRMR = r.ReadT <UI32Field>(dataSize); return(true);

                case "NAME": _lastRef.EDID = r.ReadSTRV(dataSize); return(true);

                case "XSCL": _lastRef.XSCL = r.ReadT <FLTVField>(dataSize); return(true);

                case "DODT": _lastRef.DODT = r.ReadT <RefObj.XYZAField>(dataSize); return(true);

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

                case "FLTV": _lastRef.FLTV = r.ReadT <FLTVField>(dataSize); return(true);

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

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

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

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

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

                case "INTV": _lastRef.INTV = r.ReadT <IN32Field>(dataSize); return(true);

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

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

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

                //
                case "CNAM": _lastRef.CNAM = r.ReadSTRV(dataSize); return(true);

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

                case "XCHG": _lastRef.XCHG = r.ReadT <IN32Field>(dataSize); return(true);

                case "INDX": _lastRef.INDX = r.ReadT <IN32Field>(dataSize); return(true);

                default: return(false);
                }
            }
        }