diff --git a/Source/Game/Achievements/AchievementManager.cs b/Source/Game/Achievements/AchievementManager.cs index d3e692873..e55a0bfb3 100644 --- a/Source/Game/Achievements/AchievementManager.cs +++ b/Source/Game/Achievements/AchievementManager.cs @@ -602,7 +602,7 @@ namespace Game.Achievements return false; } - public override void SendCriteriaUpdate(Criteria criteria, CriteriaProgress progress, uint timeElapsed, bool timedCompleted) + public override void SendCriteriaUpdate(Criteria criteria, CriteriaProgress progress, TimeSpan timeElapsed, bool timedCompleted) { if (criteria.FlagsCu.HasAnyFlag(CriteriaFlagsCu.Account)) { @@ -615,7 +615,7 @@ namespace Game.Achievements criteriaUpdate.Progress.Flags = timedCompleted ? 1 : 0u; // 1 is for keeping the counter at 0 in client criteriaUpdate.Progress.Date = progress.Date; - criteriaUpdate.Progress.TimeFromStart = timeElapsed; + criteriaUpdate.Progress.TimeFromStart = (uint)timeElapsed.TotalSeconds; criteriaUpdate.Progress.TimeFromCreate = 0; SendPacket(criteriaUpdate); } @@ -631,7 +631,7 @@ namespace Game.Achievements criteriaUpdate.Flags = timedCompleted ? 1 : 0u; // 1 is for keeping the counter at 0 in client criteriaUpdate.CurrentTime = progress.Date; - criteriaUpdate.ElapsedTime = timeElapsed; + criteriaUpdate.ElapsedTime = (uint)timeElapsed.TotalSeconds; criteriaUpdate.CreationTime = 0; SendPacket(criteriaUpdate); @@ -1013,7 +1013,7 @@ namespace Game.Achievements UpdateCriteria(CriteriaTypes.EarnAchievementPoints, achievement.Points, 0, 0, null, referencePlayer); } - public override void SendCriteriaUpdate(Criteria entry, CriteriaProgress progress, uint timeElapsed, bool timedCompleted) + public override void SendCriteriaUpdate(Criteria entry, CriteriaProgress progress, TimeSpan timeElapsed, bool timedCompleted) { GuildCriteriaUpdate guildCriteriaUpdate = new(); diff --git a/Source/Game/Achievements/CriteriaHandler.cs b/Source/Game/Achievements/CriteriaHandler.cs index a7ac07b91..35e03da96 100644 --- a/Source/Game/Achievements/CriteriaHandler.cs +++ b/Source/Game/Achievements/CriteriaHandler.cs @@ -609,18 +609,18 @@ namespace Game.Achievements progress.PlayerGUID = referencePlayer ? referencePlayer.GetGUID() : ObjectGuid.Empty; _criteriaProgress[criteria.Id] = progress; - uint timeElapsed = 0; + TimeSpan timeElapsed = TimeSpan.Zero; if (criteria.Entry.StartTimer != 0) { Cypher.Assert(trees != null); foreach (CriteriaTree tree in trees) { - var timedIter = _timeCriteriaTrees.LookupByKey(tree.Id); - if (timedIter != 0) + var timed = _timeCriteriaTrees.LookupByKey(tree.Id); + if (timed != 0) { // Client expects this in packet - timeElapsed = criteria.Entry.StartTimer - (timedIter / Time.InMilliseconds); + timeElapsed = TimeSpan.FromSeconds(criteria.Entry.StartTimer - (timed / Time.InMilliseconds)); // Remove the timer, we wont need it anymore if (IsCompletedCriteriaTree(tree)) @@ -2590,7 +2590,7 @@ namespace Game.Achievements } public virtual void SendAllData(Player receiver) { } - public virtual void SendCriteriaUpdate(Criteria criteria, CriteriaProgress progress, uint timeElapsed, bool timedCompleted) { } + public virtual void SendCriteriaUpdate(Criteria criteria, CriteriaProgress progress, TimeSpan timeElapsed, bool timedCompleted) { } public virtual void SendCriteriaProgressRemoved(uint criteriaId) { } public virtual void CompletedCriteriaTree(CriteriaTree tree, Player referencePlayer) { } diff --git a/Source/Game/Quest/QuestObjectiveCriteriaManager.cs b/Source/Game/Quest/QuestObjectiveCriteriaManager.cs index 721c28542..7444ef31d 100644 --- a/Source/Game/Quest/QuestObjectiveCriteriaManager.cs +++ b/Source/Game/Quest/QuestObjectiveCriteriaManager.cs @@ -21,6 +21,7 @@ using Game.Achievements; using Game.Entities; using Game.Networking; using Game.Networking.Packets; +using System; using System.Collections.Generic; namespace Game @@ -240,7 +241,7 @@ namespace Game return _completedObjectives.Contains(questObjective.Id); } - public override void SendCriteriaUpdate(Criteria criteria, CriteriaProgress progress, uint timeElapsed, bool timedCompleted) + public override void SendCriteriaUpdate(Criteria criteria, CriteriaProgress progress, TimeSpan timeElapsed, bool timedCompleted) { CriteriaUpdate criteriaUpdate = new(); @@ -252,7 +253,7 @@ namespace Game criteriaUpdate.Flags = timedCompleted ? 1 : 0u; // 1 is for keeping the counter at 0 in client criteriaUpdate.CurrentTime = progress.Date; - criteriaUpdate.ElapsedTime = timeElapsed; + criteriaUpdate.ElapsedTime = (uint)timeElapsed.TotalSeconds; criteriaUpdate.CreationTime = 0; SendPacket(criteriaUpdate); diff --git a/Source/Game/Scenarios/Scenario.cs b/Source/Game/Scenarios/Scenario.cs index 4303eada9..bb27396f7 100644 --- a/Source/Game/Scenarios/Scenario.cs +++ b/Source/Game/Scenarios/Scenario.cs @@ -21,6 +21,7 @@ using Game.DataStorage; using Game.Entities; using Game.Networking; using Game.Networking.Packets; +using System; using System.Collections.Generic; namespace Game.Scenarios @@ -153,7 +154,7 @@ namespace Game.Scenarios return _stepStates[step]; } - public override void SendCriteriaUpdate(Criteria criteria, CriteriaProgress progress, uint timeElapsed, bool timedCompleted) + public override void SendCriteriaUpdate(Criteria criteria, CriteriaProgress progress, TimeSpan timeElapsed, bool timedCompleted) { ScenarioProgressUpdate progressUpdate = new(); progressUpdate.CriteriaProgress.Id = criteria.Id; @@ -163,7 +164,7 @@ namespace Game.Scenarios if (criteria.Entry.StartTimer != 0) progressUpdate.CriteriaProgress.Flags = timedCompleted ? 1 : 0u; - progressUpdate.CriteriaProgress.TimeFromStart = timeElapsed; + progressUpdate.CriteriaProgress.TimeFromStart = (uint)timeElapsed.TotalSeconds; progressUpdate.CriteriaProgress.TimeFromCreate = 0; SendPacket(progressUpdate);