示例#1
0
        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;
        }
示例#2
0
        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;
        }