Ejemplo n.º 1
0
        public void Read(Stream stream)
        {
            using (var reader = new BinaryReader(stream))
            {
                FileID     = reader.ReadUInt32();
                this.List1 = ReadList(reader, false);
                this.List2 = ReadList(reader, false);
                this.List3 = ReadList(reader, true);

                var numStrings = reader.ReadUInt32();
                this.Strings = new List <StringTableEntry>();
                for (var i = 0; i < numStrings; i++)
                {
                    var stringEntry = new StringTableEntry();
                    stringEntry.ID       = reader.ReadUInt32();
                    stringEntry.Value    = ReadNullTerminatedString(reader);
                    stringEntry.Category = (StringTableType)reader.ReadByte();
                    this.Strings.Add(stringEntry);
                }
            }
            Activate();
        }
Ejemplo n.º 2
0
        public void Read(Stream stream)
        {
            using (var reader = new BinaryReader(stream))
            {
                var fileID = reader.ReadUInt32();
                this.List1 = ReadList(reader, false);
                this.List2 = ReadList(reader, false);
                this.List3 = ReadList(reader, true);

                var numStrings = reader.ReadUInt32();
                this.Strings = new List <StringTableEntry>();
                for (var i = 0; i < numStrings; i++)
                {
                    var stringEntry = new StringTableEntry();
                    stringEntry.ID      = reader.ReadUInt32();
                    stringEntry.Value   = ReadNullTerminatedString(reader);
                    stringEntry.Unknown = reader.ReadByte();
                    this.Strings.Add(stringEntry);
                }
            }

            var Structs        = new List <Struct>();
            var DerivedStructs = new List <DerivedStruct>();


            foreach (var item in List1)
            {
                var fields = new List <StructField>();

                foreach (var field in item.Entries)
                {
                    if (field.TypeStringID == 0xA99AF3AC)
                    {
                        Console.WriteLine("unknown value: " + GetString(item.NameStringID) + "::" + GetString(field.NameStringID));
                    }
                    fields.Add(new StructField {
                        ID             = field.NameStringID,
                        Name           = GetString(field.NameStringID),
                        TypeID         = field.TypeStringID,
                        Classification = (StructFieldClassification)field.Unknonw,
                        ParentID       = item.NameStringID
                    });
                }

                Structs.Add(new Struct {
                    ID     = item.NameStringID,
                    Name   = GetString(item.NameStringID),
                    Fields = fields.ToArray()
                });
            }

            foreach (var item in List2)
            {
                var fields = new List <StructField>();

                foreach (var field in item.Entries)
                {
                    if (field.TypeStringID == 0xA99AF3AC)
                    {
                        Console.WriteLine("unknown value: " + GetString(item.NameStringID) + "::" + GetString(field.NameStringID));
                    }
                    fields.Add(new StructField
                    {
                        ID             = field.NameStringID,
                        Name           = GetString(field.NameStringID),
                        TypeID         = field.TypeStringID,
                        Classification = (StructFieldClassification)field.Unknonw,
                        ParentID       = item.NameStringID
                    });
                }

                Structs.Add(new Struct
                {
                    ID     = item.NameStringID,
                    Name   = GetString(item.NameStringID),
                    Fields = fields.ToArray()
                });
            }

            foreach (var item in List3)
            {
                var fields = new List <DerivedStructFieldMask>();

                foreach (var field in item.Entries)
                {
                    if (field.TypeStringID == 0xA99AF3AC)
                    {
                        Console.WriteLine("unknown value: " + GetString(item.NameStringID) + "::" + GetString(field.NameStringID));
                    }
                    fields.Add(new DerivedStructFieldMask
                    {
                        ID   = field.NameStringID,
                        Name = GetString(field.NameStringID),
                        Type = (DerivedStructFieldMaskType)field.Unknonw
                    });
                }

                DerivedStructs.Add(new DerivedStruct
                {
                    ID         = item.NameStringID,
                    Parent     = item.ParentStringID,
                    Name       = GetString(item.NameStringID),
                    FieldMasks = fields.ToArray()
                });
            }

            this.Structs        = Structs.ToArray();
            this.DerivedStructs = DerivedStructs.ToArray();

            foreach (var _struct in Structs)
            {
                StructsByName.Add(_struct.Name, _struct);
            }
        }