internal void Read(FileReader reader) { reader.ByteOrder = Syroot.BinaryData.ByteOrder.LittleEndian; reader.CheckSignature("AAMP"); Version = reader.ReadUInt32(); Endianness = reader.ReadUInt32(); // reader.CheckByteOrderMark(Endianness); uint FileSize = reader.ReadUInt32(); ParameterIOVersion = reader.ReadUInt32(); uint ParameterIOOffset = reader.ReadUInt32(); uint ListCount = reader.ReadUInt32(); uint ObjectCount = reader.ReadUInt32(); uint ParamCount = reader.ReadUInt32(); uint DataSectionSize = reader.ReadUInt32(); uint StringSectionSize = reader.ReadUInt32(); uint UnkUintCount = reader.ReadUInt32(); long pos = reader.Position; ParameterIOType = reader.ReadString(Syroot.BinaryData.BinaryStringFormat.ZeroTerminated, Encoding.UTF8); reader.Seek(pos + ParameterIOOffset, SeekOrigin.Begin); RootNode = ParamListV2.Read(reader); }
internal static ParamList Read(FileReader reader) { ParamList entry = new ParamList(); long CurrentPosition = reader.Position; entry.Hash = reader.ReadUInt32(); ushort ChildListOffset = reader.ReadUInt16(); ushort ChildListCount = reader.ReadUInt16(); ushort ParamObjectOffset = reader.ReadUInt16(); ushort ParamObjectCount = reader.ReadUInt16(); entry.childParams = new ParamList[ChildListCount]; entry.paramObjects = new ParamObject[ParamObjectCount]; if (ChildListOffset != 0) { using (reader.TemporarySeek(ChildListOffset * 4 + CurrentPosition, SeekOrigin.Begin)) { for (int i = 0; i < ChildListCount; i++) { entry.childParams[i] = ParamListV2.Read(reader); } } } if (ParamObjectOffset != 0) { using (reader.TemporarySeek(ParamObjectOffset * 4 + CurrentPosition, SeekOrigin.Begin)) { for (int i = 0; i < ParamObjectCount; i++) { entry.paramObjects[i] = ParamObjectV2.Read(reader); } } } return(entry); }