Пример #1
0
        internal static EnumValue Read(IFieldReader reader)
        {
            var value1 = reader.ReadValueU32();
            var value2 = reader.ReadValueU32();

            return(new EnumValue(value1, value2));
        }
Пример #2
0
        internal static IdAndFloatValue Read(IFieldReader reader)
        {
            var value1 = reader.ReadValueU32();
            var value2 = reader.ReadValueF32();

            return(new IdAndFloatValue(value1, value2));
        }
Пример #3
0
        internal override void ReadField(uint type, IFieldReader reader)
        {
            var size = reader.Size;

            switch ((FieldType)type)
            {
            case FieldType.EDID:
            {
                this.MarkField(0);
                this._EditorId = reader.ReadString(size);
                break;
            }

            case FieldType.FULL:
            {
                this.MarkField(1);
                this._FullName = reader.ReadLocalizedString();
                break;
            }

            case FieldType.LNAM:
            {
                this._Ids.Add(reader.ReadValueU32());
                break;
            }

            default:
            {
                throw new NotSupportedException();
            }
            }
        }
Пример #4
0
        internal static ConditionData Read(IFieldReader reader)
        {
            ConditionData instance;

            instance.Unknown00 = reader.ReadValueU8();
            reader.SkipBytes(3);
            instance.Unknown04 = reader.ReadValueU32();
            instance.Unknown08 = reader.ReadValueU16();
            reader.SkipBytes(2);
            instance.Unknown0C = reader.ReadValueU32();
            instance.Unknown10 = reader.ReadValueU32();
            instance.Unknown14 = reader.ReadValueU8();
            reader.SkipBytes(3);
            instance.Unknown18 = reader.ReadValueU32();
            instance.Unknown1C = reader.ReadValueU32();
            return(instance);
        }
Пример #5
0
        internal override void ReadField(uint type, IFieldReader reader)
        {
            var size = reader.Size;

            switch ((FieldType)type)
            {
            case FieldType.EDID:
            {
                this.MarkField(0);
                this._EditorId = reader.ReadString(size);
                break;
            }

            case FieldType.BNAM:
            {
                this._BaseNames.Add(reader.ReadString(260));
                break;
            }

            case FieldType.SNAM:
            {
                this._SwapNames.Add(reader.ReadString(260));
                break;
            }

            case FieldType.FNAM:
            {
                this._FNAM.Add(reader.ReadString(260));
                break;
            }

            case FieldType.CNAM:
            {
                this._CNAM.Add(reader.ReadValueU32());
                break;
            }
            }
        }
        internal override void ReadField(uint type, IFieldReader reader)
        {
            var size = reader.Size;

            switch ((FieldType)type)
            {
            case FieldType.EDID:
            {
                this.MarkField(0);
                this._EditorId = reader.ReadString(size);
                break;
            }

            case FieldType.FULL:
            {
                this.MarkField(1);
                this._FullName = reader.ReadLocalizedString();
                break;
            }

            case FieldType.DESC:
            {
                this.MarkField(2);
                this._Description = reader.ReadLocalizedString();
                break;
            }

            case FieldType.MODL:
            {
                this.MarkField(3);
                break;
            }

            case FieldType.MODT:
            {
                this.MarkField(4);
                break;
            }

            case FieldType.DATA:
            {
                this.MarkField(5);
                this._Data = reader.ReadObject <ObjectMod.Data>();
                break;
            }

            case FieldType.MNAM:
            {
                this.MarkField(6);
                Debug.Assert(size > 0 && (size % 4) == 0);
                var keywordIds = new uint[size / 4];
                for (int i = 0; i < keywordIds.Length; i++)
                {
                    keywordIds[i] = reader.ReadValueU32();
                }
                this._KeywordIds.Clear();
                this._KeywordIds.AddRange(keywordIds);
                break;
            }

            case FieldType.LNAM:
            {
                this.MarkField(7);
                Debug.Assert(size == 4);
                this._LNAM = reader.ReadValueU32();
                break;
            }

            case FieldType.NAM1:
            {
                this.MarkField(8);
                break;
            }

            case FieldType.FLTR:
            {
                this.MarkField(9);
                this._EditorFilter = reader.ReadString(260);
                break;
            }

            case FieldType.FNAM:
            {
                this.MarkField(10);
                break;
            }

            case FieldType.MODS:
            {
                this.MarkField(11);
                break;
            }

            default:
            {
                throw new NotSupportedException();
            }
            }
        }
Пример #7
0
        internal override void ReadField(uint type, IFieldReader reader)
        {
            var size = reader.Size;

            switch ((FieldType)type)
            {
            case FieldType.EDID:
            {
                this.MarkField(0);
                this._EditorId = reader.ReadString(size);
                break;
            }

            case FieldType.FULL:
            {
                this.MarkField(1);
                this._FullName = reader.ReadLocalizedString();
                break;
            }

            case FieldType.DESC:
            {
                this.MarkField(2);
                this._Description = reader.ReadLocalizedString();
                break;
            }

            case FieldType.OBND:
            {
                this.MarkField(3);
                Debug.Assert(size == 12);
                break;
            }

            case FieldType.MODL:
            {
                this.MarkField(4);
                this._Model = reader.ReadString(0);
                break;
            }

            case FieldType.MODT:
            {
                this.MarkField(5);
                break;
            }

            case FieldType.DNAM:
            {
                this.MarkField(6);
                Debug.Assert((reader.Version >= 107 && size == 16) || (reader.Version < 107 && size == 8));

                var value1 = reader.ReadValueF32();
                var value2 = reader.ReadValueU32();
                if (reader.Version >= 107)
                {
                    var value3 = reader.ReadValueF32();
                    var value4 = reader.ReadValueF32();
                }
                else
                {
                }

                break;
            }

            case FieldType.MNAM:
            {
                this.MarkField(7);
                Debug.Assert(size == 1040);
                break;
            }

            case FieldType.PRPS:
            {
                this.MarkField(8);
                //Assert(size == 8);
                break;
            }

            case FieldType.PTRN:
            {
                this.MarkField(9);
                Debug.Assert(size == 4);
                break;
            }

            case FieldType.MODS:
            {
                this.MarkField(10);
                Debug.Assert(size == 4);
                break;
            }

            case FieldType.NVNM:
            {
                this.MarkField(11);
                //Assert(size == 720);
                break;
            }

            case FieldType.MODC:
            {
                this.MarkField(12);
                Debug.Assert(size == 4);
                break;
            }

            case FieldType.VMAD:
            {
                this.MarkField(13);
                Debug.Assert(size == 36);
                break;
            }

            case FieldType.FTYP:
            {
                this.MarkField(14);
                Debug.Assert(size == 4);
                break;
            }

            default:
            {
                throw new NotSupportedException();
            }
            }
        }
Пример #8
0
        internal override void ReadField(uint type, IFieldReader reader)
        {
            var size = reader.Size;

            switch ((FieldType)type)
            {
            case FieldType.EDID:
            {
                this.MarkField(0);
                this._EditorId = reader.ReadString(size);
                break;
            }

            case FieldType.FULL:
            {
                this._FullName = reader.ReadLocalizedString();
                break;
            }

            case FieldType.CNAM:
            {
                this.MarkField(2);
                Debug.Assert(size == 4);
                this._CNAM = reader.ReadValueU32();
                break;
            }

            case FieldType.TNAM:
            {
                this.MarkField(3);
                Debug.Assert(size == 4);
                this._TNAM = reader.ReadValueU32();
                break;
            }

            case FieldType.DNAM:
            {
                this.MarkField(4);
                this._DNAM = reader.ReadString(0);
                break;
            }

            case FieldType.DATA:
            {
                this.MarkField(5);
                Debug.Assert(size == 4);
                this._DATA = reader.ReadValueU32();
                break;
            }

            case FieldType.NNAM:
            {
                this.MarkField(6);
                this._NNAM = reader.ReadString(260);
                break;
            }

            default:
            {
                throw new NotSupportedException();
            }
            }
        }
Пример #9
0
 internal override void Read(IFieldReader reader)
 {
     this.Version      = reader.ReadValueF32();
     this.RecordCount  = reader.ReadValueS32();
     this.NextRecordId = reader.ReadValueU32();
 }
        internal override void ReadField(uint type, IFieldReader reader)
        {
            var size = reader.Size;

            switch ((FieldType)type)
            {
            case FieldType.EDID:
            {
                this.MarkField(0);
                this._EditorId = reader.ReadString(size);
                break;
            }

            case FieldType.DESC:
            {
                this.MarkField(1);
                this._Description = reader.ReadLocalizedString();
                break;
            }

            case FieldType.FVPA:
            {
                this.MarkField(2);
                Debug.Assert(size > 0 && (size % 8) == 0);
                var ingredients = new Ingredient[size / 8];
                for (int i = 0; i < ingredients.Length; i++)
                {
                    var inputId  = reader.ReadValueU32();
                    var quantity = reader.ReadValueS32();
                    ingredients[i] = new Ingredient(inputId, quantity);
                }
                this._Ingredients.Clear();
                this._Ingredients.AddRange(ingredients);
                break;
            }

            case FieldType.CTDA:
            {
                Debug.Assert(size == 32);
                this._Conditions.Add(ConditionData.Read(reader));
                break;
            }

            case FieldType.CNAM:
            {
                this.MarkField(4);
                Debug.Assert(size == 4);
                this._OutputId = reader.ReadValueU32();
                break;
            }

            case FieldType.INTV:
            {
                this.MarkField(5);
                if (size == 4)
                {
                    this._OutputCount = reader.ReadValueU32();
                }
                else if (size == 2)
                {
                    this._OutputCount = reader.ReadValueU16();
                }
                else
                {
                    throw new FormatException();
                }
                break;
            }

            case FieldType.BNAM:
            {
                this.MarkField(6);
                Debug.Assert(size == 4);
                this._BenchKeywordId = reader.ReadValueU32();
                break;
            }

            case FieldType.FNAM:
            {
                this.MarkField(7);
                Debug.Assert(size > 0 && (size % 4) == 0);
                var ids = new uint[size / 4];
                for (int i = 0; i < ids.Length; i++)
                {
                    ids[i] = reader.ReadValueU32();
                }
                this._FilterKeywordIds.Clear();
                this._FilterKeywordIds.AddRange(ids);
                break;
            }

            case FieldType.YNAM:
            {
                this.MarkField(8);
                Debug.Assert(size == 4);
                this._PickupSoundId = reader.ReadValueU32();
                break;
            }

            case FieldType.ZNAM:
            {
                this.MarkField(9);
                Debug.Assert(size == 4);
                this._PutdownSoundId = reader.ReadValueU32();
                break;
            }

            case FieldType.ANAM:
            {
                this.MarkField(11);
                Debug.Assert(size == 4);
                this._ArtId = reader.ReadValueU32();
                break;
            }

            case FieldType.NAM1:
            case FieldType.NAM2:
            case FieldType.NAM3:
            {
                // deprecated
                break;
            }

            default:
            {
                throw new NotSupportedException();
            }
            }
        }
Пример #11
0
        internal override void Read(IFieldReader reader)
        {
            if (reader.Version < 53)
            {
                reader.SkipBytes(4);
            }

            var includeCount  = reader.Version >= 48 ? reader.ReadValueU32() : 0;
            var propertyCount = reader.Version >= 48 ? reader.ReadValueU32() : 0;

            if (reader.Version < 52)
            {
                reader.SkipBytes(4);
            }

            this._Unknown1B  = reader.Version >= 48 && reader.ReadValueB8();
            this._Unknown1C  = reader.Version >= 48 && reader.ReadValueB8();
            this._ObjectType = reader.Version >= 63
                                  ? (FormType)reader.ReadValueU32()
                                  : (reader.Version >= 53
                                         ? FormTypes.GetTypeFromIndex(reader.ReadValueU8())
                                         : FormType.WEAP);

            this._Unknown19 = reader.Version >= 90 ? reader.ReadValueU8() : (byte)0;
            this._Unknown1A = reader.Version >= 107 ? reader.ReadValueU8() : (byte)0;
            this._KeywordId = reader.ReadValueU32();

            var keywordCount = reader.ReadValueU32();
            var keywordIds   = new uint[keywordCount];

            for (uint i = 0; i < keywordCount; i++)
            {
                keywordIds[i] = reader.ReadValueU32();
            }
            this._KeywordIds.Clear();
            this._KeywordIds.AddRange(keywordIds);

            this._Unknown98.Clear();
            if (reader.Version >= 57)
            {
                var count3 = reader.ReadValueU32();
                var items  = new Tuple <uint, uint> [count3];
                for (int i = 0; i < count3; i++)
                {
                    var item1 = reader.ReadValueU32();
                    var item2 = reader.ReadValueU32();
                    items[i] = new Tuple <uint, uint>(item1, item2);
                }
                this._Unknown98.AddRange(items);
            }

            var includes = new Tuple <uint, byte, bool, bool> [includeCount];

            for (int i = 0; i < includeCount; i++)
            {
                var unknown17 = reader.ReadValueU32();
                var unknown18 = reader.Version >= 49 ? reader.ReadValueU8() : (byte)0;
                var unknown19 = reader.Version < 49 || reader.ReadValueB8();
                var unknown20 = reader.Version < 49 || reader.ReadValueB8();
                includes[i] = new Tuple <uint, byte, bool, bool>(unknown17, unknown18, unknown19, unknown20);
            }
            this._Includes.Clear();
            this._Includes.AddRange(includes);

            var properties = new Property[propertyCount];

            for (int i = 0; i < propertyCount; i++)
            {
                properties[i] = Property.Read(reader);
            }
            this._Properties.Clear();
            this._Properties.AddRange(properties);
        }