mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-02-20 02:34:33 +00:00
feat(Core/Time): Implement saparated manager for game time (#8630)
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
#include "BattlegroundMgr.h"
|
||||
#include "DisableMgr.h"
|
||||
#include "GameObjectAI.h"
|
||||
#include "GameTime.h"
|
||||
#include "GossipDef.h"
|
||||
#include "Language.h"
|
||||
#include "Log.h"
|
||||
@@ -47,7 +48,7 @@ bool GameEventMgr::CheckOneGameEvent(uint16 entry) const
|
||||
default:
|
||||
case GAMEEVENT_NORMAL:
|
||||
{
|
||||
time_t currenttime = time(nullptr);
|
||||
time_t currenttime = GameTime::GetGameTime().count();
|
||||
// Get the event information
|
||||
return mGameEvent[entry].start < currenttime
|
||||
&& currenttime < mGameEvent[entry].end
|
||||
@@ -64,7 +65,7 @@ bool GameEventMgr::CheckOneGameEvent(uint16 entry) const
|
||||
// if inactive world event, check the prerequisite events
|
||||
case GAMEEVENT_WORLD_INACTIVE:
|
||||
{
|
||||
time_t currenttime = time(nullptr);
|
||||
time_t currenttime = GameTime::GetGameTime().count();
|
||||
for (std::set<uint16>::const_iterator itr = mGameEvent[entry].prerequisite_events.begin(); itr != mGameEvent[entry].prerequisite_events.end(); ++itr)
|
||||
{
|
||||
if ((mGameEvent[*itr].state != GAMEEVENT_WORLD_NEXTPHASE && mGameEvent[*itr].state != GAMEEVENT_WORLD_FINISHED) || // if prereq not in nextphase or finished state, then can't start this one
|
||||
@@ -80,7 +81,7 @@ bool GameEventMgr::CheckOneGameEvent(uint16 entry) const
|
||||
|
||||
uint32 GameEventMgr::NextCheck(uint16 entry) const
|
||||
{
|
||||
time_t currenttime = time(nullptr);
|
||||
time_t currenttime = GameTime::GetGameTime().count();
|
||||
|
||||
// for NEXTPHASE state world events, return the delay to start the next event, so the followup event will be checked correctly
|
||||
if ((mGameEvent[entry].state == GAMEEVENT_WORLD_NEXTPHASE || mGameEvent[entry].state == GAMEEVENT_WORLD_FINISHED) && mGameEvent[entry].nextstart >= currenttime)
|
||||
@@ -145,7 +146,7 @@ bool GameEventMgr::StartEvent(uint16 event_id, bool overwrite)
|
||||
ApplyNewEvent(event_id);
|
||||
if (overwrite)
|
||||
{
|
||||
mGameEvent[event_id].start = time(nullptr);
|
||||
mGameEvent[event_id].start = GameTime::GetGameTime().count();
|
||||
if (data.end <= data.start)
|
||||
data.end = data.start + data.length;
|
||||
}
|
||||
@@ -157,7 +158,7 @@ bool GameEventMgr::StartEvent(uint16 event_id, bool overwrite)
|
||||
auto itr = _gameEventSeasonalQuestsMap.find(event_id);
|
||||
if (itr != _gameEventSeasonalQuestsMap.end() && !itr->second.empty())
|
||||
{
|
||||
sWorld->setWorldState(event_id, sWorld->GetGameTime());
|
||||
sWorld->setWorldState(event_id, GameTime::GetGameTime().count());
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -203,7 +204,7 @@ void GameEventMgr::StopEvent(uint16 event_id, bool overwrite)
|
||||
|
||||
if (overwrite && !serverwide_evt)
|
||||
{
|
||||
data.start = time(nullptr) - data.length * MINUTE;
|
||||
data.start = GameTime::GetGameTime().count() - data.length * MINUTE;
|
||||
if (data.end <= data.start)
|
||||
data.end = data.start + data.length;
|
||||
}
|
||||
@@ -268,7 +269,7 @@ void GameEventMgr::LoadFromDB()
|
||||
pGameEvent.start = time_t(starttime);
|
||||
uint64 endtime = fields[2].GetUInt64();
|
||||
if (fields[2].IsNull())
|
||||
endtime = time(nullptr) + 63072000; // add 2 years to current date
|
||||
endtime = GameTime::GetGameTime().count() + 63072000; // add 2 years to current date
|
||||
pGameEvent.end = time_t(endtime);
|
||||
pGameEvent.occurence = fields[3].GetUInt64();
|
||||
pGameEvent.length = fields[4].GetUInt64();
|
||||
@@ -1126,7 +1127,7 @@ void GameEventMgr::StartArenaSeason()
|
||||
|
||||
uint32 GameEventMgr::Update() // return the next event delay in ms
|
||||
{
|
||||
time_t currenttime = time(nullptr);
|
||||
time_t currenttime = GameTime::GetGameTime().count();
|
||||
uint32 nextEventDelay = max_ge_check_delay; // 1 day
|
||||
uint32 calcDelay;
|
||||
std::set<uint16> activate, deactivate;
|
||||
@@ -1720,7 +1721,7 @@ bool GameEventMgr::CheckOneGameEventConditions(uint16 event_id)
|
||||
// set the followup events' start time
|
||||
if (!mGameEvent[event_id].nextstart)
|
||||
{
|
||||
time_t currenttime = time(nullptr);
|
||||
time_t currenttime = GameTime::GetGameTime().count();
|
||||
mGameEvent[event_id].nextstart = currenttime + mGameEvent[event_id].length * 60;
|
||||
}
|
||||
return true;
|
||||
@@ -1840,7 +1841,7 @@ void GameEventMgr::SetHolidayEventTime(GameEventData& event)
|
||||
|
||||
bool singleDate = ((holiday->Date[0] >> 24) & 0x1F) == 31; // Events with fixed date within year have - 1
|
||||
|
||||
time_t curTime = time(nullptr);
|
||||
time_t curTime = GameTime::GetGameTime().count();
|
||||
for (uint8 i = 0; i < MAX_HOLIDAY_DATES && holiday->Date[i]; ++i)
|
||||
|
||||
{
|
||||
@@ -1890,7 +1891,7 @@ void GameEventMgr::SetHolidayEventTime(GameEventData& event)
|
||||
|
||||
uint32 GameEventMgr::GetHolidayEventId(uint32 holidayId) const
|
||||
{
|
||||
auto const events = sGameEventMgr->GetEventMap();
|
||||
auto const& events = sGameEventMgr->GetEventMap();
|
||||
|
||||
for (auto const& eventEntry : events)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user