internal static EnumValue Read(IFieldReader reader) { var value1 = reader.ReadValueU32(); var value2 = reader.ReadValueU32(); return(new EnumValue(value1, value2)); }
internal static IdAndFloatValue Read(IFieldReader reader) { var value1 = reader.ReadValueU32(); var value2 = reader.ReadValueF32(); return(new IdAndFloatValue(value1, value2)); }
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(); } } }
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); }
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(); } } }
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(); } } }
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(); } } }
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(); } } }
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); }