diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-11-21 12:25:22 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-11-21 12:25:22 +0100 |
commit | b888b1b09f71a8b8b4a9d45c804a1f164fb65ac3 (patch) | |
tree | ba507c4c1c5e8487bd223afbde44ecf9eeac162e /src/server/game/Conditions/ConditionMgr.cpp | |
parent | 8c072b93af3a4efcbde21cc85fedcf7fa48fa7b4 (diff) |
Core/Calendar: Implement different timezone support for ingame calendar
Closes #8390
Closes #29427
Diffstat (limited to 'src/server/game/Conditions/ConditionMgr.cpp')
-rw-r--r-- | src/server/game/Conditions/ConditionMgr.cpp | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 40a3f78bab0..d0c4b1a3e7d 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -19,12 +19,12 @@ #include "AchievementMgr.h" #include "AreaTrigger.h" #include "AreaTriggerDataStore.h" -#include "Battleground.h" #include "BattlePetMgr.h" +#include "Battleground.h" #include "Containers.h" #include "ConversationDataStore.h" -#include "DatabaseEnv.h" #include "DB2Stores.h" +#include "DatabaseEnv.h" #include "GameEventMgr.h" #include "GameObject.h" #include "GameTime.h" @@ -32,8 +32,8 @@ #include "InstanceScenario.h" #include "InstanceScript.h" #include "Item.h" -#include "LanguageMgr.h" #include "LFGMgr.h" +#include "LanguageMgr.h" #include "Log.h" #include "LootMgr.h" #include "Map.h" @@ -53,6 +53,7 @@ #include "World.h" #include "WorldSession.h" #include "WorldStateMgr.h" +#include "WowTime.h" #include <random> #include <sstream> @@ -3264,15 +3265,18 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio if (condition->Time[0]) { - ByteBuffer unpacker; - unpacker << condition->Time[0]; - time_t from = unpacker.ReadPackedTime(); - unpacker.rpos(0); - unpacker.wpos(0); - unpacker << condition->Time[1]; - time_t to = unpacker.ReadPackedTime(); - - if (GameTime::GetGameTime() < from || GameTime::GetGameTime() > to) + WowTime time0; + time0.SetPackedTime(condition->Time[0]); + + if (condition->Time[1]) + { + WowTime time1; + time1.SetPackedTime(condition->Time[1]); + + if (!GameTime::GetWowTime()->IsInRange(time0, time1)) + return false; + } + else if (*GameTime::GetWowTime() != time0) return false; } |