[Code] WorldEventScheduler and ZoneEventScheduler Global to Singleton Cleanup (#4932)

This commit is contained in:
Alex King 2025-06-25 15:47:37 -04:00 committed by GitHub
parent f304f9cc61
commit 967a13e692
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 17 additions and 10 deletions

View File

@ -95,7 +95,6 @@ ClientList client_list;
GroupLFPList LFPGroupList; GroupLFPList LFPGroupList;
ZSList zoneserver_list; ZSList zoneserver_list;
LauncherList launcher_list; LauncherList launcher_list;
WorldEventScheduler event_scheduler;
volatile bool RunLoops = true; volatile bool RunLoops = true;
uint32 numclients = 0; uint32 numclients = 0;
uint32 numzones = 0; uint32 numzones = 0;
@ -418,7 +417,7 @@ int main(int argc, char **argv)
} }
} }
event_scheduler.Process(&zoneserver_list); WorldEventScheduler::Instance()->Process(&zoneserver_list);
client_list.Process(); client_list.Process();
guild_mgr.Process(); guild_mgr.Process();

View File

@ -224,8 +224,6 @@ void WorldBoot::RegisterLoginservers()
} }
} }
extern WorldEventScheduler event_scheduler;
bool WorldBoot::DatabaseLoadRoutines(int argc, char **argv) bool WorldBoot::DatabaseLoadRoutines(int argc, char **argv)
{ {
// logging system init // logging system init
@ -389,7 +387,7 @@ bool WorldBoot::DatabaseLoadRoutines(int argc, char **argv)
content_db.LoadCharacterCreateCombos(); content_db.LoadCharacterCreateCombos();
LogInfo("Initializing [EventScheduler]"); LogInfo("Initializing [EventScheduler]");
event_scheduler.SetDatabase(&database)->LoadScheduledEvents(); WorldEventScheduler::Instance()->SetDatabase(&database)->LoadScheduledEvents();
LogInfo("Initializing [WorldContentService]"); LogInfo("Initializing [WorldContentService]");
content_service.SetDatabase(&database) content_service.SetDatabase(&database)

View File

@ -7,6 +7,12 @@
class WorldEventScheduler : public ServerEventScheduler { class WorldEventScheduler : public ServerEventScheduler {
public: public:
void Process(ZSList *zs_list); void Process(ZSList *zs_list);
static WorldEventScheduler* Instance()
{
static WorldEventScheduler instance;
return &instance;
}
}; };
#endif //EQEMU_EVENT_SCHEDULER_H #endif //EQEMU_EVENT_SCHEDULER_H

View File

@ -88,7 +88,6 @@ extern volatile bool is_zone_loaded;
#include "../common/path_manager.h" #include "../common/path_manager.h"
#include "../common/database/database_update.h" #include "../common/database/database_update.h"
#include "../common/skill_caps.h" #include "../common/skill_caps.h"
#include "zone_event_scheduler.h"
#include "zone_cli.h" #include "zone_cli.h"
EntityList entity_list; EntityList entity_list;
@ -102,7 +101,6 @@ TitleManager title_manager;
QueryServ *QServ = 0; QueryServ *QServ = 0;
NpcScaleManager *npc_scale_manager; NpcScaleManager *npc_scale_manager;
QuestParserCollection *parse = 0; QuestParserCollection *parse = 0;
ZoneEventScheduler event_scheduler;
WorldContentService content_service; WorldContentService content_service;
PlayerEventLogs player_event_logs; PlayerEventLogs player_event_logs;
@ -416,7 +414,7 @@ int main(int argc, char **argv)
->SetExpansionContext() ->SetExpansionContext()
->ReloadContentFlags(); ->ReloadContentFlags();
event_scheduler.SetDatabase(&database)->LoadScheduledEvents(); ZoneEventScheduler::Instance()->SetDatabase(&database)->LoadScheduledEvents();
EQ::SayLinkEngine::LoadCachedSaylinks(); EQ::SayLinkEngine::LoadCachedSaylinks();
@ -482,7 +480,7 @@ int main(int argc, char **argv)
QServ->CheckForConnectState(); QServ->CheckForConnectState();
worldserver.Connect(); worldserver.Connect();
worldserver.SetScheduler(&event_scheduler); worldserver.SetScheduler(ZoneEventScheduler::Instance());
// sidecar command handler // sidecar command handler
if (ZoneCLI::RanConsoleCommand(argc, argv) if (ZoneCLI::RanConsoleCommand(argc, argv)
@ -626,7 +624,7 @@ int main(int argc, char **argv)
entity_list.MobProcess(); entity_list.MobProcess();
entity_list.BeaconProcess(); entity_list.BeaconProcess();
entity_list.EncounterProcess(); entity_list.EncounterProcess();
event_scheduler.Process(zone, &content_service); ZoneEventScheduler::Instance()->Process(zone, &content_service);
if (zone) { if (zone) {
if (!zone->Process()) { if (!zone->Process()) {

View File

@ -9,6 +9,12 @@ class ZoneEventScheduler : public ServerEventScheduler {
public: public:
void Process(Zone *zone, WorldContentService *content_service); void Process(Zone *zone, WorldContentService *content_service);
void SyncEventDataWithActiveEvents(); void SyncEventDataWithActiveEvents();
static ZoneEventScheduler* Instance()
{
static ZoneEventScheduler instance;
return &instance;
}
}; };
#endif //EQEMU_ZONE_EVENT_SCHEDULER_H #endif //EQEMU_ZONE_EVENT_SCHEDULER_H