Example #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;
        }
Example #2
0
        /// <summary>
        /// A method that will try to update the progress of all the related criterias.
        /// </summary>
        /// <param name="type">The Criteria Type.</param>
        /// <param name="value1"></param>
        /// <param name="value2"></param>
        /// <param name="involved"></param>
        internal void CheckPossibleAchievementUpdates(AchievementCriteriaType type, uint value1 = 0u, uint value2 = 0u, Unit involved = null)
        {
            // Get all the related criterions.
            var list = AchievementMgr.GetCriteriaEntriesByType(type);

            if (list != null)
            {
                foreach (var entry in list)
                {
                    if (IsAchieveable(entry))
                    {
                        if (entry.RequirementSet == null || entry.RequirementSet.Meets(Owner, involved, value1))
                        {
                            entry.OnUpdate(this, value1, value2, involved);
                        }
                    }
                }
            }
        }
Example #3
0
        /// <summary>
        /// A method that will try to update the progress of all the related criterias.
        /// </summary>
        /// <param name="type">The Criteria Type.</param>
        /// <param name="value1"></param>
        /// <param name="value2"></param>
        /// <param name="involved"></param>
        internal void CheckPossibleAchievementUpdates(AchievementCriteriaType type, uint value1 = 0, uint value2 = 0,
                                                      Unit involved = null)
        {
            List <AchievementCriteriaEntry> criteriaEntriesByType = AchievementMgr.GetCriteriaEntriesByType(type);

            if (criteriaEntriesByType == null)
            {
                return;
            }
            foreach (AchievementCriteriaEntry achievementCriteriaEntry in criteriaEntriesByType)
            {
                if (this.IsAchieveable(achievementCriteriaEntry) &&
                    (achievementCriteriaEntry.RequirementSet == null ||
                     achievementCriteriaEntry.RequirementSet.Meets(this.Owner, involved, value1)))
                {
                    achievementCriteriaEntry.OnUpdate(this, value1, value2, (ObjectBase)involved);
                }
            }
        }
Example #4
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;
        }