Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }