public DBCReader(string fileName) { if (!File.Exists(fileName)) { throw new FileNotFoundException("The required DBC file \"" + fileName + "\" was not found."); } this.m_fileName = fileName; using (FileStream fileStream = new FileStream(this.m_fileName, FileMode.Open, FileAccess.Read)) { using (BinaryReader binReader = new BinaryReader((Stream)fileStream)) { if (binReader.ReadUInt32() != 1128416343U) { throw new InvalidDataException("Not a (W)DBC file."); } this.m_recordCount = binReader.ReadInt32(); this.m_fieldCount = binReader.ReadInt32(); this.m_recordSize = binReader.ReadInt32(); int count = binReader.ReadInt32(); binReader.BaseStream.Position = binReader.BaseStream.Length - (long)count; byte[] stringTable = binReader.ReadBytes(count); using (this.converter = (DBCRecordConverter)Activator.CreateInstance <TConverter>()) { this.converter.Init(stringTable); this.InitReader(); this.MapRecords(binReader); } } } }
public override CharStartOutfit ConvertTo(byte[] rawData, ref int id) { id = DBCRecordConverter.GetInt32(rawData, 0); int currIndex = 0; CharStartOutfit outfit = default(CharStartOutfit); outfit.Id = DBCRecordConverter.GetUInt32(rawData, currIndex++); uint temp = DBCRecordConverter.GetUInt32(rawData, currIndex++); outfit.Race = (RaceId)(temp & 255u); outfit.Class = (ClassId)((temp & 65280u) >> 8); outfit.Gender = (GenderType)((temp & 16711680u) >> 16); for (int i = 0; i < 12; i++) { outfit.ItemIds[i] = DBCRecordConverter.GetUInt32(rawData, currIndex++); } currIndex += 12; for (int i = 0; i < 12; i++) { outfit.ItemSlots[i] = (InventorySlotType)DBCRecordConverter.GetUInt32(rawData, currIndex++); } return(outfit); }
public override ChatChannelEntry ConvertTo(byte[] rawData, ref int id) { id = DBCRecordConverter.GetInt32(rawData, 0); return(new ChatChannelEntry() { Id = DBCRecordConverter.GetUInt32(rawData, 0), ChannelFlags = (ChatChannelFlags)DBCRecordConverter.GetUInt32(rawData, 1) }); }
public string GetString(byte[] data, ClientLocale locale, int stringOffset) { int int32 = DBCRecordConverter.GetInt32(data, (int)(stringOffset + locale)); int num = 0; do { ; }while (this.m_stringTable[int32 + num++] != (byte)0); return(WCellConstants.DefaultEncoding.GetString(this.m_stringTable, int32, num - 1) ?? ""); }
protected static int CopyTo(byte[] bytes, object obj, int index) { foreach (MemberInfo member in obj.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public) .Cast <MemberInfo>() .Concat <MemberInfo>( (IEnumerable <MemberInfo>)obj.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public))) { if (!member.IsReadonly() && member.GetCustomAttributes(typeof(NotPersistentAttribute), true).Length <= 0) { object obj1 = Utility.ChangeType((object)DBCRecordConverter.GetInt32(bytes, index++), member.GetVariableType()); member.SetUnindexedValue(obj, obj1); } } return(index); }
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); } } } }