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); } } } }
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); } } } }