Example #1
0
 public static void LoadRealmFirstAchievements()
 {
     foreach (AchievementRecord achievementRecord in AchievementRecord.Load(AchievementMgr.AchievementEntries
                                                                            .Values
                                                                            .Where <AchievementEntry
                                                                                    >((Func <AchievementEntry, bool>)(achievementEntry => achievementEntry.IsRealmFirstType()))
                                                                            .Select <AchievementEntry, uint>(
                                                                                (Func <AchievementEntry, uint>)(achievementEntry => achievementEntry.ID)).ToArray <uint>()))
     {
         AchievementMgr.CompletedRealmFirstAchievements.Add(achievementRecord.AchievementEntryId);
     }
 }
Example #2
0
        public static void LoadRealmFirstAchievements()
        {
            var allRealmFirstRecords = (from achievementEntry in AchievementEntries.Values
                                        where achievementEntry.IsRealmFirstType()
                                        select achievementEntry.ID).ToArray();

            var completedAchievements = AchievementRecord.Load(allRealmFirstRecords);

            foreach (var completedAchievement in completedAchievements)
            {
                CompletedRealmFirstAchievements.Add(completedAchievement.AchievementEntryId);
            }
        }
Example #3
0
        public void Load()
        {
            foreach (var mCompletedAchievement in AchievementRecord.Load((int)Owner.EntityId.Low))
            {
                var achievement = AchievementMgr.GetAchievementEntry(mCompletedAchievement.AchievementEntryId);
                if (achievement != null)
                {
                    if (m_completedAchievements.ContainsKey(achievement.ID))
                    {
                        log.Warn("Character {0} had Achievement {1} more than once.", m_owner, achievement.ID);
                    }
                    else
                    {
                        AddAchievement(mCompletedAchievement);
                    }
                }
                else
                {
                    log.Warn("Character {0} has invalid Achievement: {1}", m_owner, mCompletedAchievement.AchievementEntryId);
                }
            }

            foreach (var achievementProgress in AchievementProgressRecord.Load((int)Owner.EntityId.Low))
            {
                // how to check if there's no criteria
                //if (achievement != null)
                {
                    if (m_progressRecords.ContainsKey(achievementProgress.AchievementCriteriaId))
                    {
                        log.Warn("Character {0} had progress for Achievement Criteria {1} more than once.", m_owner, achievementProgress.AchievementCriteriaId);
                    }
                    else
                    {
                        AddProgressRecord(achievementProgress);
                    }
                }
                //else
                //{
                //    log.Warn("Character {0} has invalid Achievement: {1}", m_owner, achivementProgress.AchievementCriteriaId);
                //}
            }
        }
Example #4
0
 /// <summary>
 /// Adds a new achievement to the list, when achievement is earned.
 /// </summary>
 /// <param name="achievementEntry"></param>
 public void EarnAchievement(AchievementEntry achievement)
 {
     this.AddAchievement(AchievementRecord.CreateNewAchievementRecord(this.m_owner, achievement.ID));
     this.CheckPossibleAchievementUpdates(AchievementCriteriaType.CompleteAchievement, achievement.ID, 1U,
                                          (Unit)null);
     this.RemoveAchievementProgress(achievement);
     foreach (AchievementReward reward in achievement.Rewards)
     {
         reward.GiveReward(this.Owner);
     }
     if (this.m_owner.IsInGuild)
     {
         this.m_owner.Guild.Broadcast(
             AchievementHandler.CreateAchievementEarnedToGuild(achievement.ID, this.m_owner));
     }
     if (achievement.IsRealmFirstType())
     {
         AchievementHandler.SendServerFirstAchievement(achievement.ID, this.m_owner);
     }
     AchievementHandler.SendAchievementEarned(achievement.ID, this.m_owner);
 }
Example #5
0
        public void Load()
        {
            foreach (AchievementRecord achievementRecord in AchievementRecord.Load((int)this.Owner.EntityId.Low))
            {
                AchievementEntry achievementEntry =
                    AchievementMgr.GetAchievementEntry(achievementRecord.AchievementEntryId);
                if (achievementEntry != null)
                {
                    if (this.m_completedAchievements.ContainsKey(achievementEntry.ID))
                    {
                        AchievementCollection.log.Warn("Character {0} had Achievement {1} more than once.",
                                                       (object)this.m_owner, (object)achievementEntry.ID);
                    }
                    else
                    {
                        this.AddAchievement(achievementRecord);
                    }
                }
                else
                {
                    AchievementCollection.log.Warn("Character {0} has invalid Achievement: {1}", (object)this.m_owner,
                                                   (object)achievementRecord.AchievementEntryId);
                }
            }

            foreach (AchievementProgressRecord achievementProgressRecord in AchievementProgressRecord.Load(
                         (int)this.Owner.EntityId.Low))
            {
                if (this.m_progressRecords.ContainsKey(achievementProgressRecord.AchievementCriteriaId))
                {
                    AchievementCollection.log.Warn(
                        "Character {0} had progress for Achievement Criteria {1} more than once.",
                        (object)this.m_owner, (object)achievementProgressRecord.AchievementCriteriaId);
                }
                else
                {
                    this.AddProgressRecord(achievementProgressRecord);
                }
            }
        }
Example #6
0
        /// <summary>
        /// Adds a new achievement to the list, when achievement is earned.
        /// </summary>
        /// <param name="achievementEntry"></param>
        public void EarnAchievement(AchievementEntry achievement)
        {
            AddAchievement(AchievementRecord.CreateNewAchievementRecord(m_owner, achievement.ID));
            CheckPossibleAchievementUpdates(AchievementCriteriaType.CompleteAchievement, (uint)achievement.ID, 1);
            RemoveAchievementProgress(achievement);

            foreach (var achievementReward in achievement.Rewards)
            {
                achievementReward.GiveReward(Owner);
            }

            if (m_owner.IsInGuild)
            {
                m_owner.Guild.Broadcast(AchievementHandler.CreateAchievementEarnedToGuild(achievement.ID, m_owner));
            }

            if (achievement.IsRealmFirstType())
            {
                AchievementHandler.SendServerFirstAchievement(achievement.ID, m_owner);
            }

            AchievementHandler.SendAchievementEarned(achievement.ID, m_owner);
        }
Example #7
0
 /// <summary>
 /// Removes achievement from the player.
 /// </summary>
 /// <param name="achievementRecord"></param>
 public void RemoveAchievement(AchievementRecord achievementRecord)
 {
     m_completedAchievements.Remove(achievementRecord.AchievementEntryId);
 }
Example #8
0
 /// <summary>
 /// Adds a new achievement to the list.
 /// </summary>
 /// <param name="achievementRecord"></param>
 public void AddAchievement(AchievementRecord achievementRecord)
 {
     m_completedAchievements.Add(achievementRecord.AchievementEntryId, achievementRecord);
 }