uint32 GameEvent::Update() // return the next event delay in ms { uint32 nextEventDelay = max_ge_check_delay; // 1 day uint32 calcDelay; for (uint16 itr = 1; itr < mGameEvent.size(); ++itr) { //sLog.outErrorDb("Checking event %u",itr); if (CheckOneGameEvent(itr)) { //sLog.outDebug("GameEvent %u is active",itr->first); if (!IsActiveEvent(itr)) StartEvent(itr); } else { //sLog.outDebug("GameEvent %u is not active",itr->first); if (IsActiveEvent(itr)) StopEvent(itr); else { if (!isSystemInit) { int16 event_nid = (-1) * (itr); // spawn all negative ones for this event GameEventSpawn(event_nid); } } } calcDelay = NextCheck(itr); if (calcDelay < nextEventDelay) nextEventDelay = calcDelay; } sLog.outBasic("Next game event check in %u seconds.", nextEventDelay + 1); return (nextEventDelay + 1) * 1000; // Add 1 second to be sure event has started/stopped at next call }
// return the next event delay in ms uint32 GameEventMgr::Update(ActiveEvents const* activeAtShutdown /*= nullptr*/) { time_t currenttime = time(nullptr); uint32 nextEventDelay = max_ge_check_delay; // 1 day uint32 calcDelay; for (uint16 itr = 1; itr < mGameEvent.size(); ++itr) { if (mGameEvent[itr].occurence == 0) continue; // sLog.outErrorDb("Checking event %u",itr); if (CheckOneGameEvent(itr, currenttime)) { // DEBUG_LOG("GameEvent %u is active",itr->first); if (!IsActiveEvent(itr)) { if (mGameEvent[itr].linkedTo == 0 || IsActiveEvent(mGameEvent[itr].linkedTo)) { bool resume = activeAtShutdown && (activeAtShutdown->find(itr) != activeAtShutdown->end()); StartEvent(itr, false, resume); } } } else { // DEBUG_LOG("GameEvent %u is not active",itr->first); if (IsActiveEvent(itr)) { StopEvent(itr); if (mGameEvent[itr].linkedTo != 0) StopEvent(mGameEvent[itr].linkedTo); } else { if (!m_IsGameEventsInit) { int16 event_nid = (-1) * (itr); // spawn all negative ones for this event GameEventSpawn(event_nid); UpdateWorldStates(itr, false); } } } calcDelay = NextCheck(itr); if (calcDelay < nextEventDelay) nextEventDelay = calcDelay; } BASIC_LOG("Next game event check in %u seconds.", nextEventDelay + 1); return (nextEventDelay + 1) * IN_MILLISECONDS; // Add 1 second to be sure event has started/stopped at next call }
uint32 GameEventMgr::Update() // return the next event delay in ms { uint32 nextEventDelay = max_ge_check_delay; // 1 day uint32 calcDelay; for (uint16 itr = 1; itr < mGameEvent.size(); ++itr) { //sLog.outErrorDb("Checking event %u",itr); if (CheckOneGameEvent(itr)) { //DEBUG_LOG("GameEvent %u is active",itr->first); if (!IsActiveEvent(itr)) StartEvent(itr); } else { //DEBUG_LOG("GameEvent %u is not active",itr->first); if (IsActiveEvent(itr)) StopEvent(itr); else { if (!m_IsGameEventsInit) { int16 event_nid = (-1) * (itr); // spawn all negative ones for this event GameEventSpawn(event_nid); // disable any event specific quest (for cases where creature is spawned, but event not active). UpdateEventQuests(itr, false); UpdateWorldStates(itr, false); } } } calcDelay = NextCheck(itr); if (calcDelay < nextEventDelay) nextEventDelay = calcDelay; } BASIC_LOG("Next game event check in %u seconds.", nextEventDelay + 1); return (nextEventDelay + 1) * IN_MILLISECONDS; // Add 1 second to be sure event has started/stopped at next call }