Beispiel #1
0
        public ulong Read(AssetsFileReader reader, ulong filePos, int version)
        {
            classId   = reader.ReadInt32();
            baseClass = reader.ReadInt32();
            name      = new ClassDatabaseFileString();
            name.Read(reader, reader.Position);
            uint fieldCount = reader.ReadUInt32();

            fields = new List <ClassDatabaseTypeField>();
            for (int i = 0; i < fieldCount; i++)
            {
                ClassDatabaseTypeField cdtf = new ClassDatabaseTypeField();
                cdtf.Read(reader, filePos, version);
                fields.Add(cdtf);
            }
            return(reader.Position);
        }
        public void Read(AssetsFileReader reader, int version, byte flags)
        {
            classId   = reader.ReadInt32();
            baseClass = reader.ReadInt32();
            name      = new ClassDatabaseFileString();
            name.Read(reader);
            if ((flags & 1) != 0)
            {
                assemblyFileName = new ClassDatabaseFileString();
                assemblyFileName.Read(reader);
            }
            uint fieldCount = reader.ReadUInt32();

            fields = new List <ClassDatabaseTypeField>();
            for (int i = 0; i < fieldCount; i++)
            {
                ClassDatabaseTypeField cdtf = new ClassDatabaseTypeField();
                cdtf.Read(reader, version);
                fields.Add(cdtf);
            }
        }
Beispiel #3
0
        private void AddStringTableEntry(ClassDatabaseFile cldb, StringBuilder strTable, Dictionary <string, uint> strMap, ref ClassDatabaseFileString str)
        {
            string stringValue = str.GetString(cldb);

            if (strTable != null)
            {
                //search for string first and use that index if possible
                if (!strMap.ContainsKey(stringValue))
                {
                    strMap[stringValue] = (uint)strTable.Length;
                    strTable.Append(stringValue + '\0');
                }
                str.str.stringTableOffset = strMap[stringValue];
            }
            else
            {
                //always add string
                str.str.stringTableOffset = (uint)strTable.Length;
                strTable.Append(stringValue + '\0');
            }
        }
Beispiel #4
0
        private void AddStringTableEntry(StringBuilder strTable, Dictionary <string, uint> strMap, ref ClassDatabaseFileString str)
        {
            string stringValue = str.GetString(this);

            if (!strMap.ContainsKey(stringValue))
            {
                strMap[stringValue] = (uint)strTable.Length;
                strTable.Append(stringValue + '\0');
            }
            str.str.stringTableOffset = strMap[stringValue];
        }