public override void Convert(byte[] rawData) { var criteriaType = (AchievementCriteriaType)GetUInt32(rawData, 2); var creator = AchievementMgr.GetCriteriaEntryCreator(criteriaType); if (creator == null) { // unknown type return; } var entry = creator(); entry.AchievementCriteriaId = GetUInt32(rawData, 0); entry.AchievementEntryId = GetUInt32(rawData, 1); var achievement = entry.AchievementEntry; if (achievement == null) { // invalid criteria does not belong to any entry return; } // add criterion to achievement achievement.Criteria.Add(entry); CopyTo(rawData, entry, 3); entry.CompletionFlag = GetUInt32(rawData, 26); entry.GroupFlag = (AchievementCriteriaGroupFlags)GetUInt32(rawData, 27); entry.TimeLimit = GetUInt32(rawData, 29); // add to critera map var list = AchievementMgr.GetCriteriaEntriesByType(criteriaType); if (list != null) { list.Add(entry); } // create requirement set entry.RequirementSet = new AchievementCriteriaRequirementSet(entry.AchievementCriteriaId); AchievementMgr.CriteriaEntriesById[entry.AchievementCriteriaId] = entry; }
public override void Convert(byte[] rawData) { AchievementCriteriaType uint32 = (AchievementCriteriaType)DBCRecordConverter.GetUInt32(rawData, 2); AchievementCriteriaEntryCreator criteriaEntryCreator = AchievementMgr.GetCriteriaEntryCreator(uint32); if (criteriaEntryCreator == null) { return; } AchievementCriteriaEntry achievementCriteriaEntry = criteriaEntryCreator(); achievementCriteriaEntry.AchievementCriteriaId = DBCRecordConverter.GetUInt32(rawData, 0); achievementCriteriaEntry.AchievementEntryId = DBCRecordConverter.GetUInt32(rawData, 1); AchievementEntry achievementEntry = achievementCriteriaEntry.AchievementEntry; if (achievementEntry == null) { return; } achievementEntry.Criteria.Add(achievementCriteriaEntry); DBCRecordConverter.CopyTo(rawData, (object)achievementCriteriaEntry, 3); achievementCriteriaEntry.CompletionFlag = DBCRecordConverter.GetUInt32(rawData, 26); achievementCriteriaEntry.GroupFlag = (AchievementCriteriaGroupFlags)DBCRecordConverter.GetUInt32(rawData, 27); achievementCriteriaEntry.TimeLimit = DBCRecordConverter.GetUInt32(rawData, 29); List <AchievementCriteriaEntry> criteriaEntriesByType = AchievementMgr.GetCriteriaEntriesByType(uint32); if (criteriaEntriesByType != null) { criteriaEntriesByType.Add(achievementCriteriaEntry); } achievementCriteriaEntry.RequirementSet = new AchievementCriteriaRequirementSet(achievementCriteriaEntry.AchievementCriteriaId); AchievementMgr.CriteriaEntriesById[achievementCriteriaEntry.AchievementCriteriaId] = achievementCriteriaEntry; }