aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2025-09-08 00:23:01 +0200
committerShauren <shauren.trinity@gmail.com>2025-09-08 00:23:01 +0200
commit3b8f64831a766b469dfb8f8506e09dffdcfe723c (patch)
tree4f8ec693b7cc5db5f9859b8c6277431e429a0bbb /src/server
parent80437d3c79853c27ffa60b1988d1459586d18cbb (diff)
Core/Events: Replace remaining packed time calculations with WowTime class
Diffstat (limited to 'src/server')
-rw-r--r--src/server/game/Events/GameEventMgr.cpp45
1 files changed, 12 insertions, 33 deletions
diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp
index bb525bc530f..5f94a2a026f 100644
--- a/src/server/game/Events/GameEventMgr.cpp
+++ b/src/server/game/Events/GameEventMgr.cpp
@@ -34,6 +34,7 @@
#include "StringConvert.h"
#include "World.h"
#include "WorldStateMgr.h"
+#include "WowTime.h"
GameEventMgr* GameEventMgr::instance()
{
@@ -1679,9 +1680,9 @@ void GameEventMgr::SetHolidayEventTime(GameEventData& event)
uint8 stageIndex = event.holidayStage - 1;
event.length = holiday->Duration[stageIndex] * HOUR / MINUTE;
- time_t stageOffset = 0;
+ Hours stageOffset = 0h;
for (uint8 i = 0; i < stageIndex; ++i)
- stageOffset += holiday->Duration[i] * HOUR;
+ stageOffset += Hours(holiday->Duration[i]);
switch (holiday->CalendarFilterType)
{
@@ -1704,47 +1705,25 @@ void GameEventMgr::SetHolidayEventTime(GameEventData& event)
event.occurence += holiday->Duration[i] * HOUR / MINUTE;
}
- bool singleDate = ((holiday->Date[0] >> 24) & 0x1F) == 31; // Events with fixed date within year have - 1
-
- time_t curTime = GameTime::GetGameTime();
+ WowTime const& curTime = *GameTime::GetWowTime();
for (uint8 i = 0; i < MAX_HOLIDAY_DATES && holiday->Date[i]; ++i)
{
- uint32 date = holiday->Date[i];
-
- tm timeInfo;
+ WowTime date;
+ date.SetPackedTime(holiday->Date[i]);
+ bool singleDate = date.GetYear() == -1;
if (singleDate)
- {
- localtime_r(&curTime, &timeInfo);
- timeInfo.tm_year -= 1; // First try last year (event active through New Year)
- }
- else
- timeInfo.tm_year = ((date >> 24) & 0x1F) + 100;
-
- timeInfo.tm_mon = (date >> 20) & 0xF;
- timeInfo.tm_mday = ((date >> 14) & 0x3F) + 1;
- timeInfo.tm_hour = (date >> 6) & 0x1F;
- timeInfo.tm_min = date & 0x3F;
- timeInfo.tm_sec = 0;
- timeInfo.tm_wday = 0;
- timeInfo.tm_yday = 0;
- timeInfo.tm_isdst = -1;
+ date.SetYear(GameTime::GetWowTime()->GetYear() - 1); // First try last year (event active through New Year)
// try to get next start time (skip past dates)
- time_t startTime = mktime(&timeInfo);
- if (curTime < startTime + event.length * MINUTE)
+ if (curTime < date + Minutes(event.length))
{
- event.start = startTime + stageOffset;
+ event.start = (date + stageOffset).GetUnixTimeFromUtcTime();
break;
}
else if (singleDate)
{
- tm tmCopy;
- localtime_r(&curTime, &tmCopy);
- int year = tmCopy.tm_year; // This year
- tmCopy = timeInfo;
- tmCopy.tm_year = year;
-
- event.start = mktime(&tmCopy) + stageOffset;
+ date.SetYear(date.GetYear() + 1); // This year
+ event.start = (date + stageOffset).GetUnixTimeFromUtcTime();
break;
}
else