Beispiel #1
0
 public DBCReader(string fileName)
 {
     if (!File.Exists(fileName))
     {
         throw new FileNotFoundException("The required DBC file \"" + fileName + "\" was not found.");
     }
     m_fileName = fileName;
     using (FileStream fileStream = new FileStream(m_fileName, FileMode.Open, FileAccess.Read))
     {
         using (BinaryReader binReader = new BinaryReader(fileStream))
         {
             if (binReader.ReadUInt32() != 1128416343U)
             {
                 throw new InvalidDataException("Not a (W)DBC file.");
             }
             m_recordCount = binReader.ReadInt32();
             m_fieldCount  = binReader.ReadInt32();
             m_recordSize  = binReader.ReadInt32();
             int count = binReader.ReadInt32();
             binReader.BaseStream.Position = binReader.BaseStream.Length - count;
             byte[] stringTable = binReader.ReadBytes(count);
             using (converter = Activator.CreateInstance <TConverter>())
             {
                 converter.Init(stringTable);
                 InitReader();
                 MapRecords(binReader);
             }
         }
     }
 }
Beispiel #2
0
        public DBCReader(string fileName)
        {
            if (!File.Exists(fileName))
            {
                throw new FileNotFoundException("The required DBC file \"" + fileName + "\" was not found.");
            }

            m_fileName = fileName;

            using (var fileStream = new FileStream(m_fileName, FileMode.Open, FileAccess.Read))
            {
                using (var binReader = new BinaryReader(fileStream))
                {
                    if (binReader.ReadUInt32() != DBCHeader)
                    {
                        throw new InvalidDataException("Not a (W)DBC file.");
                    }

                    m_recordCount = binReader.ReadInt32();
                    m_fieldCount  = binReader.ReadInt32();
                    m_recordSize  = binReader.ReadInt32();
                    var stringTableSize = binReader.ReadInt32();

                    binReader.BaseStream.Position = binReader.BaseStream.Length - stringTableSize;

                    var stringTable = binReader.ReadBytes(stringTableSize);

                    using (converter = new TConverter())
                    {
                        converter.Init(stringTable);
                        InitReader();
                        MapRecords(binReader);
                    }
                }
            }
        }