From dc261bb203127d2a67e49dfb3460b66dc26085de Mon Sep 17 00:00:00 2001 From: Alex King <89047260+Kinglykrab@users.noreply.github.com> Date: Wed, 25 Jun 2025 16:16:44 -0400 Subject: [PATCH] [Code] ZSList Global to Singleton Cleanup (#4940) * [Code] ZSList Global to Singleton Cleanup * Final * Post merge fixes --------- Co-authored-by: Chris Miles --- queryserv/queryserv.cpp | 5 +- queryserv/worldserver.cpp | 3 +- queryserv/zonelist.h | 8 +- world/adventure.cpp | 15 +- world/adventure_manager.cpp | 65 +++++---- world/client.cpp | 15 +- world/clientlist.cpp | 23 ++-- world/console.cpp | 69 +++++----- world/dynamic_zone.cpp | 15 +- world/dynamic_zone_manager.cpp | 29 ++-- world/eqemu_api_world_data_service.cpp | 7 +- world/eqw.cpp | 11 +- world/lfplist.cpp | 3 +- world/login_server.cpp | 7 +- world/login_server_list.cpp | 1 - world/main.cpp | 29 ++-- world/queryserv.cpp | 5 +- world/shared_task_manager.cpp | 1 - world/shared_task_world_messaging.cpp | 3 +- world/web_interface_eqw.cpp | 3 +- world/wguild_mgr.cpp | 27 ++-- world/world_boot.cpp | 7 +- world/zonelist.h | 7 + world/zoneserver.cpp | 183 ++++++++++++------------- 24 files changed, 266 insertions(+), 275 deletions(-) diff --git a/queryserv/queryserv.cpp b/queryserv/queryserv.cpp index 07c9fd613..b6bf21a71 100644 --- a/queryserv/queryserv.cpp +++ b/queryserv/queryserv.cpp @@ -28,7 +28,6 @@ Database database; std::string WorldShortName; const queryservconfig *Config; WorldServer *worldserver = 0; -ZSList zs_list; uint32 numzones = 0; void CatchSignal(int sig_num) @@ -122,7 +121,7 @@ int main() server_connection->OnConnectionIdentified( "Zone", [&console](std::shared_ptr connection) { numzones++; - zs_list.Add(new ZoneServer(connection, console.get())); + ZSList::Instance()->Add(new ZoneServer(connection, console.get())); LogInfo( "New Zone Server connection from [{}] at [{}:{}] zone_count [{}]", @@ -137,7 +136,7 @@ int main() server_connection->OnConnectionRemoved( "Zone", [](std::shared_ptr connection) { numzones--; - zs_list.Remove(connection->GetUUID()); + ZSList::Instance()->Remove(connection->GetUUID()); LogInfo( "Removed Zone Server connection from [{}] total zone_count [{}]", diff --git a/queryserv/worldserver.cpp b/queryserv/worldserver.cpp index 7e8712250..051a8f009 100644 --- a/queryserv/worldserver.cpp +++ b/queryserv/worldserver.cpp @@ -26,7 +26,6 @@ extern WorldServer worldserver; extern const queryservconfig *Config; extern QSDatabase qs_database; -extern ZSList zs_list; WorldServer::WorldServer() { @@ -80,7 +79,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) if (o->type == ServerReload::Type::Logs) { EQEmuLogSys::Instance()->LoadLogDatabaseSettings(); PlayerEventLogs::Instance()->ReloadSettings(); - zs_list.SendPlayerEventLogSettings(); + ZSList::Instance()->SendPlayerEventLogSettings(); } break; diff --git a/queryserv/zonelist.h b/queryserv/zonelist.h index 3fc41676d..5bcf1b29b 100644 --- a/queryserv/zonelist.h +++ b/queryserv/zonelist.h @@ -6,9 +6,9 @@ #include #include #include +#include "zoneserver.h" class WorldTCPConnection; -class ZoneServer; class ZSList { public: @@ -17,6 +17,12 @@ public: void Remove(const std::string& uuid); void SendPlayerEventLogSettings(); + static ZSList* Instance() + { + static ZSList instance; + return &instance; + } + private: std::list> zone_server_list; }; diff --git a/world/adventure.cpp b/world/adventure.cpp index 811654573..87db2c0d3 100644 --- a/world/adventure.cpp +++ b/world/adventure.cpp @@ -15,7 +15,6 @@ #include "../common/zone_store.h" #include "../common/repositories/character_corpses_repository.h" -extern ZSList zoneserver_list; extern ClientList client_list; extern EQ::Random emu_random; @@ -176,7 +175,7 @@ void Adventure::SetStatus(AdventureStatus new_status) ut->instance_id = instance_id; ut->new_duration = adventure_template->duration + 60; - zoneserver_list.SendPacket(0, instance_id, pack); + ZSList::Instance()->SendPacket(0, instance_id, pack); safe_delete(pack); } else if(new_status == AS_WaitingForSecondaryEndTime) @@ -190,7 +189,7 @@ void Adventure::SetStatus(AdventureStatus new_status) ut->instance_id = instance_id; ut->new_duration = 1860; - zoneserver_list.SendPacket(0, instance_id, pack); + ZSList::Instance()->SendPacket(0, instance_id, pack); safe_delete(pack); } else if(new_status == AS_Finished) @@ -204,7 +203,7 @@ void Adventure::SetStatus(AdventureStatus new_status) ut->instance_id = instance_id; ut->new_duration = 1860; - zoneserver_list.SendPacket(0, instance_id, pack); + ZSList::Instance()->SendPacket(0, instance_id, pack); safe_delete(pack); } else @@ -233,7 +232,7 @@ void Adventure::SendAdventureMessage(uint32 type, const char *msg) if(current) { strcpy(sms->to, (*iter).c_str()); - zoneserver_list.SendPacket(current->zone(), current->instance(), pack); + ZSList::Instance()->SendPacket(current->zone(), current->instance(), pack); } ++iter; } @@ -309,7 +308,7 @@ void Adventure::Finished(AdventureWinStatus ws) af->win = false; af->points = 0; } - zoneserver_list.SendPacket(current->zone(), current->instance(), pack); + ZSList::Instance()->SendPacket(current->zone(), current->instance(), pack); database.UpdateAdventureStatsEntry(character_id, GetTemplate()->theme, (ws != AWS_Lose) ? true : false); delete pack; } @@ -395,7 +394,7 @@ void Adventure::MoveCorpsesToGraveyard() d->InstanceID = 0; d->ZoneID = GetTemplate()->graveyard_zone_id; - zoneserver_list.SendPacket(0, GetInstanceID(), pack); + ZSList::Instance()->SendPacket(0, GetInstanceID(), pack); delete pack; @@ -406,7 +405,7 @@ void Adventure::MoveCorpsesToGraveyard() spc->player_corpse_id = e.id; spc->zone_id = GetTemplate()->graveyard_zone_id; - zoneserver_list.SendPacket(spc->zone_id, 0, pack); + ZSList::Instance()->SendPacket(spc->zone_id, 0, pack); delete pack; } diff --git a/world/adventure_manager.cpp b/world/adventure_manager.cpp index 34198c159..e20f1d83c 100644 --- a/world/adventure_manager.cpp +++ b/world/adventure_manager.cpp @@ -14,7 +14,6 @@ #include #include -extern ZSList zoneserver_list; extern ClientList client_list; AdventureManager::AdventureManager() @@ -83,7 +82,7 @@ void AdventureManager::CalculateAdventureRequestReply(const char *data) ServerAdventureRequestDeny_Struct *deny = (ServerAdventureRequestDeny_Struct*)pack->pBuffer; strcpy(deny->leader, sar->leader); strcpy(deny->reason, "There are currently no adventures set for this theme."); - zoneserver_list.SendPacket(leader->zone(), leader->instance(), pack); + ZSList::Instance()->SendPacket(leader->zone(), leader->instance(), pack); delete pack; return; } @@ -112,7 +111,7 @@ void AdventureManager::CalculateAdventureRequestReply(const char *data) ss << (data + sizeof(ServerAdventureRequest_Struct) + (64 * i)) << " is already apart of an active adventure."; strcpy(deny->reason, ss.str().c_str()); - zoneserver_list.SendPacket(leader->zone(), leader->instance(), pack); + ZSList::Instance()->SendPacket(leader->zone(), leader->instance(), pack); delete pack; return; } @@ -243,7 +242,7 @@ void AdventureManager::CalculateAdventureRequestReply(const char *data) ServerAdventureRequestDeny_Struct *deny = (ServerAdventureRequestDeny_Struct*)pack->pBuffer; strcpy(deny->leader, sar->leader); strcpy(deny->reason, "The number of found players for this adventure was zero."); - zoneserver_list.SendPacket(leader->zone(), leader->instance(), pack); + ZSList::Instance()->SendPacket(leader->zone(), leader->instance(), pack); delete pack; return; } @@ -260,7 +259,7 @@ void AdventureManager::CalculateAdventureRequestReply(const char *data) ss << "The maximum level range for this adventure is " << RuleI(Adventure, MaxLevelRange); ss << " but the level range calculated was " << (max_level - min_level) << "."; strcpy(deny->reason, ss.str().c_str()); - zoneserver_list.SendPacket(leader->zone(), leader->instance(), pack); + ZSList::Instance()->SendPacket(leader->zone(), leader->instance(), pack); delete pack; return; } @@ -337,7 +336,7 @@ void AdventureManager::CalculateAdventureRequestReply(const char *data) sra->id = (*ea_iter)->id; sra->member_count = sar->member_count; memcpy((pack->pBuffer + sizeof(ServerAdventureRequestAccept_Struct)), (data + sizeof(ServerAdventureRequest_Struct)), (sar->member_count * 64)); - zoneserver_list.SendPacket(leader->zone(), leader->instance(), pack); + ZSList::Instance()->SendPacket(leader->zone(), leader->instance(), pack); delete pack; return; } @@ -347,7 +346,7 @@ void AdventureManager::CalculateAdventureRequestReply(const char *data) ServerAdventureRequestDeny_Struct *deny = (ServerAdventureRequestDeny_Struct*)pack->pBuffer; strcpy(deny->leader, sar->leader); strcpy(deny->reason, "The number of adventures returned was zero."); - zoneserver_list.SendPacket(leader->zone(), leader->instance(), pack); + ZSList::Instance()->SendPacket(leader->zone(), leader->instance(), pack); delete pack; return; } @@ -367,7 +366,7 @@ void AdventureManager::TryAdventureCreate(const char *data) { auto pack = new ServerPacket(ServerOP_AdventureCreateDeny, 64); strcpy((char*)pack->pBuffer, src->leader); - zoneserver_list.SendPacket(leader->zone(), leader->instance(), pack); + ZSList::Instance()->SendPacket(leader->zone(), leader->instance(), pack); delete pack; return; } @@ -377,7 +376,7 @@ void AdventureManager::TryAdventureCreate(const char *data) { auto pack = new ServerPacket(ServerOP_AdventureCreateDeny, 64); strcpy((char*)pack->pBuffer, src->leader); - zoneserver_list.SendPacket(leader->zone(), leader->instance(), pack); + ZSList::Instance()->SendPacket(leader->zone(), leader->instance(), pack); delete pack; delete adv; return; @@ -390,7 +389,7 @@ void AdventureManager::TryAdventureCreate(const char *data) { auto pack = new ServerPacket(ServerOP_AdventureCreateDeny, 64); strcpy((char*)pack->pBuffer, src->leader); - zoneserver_list.SendPacket(leader->zone(), leader->instance(), pack); + ZSList::Instance()->SendPacket(leader->zone(), leader->instance(), pack); delete pack; delete adv; return; @@ -435,7 +434,7 @@ void AdventureManager::TryAdventureCreate(const char *data) sfa->zone_in_object = finished_adventures[f]->GetTemplate()->zone_in_object_id; } - zoneserver_list.SendPacket(player->zone(), player->instance(), pack); + ZSList::Instance()->SendPacket(player->zone(), player->instance(), pack); safe_delete_array(finished_adventures); delete pack; } @@ -496,7 +495,7 @@ void AdventureManager::GetAdventureData(const char *name) delete pack; auto pack = new ServerPacket(ServerOP_AdventureDataClear, 64); strcpy((char*)pack->pBuffer, name); - zoneserver_list.SendPacket(player->zone(), player->instance(), pack); + ZSList::Instance()->SendPacket(player->zone(), player->instance(), pack); delete pack; delete[] finished_adventures; @@ -514,7 +513,7 @@ void AdventureManager::GetAdventureData(const char *name) sfa->zone_in_object = finished_adventures[i]->GetTemplate()->zone_in_object_id; } - zoneserver_list.SendPacket(player->zone(), player->instance(), pack); + ZSList::Instance()->SendPacket(player->zone(), player->instance(), pack); safe_delete_array(finished_adventures); delete pack; delete[] finished_adventures; @@ -782,7 +781,7 @@ void AdventureManager::PlayerClickedDoor(const char *player, int zone_id, int do (*iter)->SetStatus(AS_WaitingForPrimaryEndTime); } - zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack); + ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack); safe_delete(pack); } return; @@ -796,7 +795,7 @@ void AdventureManager::PlayerClickedDoor(const char *player, int zone_id, int do { auto pack = new ServerPacket(ServerOP_AdventureClickDoorError, 64); strcpy((char*)pack->pBuffer, player); - zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack); + ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack); safe_delete(pack); } } @@ -813,7 +812,7 @@ void AdventureManager::LeaveAdventure(const char *name) { auto pack = new ServerPacket(ServerOP_AdventureLeaveDeny, 64); strcpy((char*)pack->pBuffer, name); - zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack); + ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack); safe_delete(pack); } else @@ -826,7 +825,7 @@ void AdventureManager::LeaveAdventure(const char *name) current->RemovePlayer(name); auto pack = new ServerPacket(ServerOP_AdventureLeaveReply, 64); strcpy((char*)pack->pBuffer, name); - zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack); + ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack); safe_delete(pack); } } @@ -834,7 +833,7 @@ void AdventureManager::LeaveAdventure(const char *name) { auto pack = new ServerPacket(ServerOP_AdventureLeaveReply, 64); strcpy((char*)pack->pBuffer, name); - zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack); + ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack); safe_delete(pack); } } @@ -871,7 +870,7 @@ void AdventureManager::IncrementCount(uint16 instance_id) { memset(ac->player, 0, 64); strcpy(ac->player, (*siter).c_str()); - zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack); + ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack); } ++siter; } @@ -935,7 +934,7 @@ void AdventureManager::GetZoneData(uint16 instance_id) zd->dest_y = temp->dest_y; zd->dest_z = temp->dest_z; zd->dest_h = temp->dest_h; - zoneserver_list.SendPacket(0, instance_id, pack); + ZSList::Instance()->SendPacket(0, instance_id, pack); delete pack; } } @@ -1320,7 +1319,7 @@ void AdventureManager::DoLeaderboardRequestWins(const char* player) al->failure = our_failures; } - zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack); + ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack); delete pack; } } @@ -1386,7 +1385,7 @@ void AdventureManager::DoLeaderboardRequestPercentage(const char* player) al->failure = our_failures; } - zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack); + ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack); delete pack; } } @@ -1452,7 +1451,7 @@ void AdventureManager::DoLeaderboardRequestWinsGuk(const char* player) al->failure = our_failures; } - zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack); + ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack); delete pack; } } @@ -1518,7 +1517,7 @@ void AdventureManager::DoLeaderboardRequestPercentageGuk(const char* player) al->failure = our_failures; } - zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack); + ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack); delete pack; } } @@ -1584,7 +1583,7 @@ void AdventureManager::DoLeaderboardRequestWinsMir(const char* player) al->failure = our_failures; } - zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack); + ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack); delete pack; } } @@ -1650,7 +1649,7 @@ void AdventureManager::DoLeaderboardRequestPercentageMir(const char* player) al->failure = our_failures; } - zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack); + ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack); delete pack; } } @@ -1716,7 +1715,7 @@ void AdventureManager::DoLeaderboardRequestWinsMmc(const char* player) al->failure = our_failures; } - zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack); + ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack); delete pack; } } @@ -1782,7 +1781,7 @@ void AdventureManager::DoLeaderboardRequestPercentageMmc(const char* player) al->failure = our_failures; } - zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack); + ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack); delete pack; } } @@ -1848,7 +1847,7 @@ void AdventureManager::DoLeaderboardRequestWinsRuj(const char* player) al->failure = our_failures; } - zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack); + ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack); delete pack; } } @@ -1914,7 +1913,7 @@ void AdventureManager::DoLeaderboardRequestPercentageRuj(const char* player) al->failure = our_failures; } - zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack); + ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack); delete pack; } } @@ -1980,7 +1979,7 @@ void AdventureManager::DoLeaderboardRequestWinsTak(const char* player) al->failure = our_failures; } - zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack); + ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack); delete pack; } } @@ -2046,7 +2045,7 @@ void AdventureManager::DoLeaderboardRequestPercentageTak(const char* player) al->failure = our_failures; } - zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack); + ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack); delete pack; } } @@ -2083,7 +2082,7 @@ void AdventureManager::SendAdventureFinish(AdventureFinishEvent fe) af->win = fe.win; af->points = fe.points; - zoneserver_list.SendPacket(pc->zone(), pc->instance(), pack); + ZSList::Instance()->SendPacket(pc->zone(), pc->instance(), pack); delete pack; } } diff --git a/world/client.cpp b/world/client.cpp index 5e9893a32..5df1035fa 100644 --- a/world/client.cpp +++ b/world/client.cpp @@ -89,7 +89,6 @@ std::vector character_create_allocations; std::vector character_create_race_class_combos; -extern ZSList zoneserver_list; extern ClientList client_list; extern uint32 numclients; extern volatile bool RunLoops; @@ -1415,18 +1414,18 @@ void Client::EnterWorld(bool TryBootup) { return; } - zone_server = zoneserver_list.FindByInstanceID(instance_id); + zone_server = ZSList::Instance()->FindByInstanceID(instance_id); } else { - zone_server = zoneserver_list.FindByZoneID(zone_id); + zone_server = ZSList::Instance()->FindByZoneID(zone_id); } const char *zone_name = ZoneName(zone_id, true); if (zone_server) { if (false == enter_world_triggered) { //Drop any clients we own in other zones. - zoneserver_list.DropClient(GetLSID(), zone_server); + ZSList::Instance()->DropClient(GetLSID(), zone_server); // warn the zone we're coming zone_server->IncomingClient(this); @@ -1439,7 +1438,7 @@ void Client::EnterWorld(bool TryBootup) { if (TryBootup) { LogInfo("Attempting autobootup of [{}] [{}] [{}]", zone_name, zone_id, instance_id); autobootup_timeout.Start(); - zone_waiting_for_bootup = zoneserver_list.TriggerBootup(zone_id, instance_id); + zone_waiting_for_bootup = ZSList::Instance()->TriggerBootup(zone_id, instance_id); if (zone_waiting_for_bootup == 0) { LogInfo("No zoneserver available to boot up"); TellClientZoneUnavailable(); @@ -1455,7 +1454,7 @@ void Client::EnterWorld(bool TryBootup) { zone_waiting_for_bootup = 0; - if (GetAdmin() < 80 && zoneserver_list.IsZoneLocked(zone_id)) { + if (GetAdmin() < 80 && ZSList::Instance()->IsZoneLocked(zone_id)) { LogInfo("Enter world failed. Zone is locked"); TellClientZoneUnavailable(); return; @@ -1501,11 +1500,11 @@ void Client::Clearance(int8 response) ZoneServer* zs = nullptr; if(instance_id > 0) { - zs = zoneserver_list.FindByInstanceID(instance_id); + zs = ZSList::Instance()->FindByInstanceID(instance_id); } else { - zs = zoneserver_list.FindByZoneID(zone_id); + zs = ZSList::Instance()->FindByZoneID(zone_id); } if(zs == 0 || response == -1 || response == 0) diff --git a/world/clientlist.cpp b/world/clientlist.cpp index f038a5a68..31eeb6d67 100644 --- a/world/clientlist.cpp +++ b/world/clientlist.cpp @@ -36,7 +36,6 @@ #include "../common/zone_store.h" #include -extern ZSList zoneserver_list; uint32 numplayers = 0; //this really wants to be a member variable of ClientList... ClientList::ClientList() @@ -232,7 +231,7 @@ void ClientList::DisconnectByIP(uint32 in_ip) { strn0cpy(skp->adminname, "SessionLimit", sizeof(skp->adminname)); strn0cpy(skp->name, cle->name(), sizeof(skp->name)); skp->adminrank = 255; - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); safe_delete(pack); } cle->SetOnline(CLE_Status::Offline); @@ -551,7 +550,7 @@ void ClientList::SendOnlineGuildMembers(uint32 FromID, uint32 GuildID) Iterator.Advance(); } - zoneserver_list.SendPacket(from->zone(), from->instance(), pack); + ZSList::Instance()->SendPacket(from->zone(), from->instance(), pack); safe_delete(pack); } @@ -1316,7 +1315,7 @@ void ClientList::RemoveCLEReferances(ClientListEntry* cle) { bool ClientList::SendPacket(const char* to, ServerPacket* pack) { if (to == 0 || to[0] == 0) { - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); return true; } else if (to[0] == '*') { @@ -1332,7 +1331,7 @@ bool ClientList::SendPacket(const char* to, ServerPacket* pack) { } return false; } else { - ZoneServer* zs = zoneserver_list.FindByName(to); + ZoneServer* zs = ZSList::Instance()->FindByName(to); if (zs != nullptr) { zs->SendPacket(pack); return true; @@ -1437,7 +1436,7 @@ void ClientList::SendClientVersionSummary(const char *Name) ); if (client_count[EQ::versions::ClientVersion::Titanium]) { - zoneserver_list.SendEmoteMessage( + ZSList::Instance()->SendEmoteMessage( Name, 0, AccountStatus::Player, @@ -1450,7 +1449,7 @@ void ClientList::SendClientVersionSummary(const char *Name) } if (client_count[EQ::versions::ClientVersion::SoF]) { - zoneserver_list.SendEmoteMessage( + ZSList::Instance()->SendEmoteMessage( Name, 0, AccountStatus::Player, @@ -1463,7 +1462,7 @@ void ClientList::SendClientVersionSummary(const char *Name) } if (client_count[EQ::versions::ClientVersion::SoD]) { - zoneserver_list.SendEmoteMessage( + ZSList::Instance()->SendEmoteMessage( Name, 0, AccountStatus::Player, @@ -1476,7 +1475,7 @@ void ClientList::SendClientVersionSummary(const char *Name) } if (client_count[EQ::versions::ClientVersion::UF]) { - zoneserver_list.SendEmoteMessage( + ZSList::Instance()->SendEmoteMessage( Name, 0, AccountStatus::Player, @@ -1489,7 +1488,7 @@ void ClientList::SendClientVersionSummary(const char *Name) } if (client_count[EQ::versions::ClientVersion::RoF]) { - zoneserver_list.SendEmoteMessage( + ZSList::Instance()->SendEmoteMessage( Name, 0, AccountStatus::Player, @@ -1502,7 +1501,7 @@ void ClientList::SendClientVersionSummary(const char *Name) } if (client_count[EQ::versions::ClientVersion::RoF2]) { - zoneserver_list.SendEmoteMessage( + ZSList::Instance()->SendEmoteMessage( Name, 0, AccountStatus::Player, @@ -1515,7 +1514,7 @@ void ClientList::SendClientVersionSummary(const char *Name) } - zoneserver_list.SendEmoteMessage( + ZSList::Instance()->SendEmoteMessage( Name, 0, AccountStatus::Player, diff --git a/world/console.cpp b/world/console.cpp index 9cc95134d..03efcfe5e 100644 --- a/world/console.cpp +++ b/world/console.cpp @@ -34,7 +34,6 @@ #include extern ClientList client_list; -extern ZSList zoneserver_list; /** * @param username @@ -148,7 +147,7 @@ void ConsoleZoneStatus( ) { WorldConsoleTCPConnection console_connection(connection); - zoneserver_list.SendZoneStatus(0, connection->Admin(), &console_connection); + ZSList::Instance()->SendZoneStatus(0, connection->Admin(), &console_connection); } /** @@ -215,7 +214,7 @@ void ConsoleUptime( ServerUptime_Struct *sus = (ServerUptime_Struct *) pack->pBuffer; snprintf(sus->adminname, sizeof(sus->adminname), "*%s", connection->UserName().c_str()); sus->zoneserverid = Strings::ToInt(args[0]); - ZoneServer *zs = zoneserver_list.FindByID(sus->zoneserverid); + ZoneServer *zs = ZSList::Instance()->FindByID(sus->zoneserverid); if (zs) { zs->SendPacket(pack); } @@ -290,7 +289,7 @@ void ConsoleEmote( join_args.erase(join_args.begin(), join_args.begin() + 2); if (strcasecmp(args[0].c_str(), "world") == 0) { - zoneserver_list.SendEmoteMessageRaw( + ZSList::Instance()->SendEmoteMessageRaw( 0, 0, AccountStatus::Player, @@ -299,7 +298,7 @@ void ConsoleEmote( ); } else { - ZoneServer *zs = zoneserver_list.FindByName(args[0].c_str()); + ZoneServer *zs = ZSList::Instance()->FindByName(args[0].c_str()); if (zs != 0) { zs->SendEmoteMessageRaw( 0, @@ -310,7 +309,7 @@ void ConsoleEmote( ); } else { - zoneserver_list.SendEmoteMessageRaw( + ZSList::Instance()->SendEmoteMessageRaw( args[0].c_str(), 0, AccountStatus::Player, @@ -371,7 +370,7 @@ void ConsoleTell( auto join_args = args; join_args.erase(join_args.begin(), join_args.begin() + 1); - zoneserver_list.SendChannelMessage(tmpname, to.c_str(), ChatChannel_Tell, 0, Strings::Join(join_args, " ").c_str()); + ZSList::Instance()->SendChannelMessage(tmpname, to.c_str(), ChatChannel_Tell, 0, Strings::Join(join_args, " ").c_str()); } /** @@ -392,7 +391,7 @@ void ConsoleBroadcast( char tmpname[64]; tmpname[0] = '*'; strcpy(&tmpname[1], connection->UserName().c_str()); - zoneserver_list.SendChannelMessage(tmpname, 0, ChatChannel_Broadcast, 0, Strings::Join(args, " ").c_str()); + ZSList::Instance()->SendChannelMessage(tmpname, 0, ChatChannel_Broadcast, 0, Strings::Join(args, " ").c_str()); } /** @@ -413,7 +412,7 @@ void ConsoleGMSay( char tmpname[64]; tmpname[0] = '*'; strcpy(&tmpname[1], connection->UserName().c_str()); - zoneserver_list.SendChannelMessage(tmpname, 0, ChatChannel_GMSAY, 0, Strings::Join(args, " ").c_str()); + ZSList::Instance()->SendChannelMessage(tmpname, 0, ChatChannel_GMSAY, 0, Strings::Join(args, " ").c_str()); } /** @@ -446,7 +445,7 @@ void ConsoleGuildSay( Strings::Join(join_args, " ") ); - zoneserver_list.SendEmoteMessage(0, guild_id, AccountStatus::Player, Chat::Guild, message.c_str()); + ZSList::Instance()->SendEmoteMessage(0, guild_id, AccountStatus::Player, Chat::Guild, message.c_str()); } /** @@ -467,7 +466,7 @@ void ConsoleOOC( char tmpname[64]; tmpname[0] = '*'; strcpy(&tmpname[1], connection->UserName().c_str()); - zoneserver_list.SendChannelMessage(tmpname, 0, ChatChannel_OOC, 0, Strings::Join(args, " ").c_str()); + ZSList::Instance()->SendChannelMessage(tmpname, 0, ChatChannel_OOC, 0, Strings::Join(args, " ").c_str()); } /** @@ -488,7 +487,7 @@ void ConsoleAuction( char tmpname[64]; tmpname[0] = '*'; strcpy(&tmpname[1], connection->UserName().c_str()); - zoneserver_list.SendChannelMessage(tmpname, 0, ChatChannel_Auction, 0, Strings::Join(args, " ").c_str()); + ZSList::Instance()->SendChannelMessage(tmpname, 0, ChatChannel_Auction, 0, Strings::Join(args, " ").c_str()); } /** @@ -517,7 +516,7 @@ void ConsoleKick( strcpy(skp->adminname, tmpname); strcpy(skp->name, args[0].c_str()); skp->adminrank = connection->Admin(); - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); delete pack; } @@ -603,10 +602,10 @@ void ConsoleZoneShutdown( ZoneServer *zs = 0; if (s->zone_server_id != 0) { - zs = zoneserver_list.FindByID(s->zone_server_id); + zs = ZSList::Instance()->FindByID(s->zone_server_id); } else if (s->zone_id != 0) { - zs = zoneserver_list.FindByName(ZoneName(s->zone_id)); + zs = ZSList::Instance()->FindByName(ZoneName(s->zone_id)); } else { connection->SendLine("Error: ZoneShutdown: neither ID nor name specified"); @@ -647,14 +646,14 @@ void ConsoleZoneBootup( strcpy(&tmpname[1], connection->UserName().c_str()); if (args.size() > 2) { - zoneserver_list.SOPZoneBootup( + ZSList::Instance()->SOPZoneBootup( tmpname, Strings::ToInt(args[0]), args[1].c_str(), (bool) (strcasecmp(args[1].c_str(), "static") == 0)); } else { - zoneserver_list.SOPZoneBootup(tmpname, Strings::ToInt(args[0]), args[1].c_str(), false); + ZSList::Instance()->SOPZoneBootup(tmpname, Strings::ToInt(args[0]), args[1].c_str(), false); } } } @@ -676,7 +675,7 @@ void ConsoleZoneLock( if (strcasecmp(args[0].c_str(), "list") == 0) { WorldConsoleTCPConnection console_connection(connection); - zoneserver_list.ListLockedZones(0, &console_connection); + ZSList::Instance()->ListLockedZones(0, &console_connection); } else if (strcasecmp(args[0].c_str(), "lock") == 0 && connection->Admin() >= 101) { if (args.size() < 2) { @@ -685,8 +684,8 @@ void ConsoleZoneLock( uint16 tmp = ZoneID(args[1].c_str()); if (tmp) { - if (zoneserver_list.SetLockedZone(tmp, true)) { - zoneserver_list.SendEmoteMessage( + if (ZSList::Instance()->SetLockedZone(tmp, true)) { + ZSList::Instance()->SendEmoteMessage( 0, 0, AccountStatus::QuestTroupe, @@ -712,8 +711,8 @@ void ConsoleZoneLock( uint16 tmp = ZoneID(args[1].c_str()); if (tmp) { - if (zoneserver_list.SetLockedZone(tmp, false)) { - zoneserver_list.SendEmoteMessage( + if (ZSList::Instance()->SetLockedZone(tmp, false)) { + ZSList::Instance()->SendEmoteMessage( 0, 0, AccountStatus::QuestTroupe, @@ -833,7 +832,7 @@ void ConsoleWorldShutdown( int32 time, interval; if (Strings::IsNumber(args[0]) && Strings::IsNumber(args[1]) && ((time = Strings::ToInt(args[0])) > 0) && ((interval = Strings::ToInt(args[1])) > 0)) { - zoneserver_list.WorldShutDown(time, interval); + ZSList::Instance()->WorldShutDown(time, interval); } else { connection->SendLine("Usage: worldshutdown [now] [disable] ([time] [interval])"); @@ -841,19 +840,19 @@ void ConsoleWorldShutdown( } else if (args.size() == 1) { if (strcasecmp(args[0].c_str(), "now") == 0) { - zoneserver_list.WorldShutDown(0, 0); + ZSList::Instance()->WorldShutDown(0, 0); } else if (strcasecmp(args[0].c_str(), "disable") == 0) { connection->SendLine("[SYSTEM] World shutdown has been aborted."); - zoneserver_list.SendEmoteMessage( + ZSList::Instance()->SendEmoteMessage( 0, 0, AccountStatus::Player, Chat::Yellow, "[SYSTEM] World shutdown has been aborted." ); - zoneserver_list.shutdowntimer->Disable(); - zoneserver_list.reminder->Disable(); + ZSList::Instance()->shutdowntimer->Disable(); + ZSList::Instance()->reminder->Disable(); } else { connection->SendLine("Usage: worldshutdown [now] [disable] ([time] [interval])"); @@ -906,7 +905,7 @@ void ConsoleSignalCharByName( CZS->update_identifier = update_identifier; CZS->signal_id = Strings::ToInt(args[1]); strn0cpy(CZS->client_name, (char *) args[0].c_str(), 64); - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); safe_delete(pack); } @@ -922,7 +921,7 @@ void ConsoleReloadWorld( ) { connection->SendLine("Reloading World..."); - zoneserver_list.SendServerReload(ServerReload::Type::WorldRepop, nullptr); + ZSList::Instance()->SendServerReload(ServerReload::Type::WorldRepop, nullptr); } auto debounce_reload = std::chrono::system_clock::now(); @@ -959,7 +958,7 @@ void ConsoleReloadZoneQuests( auto *hot_reload_quests = (HotReloadQuestsStruct *) pack->pBuffer; strn0cpy(hot_reload_quests->zone_short_name, (char *) zone_short_name.c_str(), 200); - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); safe_delete(pack); } @@ -1075,7 +1074,7 @@ void ConsoleCrossZoneCastSpell( strn0cpy(CZS->client_name, name.c_str(), sizeof(CZS->client_name)); - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); safe_delete(pack); connection->SendLine( @@ -1126,7 +1125,7 @@ void ConsoleWorldWideCastSpell( WWS->min_status = min_status; WWS->max_status = max_status; - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); safe_delete(pack); connection->SendLine( @@ -1257,7 +1256,7 @@ void ConsoleCrossZoneMove( m->zone_short_name = zone_short_name; } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); safe_delete(pack); connection->SendLine( @@ -1316,7 +1315,7 @@ void ConsoleWorldWideMove( strn0cpy(WWM->zone_short_name, zone_short_name.c_str(), sizeof(WWM->zone_short_name)); - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); safe_delete(pack); connection->SendLine( @@ -1360,7 +1359,7 @@ void ConsoleWWMarquee( strn0cpy(wwm->message, message.c_str(), sizeof(wwm->message)); - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); safe_delete(pack); connection->SendLine(fmt::format("Sent world marquee type {}: {}", type, message)); diff --git a/world/dynamic_zone.cpp b/world/dynamic_zone.cpp index 97a7b6df8..1707ae6be 100644 --- a/world/dynamic_zone.cpp +++ b/world/dynamic_zone.cpp @@ -9,7 +9,6 @@ #include "../common/repositories/instance_list_repository.h" extern ClientList client_list; -extern ZSList zoneserver_list; Database& DynamicZone::GetDatabase() { @@ -18,7 +17,7 @@ Database& DynamicZone::GetDatabase() bool DynamicZone::SendServerPacket(ServerPacket* packet) { - return zoneserver_list.SendPacket(packet); + return ZSList::Instance()->SendPacket(packet); } DynamicZone* DynamicZone::FindDynamicZoneByID(uint32_t dz_id) @@ -91,7 +90,7 @@ DynamicZoneStatus DynamicZone::Process() { status = DynamicZoneStatus::Expired; - auto dz_zoneserver = zoneserver_list.FindByInstanceID(GetInstanceID()); + auto dz_zoneserver = ZSList::Instance()->FindByInstanceID(GetInstanceID()); if (!dz_zoneserver || dz_zoneserver->NumPlayers() == 0) // no clients inside dz { status = DynamicZoneStatus::ExpiredEmpty; @@ -119,7 +118,7 @@ void DynamicZone::SendZonesDynamicZoneDeleted() auto pack = std::make_unique(ServerOP_DzDeleted, pack_size); auto buf = reinterpret_cast(pack->pBuffer); buf->dz_id = GetID(); - zoneserver_list.SendPacket(pack.get()); + ZSList::Instance()->SendPacket(pack.get()); } void DynamicZone::SetSecondsRemaining(uint32_t seconds_remaining) @@ -154,7 +153,7 @@ void DynamicZone::SendZonesDurationUpdate() auto packbuf = reinterpret_cast(pack->pBuffer); packbuf->dz_id = GetID(); packbuf->seconds = static_cast(m_duration.count()); - zoneserver_list.SendPacket(pack.get()); + ZSList::Instance()->SendPacket(pack.get()); } void DynamicZone::SendZonesLeaderChanged() @@ -164,7 +163,7 @@ void DynamicZone::SendZonesLeaderChanged() auto buf = reinterpret_cast(pack->pBuffer); buf->dz_id = GetID(); buf->leader_id = GetLeaderID(); - zoneserver_list.SendPacket(pack.get()); + ZSList::Instance()->SendPacket(pack.get()); } void DynamicZone::ProcessMemberAddRemove(const DynamicZoneMember& member, bool removed) @@ -198,7 +197,7 @@ void DynamicZone::SendZonesExpireWarning(uint32_t minutes_remaining) auto buf = reinterpret_cast(pack->pBuffer); buf->dz_id = GetID(); buf->minutes_remaining = minutes_remaining; - zoneserver_list.SendPacket(pack.get()); + ZSList::Instance()->SendPacket(pack.get()); } void DynamicZone::SendZoneMemberStatuses(uint16_t zone_id, uint16_t instance_id) @@ -217,7 +216,7 @@ void DynamicZone::SendZoneMemberStatuses(uint16_t zone_id, uint16_t instance_id) buf->entries[i].online_status = static_cast(m_members[i].status); } - zoneserver_list.SendPacket(zone_id, instance_id, pack.get()); + ZSList::Instance()->SendPacket(zone_id, instance_id, pack.get()); } void DynamicZone::CacheMemberStatuses() diff --git a/world/dynamic_zone_manager.cpp b/world/dynamic_zone_manager.cpp index c7845b02a..3bc01c8d4 100644 --- a/world/dynamic_zone_manager.cpp +++ b/world/dynamic_zone_manager.cpp @@ -10,7 +10,6 @@ #include extern ClientList client_list; -extern ZSList zoneserver_list; DynamicZoneManager dynamic_zone_manager; @@ -56,7 +55,7 @@ DynamicZone* DynamicZoneManager::TryCreate(DynamicZone& dz_request, const std::v LogDynamicZones("Created new dz [{}] for zone [{}]", dz_id, dz_request.GetZoneID()); auto pack = dz->CreateServerPacket(0, 0); - zoneserver_list.SendPacket(pack.get()); + ZSList::Instance()->SendPacket(pack.get()); auto inserted = dynamic_zone_cache.emplace(dz_id, std::move(dz)); return inserted.first->second.get(); @@ -76,7 +75,7 @@ void DynamicZoneManager::CacheNewDynamicZone(ServerPacket* pack) dynamic_zone_cache.emplace(buf->dz_id, std::move(new_dz)); LogDynamicZones("Cached new dynamic zone [{}]", buf->dz_id); - zoneserver_list.SendPacket(repack.get()); + ZSList::Instance()->SendPacket(repack.get()); } void DynamicZoneManager::CacheAllFromDatabase() @@ -194,7 +193,7 @@ void DynamicZoneManager::SendBulkMemberStatuses(uint32_t zone_id, uint16_t inst_ buf->cereal_size = static_cast(sv.size()); memcpy(buf->cereal_data, sv.data(), sv.size()); - zoneserver_list.SendPacket(zone_id, inst_id, &pack); + ZSList::Instance()->SendPacket(zone_id, inst_id, &pack); } void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack) @@ -301,7 +300,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack) dz->SetZoneInLocation(buf->x, buf->y, buf->z, buf->heading, false); } } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_DzSetSwitchID: @@ -311,7 +310,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack) { dz->ProcessSetSwitchID(buf->dz_switch_id); } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_DzAddRemoveMember: @@ -322,7 +321,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack) auto status = static_cast(buf->character_status); dz->ProcessMemberAddRemove({ buf->character_id, buf->character_name, status }, buf->removed); } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_DzSwapMembers: @@ -335,7 +334,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack) dz->ProcessMemberAddRemove({ buf->add_character_id, buf->add_character_name, status }, false); dz->ProcessMemberAddRemove({ buf->remove_character_id, buf->remove_character_name }, true); } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_DzRemoveAllMembers: @@ -345,7 +344,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack) { dz->ProcessRemoveAllMembers(); } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_DzSetSecondsRemaining: @@ -383,7 +382,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack) auto status = static_cast(buf->status); dz->ProcessMemberStatusChange(buf->character_id, status); } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_DzMovePC: @@ -392,7 +391,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack) auto dz = DynamicZone::FindDynamicZoneByID(buf->dz_id); if (dz && dz->HasMember(buf->character_id)) { - zoneserver_list.SendPacket(buf->sender_zone_id, buf->sender_instance_id, pack); + ZSList::Instance()->SendPacket(buf->sender_zone_id, buf->sender_instance_id, pack); } break; } @@ -403,7 +402,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack) { dz->SetLocked(buf->lock); } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_DzReplayOnJoin: @@ -413,7 +412,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack) { dz->SetReplayOnJoin(buf->enabled); } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_DzLockout: @@ -424,7 +423,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack) DzLockout lockout{ dz->GetUUID(), dz->GetName(), buf->event_name, buf->expire_time, buf->duration }; dz->HandleLockoutUpdate(lockout, buf->remove, buf->members_only); } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_DzLockoutDuration: @@ -435,7 +434,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack) DzLockout lockout{ dz->GetUUID(), dz->GetName(), buf->event_name, buf->expire_time, buf->duration }; dz->HandleLockoutDuration(lockout, buf->seconds, buf->members_only, false); } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_DzCharacterLockout: diff --git a/world/eqemu_api_world_data_service.cpp b/world/eqemu_api_world_data_service.cpp index dc6a29892..58f0bdf19 100644 --- a/world/eqemu_api_world_data_service.cpp +++ b/world/eqemu_api_world_data_service.cpp @@ -13,13 +13,12 @@ #include "ucs.h" #include "queryserv.h" -extern ZSList zoneserver_list; extern ClientList client_list; extern WorldGuildManager guild_mgr; void callGetZoneList(Json::Value &response) { - for (auto &zone: zoneserver_list.getZoneServerList()) { + for (auto &zone: ZSList::Instance()->getZoneServerList()) { Json::Value row; if (!zone) { @@ -139,7 +138,7 @@ void getReloadTypes(Json::Value &response) void getServerCounts(Json::Value &response, const std::vector &args) { - response["zone_count"] = zoneserver_list.GetServerListCount(); + response["zone_count"] = ZSList::Instance()->GetServerListCount(); response["client_count"] = ClientList::Instance()->GetClientCount(); } @@ -165,7 +164,7 @@ void EQEmuApiWorldDataService::reload(Json::Value &r, const std::vectorQueueServerReload(t); } found_command = true; } diff --git a/world/eqw.cpp b/world/eqw.cpp index ba316b680..3529145f2 100644 --- a/world/eqw.cpp +++ b/world/eqw.cpp @@ -45,7 +45,6 @@ #include -extern ZSList zoneserver_list; extern ClientList client_list; extern uint32 numzones; extern LauncherList launcher_list; @@ -107,7 +106,7 @@ bool EQW::LSConnected() { } int EQW::CountZones() { - return(zoneserver_list.GetZoneCount()); + return(ZSList::Instance()->GetZoneCount()); } //returns an array of zone_refs (opaque) @@ -115,7 +114,7 @@ std::vector EQW::ListBootedZones() { std::vector res; std::vector zones; - zoneserver_list.GetZoneIDList(zones); + ZSList::Instance()->GetZoneIDList(zones); std::vector::iterator cur, end; cur = zones.begin(); @@ -130,7 +129,7 @@ std::vector EQW::ListBootedZones() { std::map EQW::GetZoneDetails(Const_char *zone_ref) { std::map res; - ZoneServer *zs = zoneserver_list.FindByID(Strings::ToInt(zone_ref)); + ZoneServer *zs = ZSList::Instance()->FindByID(Strings::ToInt(zone_ref)); if(zs == nullptr) { res["error"] = "Invalid zone."; return(res); @@ -360,7 +359,7 @@ void EQW::ResolveBug(const char *id) { } void EQW::SendMessage(uint32 type, const char *msg) { - zoneserver_list.SendEmoteMessage( + ZSList::Instance()->SendEmoteMessage( 0, 0, AccountStatus::Player, @@ -370,7 +369,7 @@ void EQW::SendMessage(uint32 type, const char *msg) { } void EQW::WorldShutDown(uint32 time, uint32 interval) { - zoneserver_list.WorldShutDown(time, interval); + ZSList::Instance()->WorldShutDown(time, interval); } #endif //EMBPERL diff --git a/world/lfplist.cpp b/world/lfplist.cpp index 904d31261..7b50d9398 100644 --- a/world/lfplist.cpp +++ b/world/lfplist.cpp @@ -26,7 +26,6 @@ #include "../common/classes.h" extern ClientList client_list; -extern ZSList zoneserver_list; GroupLFP::GroupLFP(uint32 inLeaderID) { @@ -270,7 +269,7 @@ void GroupLFPList::SendLFPMatches(ServerLFPMatchesRequest_Struct* smrs) { CLE->Server()->SendPacket(Pack); } else { - ZoneServer* zs = zoneserver_list.FindByName(smrs->FromName); + ZoneServer* zs = ZSList::Instance()->FindByName(smrs->FromName); if (zs != nullptr) zs->SendPacket(Pack); } diff --git a/world/login_server.cpp b/world/login_server.cpp index f758dbb7a..fa0f1143e 100644 --- a/world/login_server.cpp +++ b/world/login_server.cpp @@ -20,7 +20,6 @@ #include "cliententry.h" #include "world_config.h" -extern ZSList zoneserver_list; extern ClientList client_list; extern uint32 numzones; extern uint32 numplayers; @@ -312,7 +311,7 @@ void LoginServer::ProcessSystemwideMessage(uint16_t opcode, EQ::Net::Packet &p) LogNetcode("Received ServerPacket from LS OpCode {:#04x}", opcode); ServerSystemwideMessage *swm = (ServerSystemwideMessage *) p.Data(); - zoneserver_list.SendEmoteMessageRaw( + ZSList::Instance()->SendEmoteMessageRaw( 0, 0, AccountStatus::Player, @@ -376,7 +375,7 @@ bool LoginServer::Connect() SendInfo(); SendStatus(); - zoneserver_list.SendLSZones(); + ZSList::Instance()->SendLSZones(); m_statusupdate_timer = std::make_unique( LoginServer_StatusUpdateInterval, true, [this](EQ::Timer *t) { @@ -485,7 +484,7 @@ bool LoginServer::Connect() ); SendInfo(); SendStatus(); - zoneserver_list.SendLSZones(); + ZSList::Instance()->SendLSZones(); m_statusupdate_timer = std::make_unique( LoginServer_StatusUpdateInterval, true, [this](EQ::Timer *t) { diff --git a/world/login_server_list.cpp b/world/login_server_list.cpp index 8f4cd0eee..02ded6256 100644 --- a/world/login_server_list.cpp +++ b/world/login_server_list.cpp @@ -36,7 +36,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include "clientlist.h" #include "world_config.h" -extern ZSList zoneserver_list; extern ClientList client_list; extern uint32 numzones; extern uint32 numplayers; diff --git a/world/main.cpp b/world/main.cpp index 2f87fc664..89d895f80 100644 --- a/world/main.cpp +++ b/world/main.cpp @@ -93,7 +93,6 @@ ClientList client_list; GroupLFPList LFPGroupList; -ZSList zoneserver_list; LauncherList launcher_list; volatile bool RunLoops = true; uint32 numclients = 0; @@ -173,7 +172,7 @@ int main(int argc, char **argv) // global loads LogInfo("Loading launcher list"); launcher_list.LoadList(); - zoneserver_list.Init(); + ZSList::Instance()->Init(); if (IpUtil::IsPortInUse(Config->WorldIP, Config->WorldTCPPort)) { LogError("World port [{}] already in use", Config->WorldTCPPort); @@ -207,7 +206,7 @@ int main(int argc, char **argv) server_connection->OnConnectionIdentified( "Zone", [&console](std::shared_ptr connection) { numzones++; - zoneserver_list.Add(new ZoneServer(connection, console.get())); + ZSList::Instance()->Add(new ZoneServer(connection, console.get())); LogInfo( "New Zone Server connection from [{}] at [{}:{}] zone_count [{}]", @@ -222,7 +221,7 @@ int main(int argc, char **argv) server_connection->OnConnectionRemoved( "Zone", [](std::shared_ptr connection) { numzones--; - zoneserver_list.Remove(connection->GetUUID()); + ZSList::Instance()->Remove(connection->GetUUID()); LogInfo( "Removed Zone Server connection from [{}] total zone_count [{}]", @@ -290,7 +289,7 @@ int main(int argc, char **argv) UCSConnection::Instance()->SetConnection(connection); - zoneserver_list.UpdateUCSServerAvailable(); + ZSList::Instance()->UpdateUCSServerAvailable(); } ); @@ -303,7 +302,7 @@ int main(int argc, char **argv) if (ucs_connection->GetUUID() == connection->GetUUID()) { LogInfo("Removing currently active UCS connection"); UCSConnection::Instance()->SetConnection(nullptr); - zoneserver_list.UpdateUCSServerAvailable(false); + ZSList::Instance()->UpdateUCSServerAvailable(false); } } ); @@ -346,10 +345,10 @@ int main(int argc, char **argv) //register all the patches we have avaliable with the stream identifier. EQStreamIdentifier stream_identifier; RegisterAllPatches(stream_identifier); - zoneserver_list.shutdowntimer = new Timer(60000); - zoneserver_list.shutdowntimer->Disable(); - zoneserver_list.reminder = new Timer(20000); - zoneserver_list.reminder->Disable(); + ZSList::Instance()->shutdowntimer = new Timer(60000); + ZSList::Instance()->shutdowntimer->Disable(); + ZSList::Instance()->reminder = new Timer(20000); + ZSList::Instance()->reminder->Disable(); Timer InterserverTimer(INTERSERVER_TIMER); // does MySQL pings and auto-reconnect InterserverTimer.Trigger(); uint8 ReconnectCounter = 100; @@ -414,7 +413,7 @@ int main(int argc, char **argv) } } - WorldEventScheduler::Instance()->Process(&zoneserver_list); + WorldEventScheduler::Instance()->Process(ZSList::Instance()); client_list.Process(); guild_mgr.Process(); @@ -427,7 +426,7 @@ int main(int argc, char **argv) ); auto out = std::make_unique(ServerOP_ParcelPrune); - zoneserver_list.SendPacketToBootedZones(out.get()); + ZSList::Instance()->SendPacketToBootedZones(out.get()); database.PurgeCharacterParcels(); } @@ -442,7 +441,7 @@ int main(int argc, char **argv) if (EQTimeTimer.Check()) { TimeOfDay_Struct tod{}; - zoneserver_list.worldclock.GetCurrentEQTimeOfDay(time(nullptr), &tod); + ZSList::Instance()->worldclock.GetCurrentEQTimeOfDay(time(nullptr), &tod); if (!database.SaveTime(tod.minute, tod.hour, tod.day, tod.month, tod.year)) { LogEqTime("Failed to save eqtime"); } @@ -457,7 +456,7 @@ int main(int argc, char **argv) } } - zoneserver_list.Process(); + ZSList::Instance()->Process(); launcher_list.Process(); LFPGroupList.Process(); AdventureManager::Instance()->Process(); @@ -491,7 +490,7 @@ int main(int argc, char **argv) LogInfo("World main loop completed"); LogInfo("Shutting down zone connections (if any)"); - zoneserver_list.KillAll(); + ZSList::Instance()->KillAll(); LogInfo("Zone (TCP) listener stopped"); LogInfo("Signaling HTTP service to stop"); EQEmuLogSys::Instance()->CloseFileLogs(); diff --git a/world/queryserv.cpp b/world/queryserv.cpp index 847cb90e0..f93c0cc9e 100644 --- a/world/queryserv.cpp +++ b/world/queryserv.cpp @@ -10,7 +10,6 @@ #include "../common/packet_dump.h" extern ClientList client_list; -extern ZSList zoneserver_list; QueryServConnection::QueryServConnection() { @@ -36,12 +35,12 @@ void QueryServConnection::HandleGenericMessage(uint16_t opcode, EQ::Net::Packet uint32 ZoneID = p.GetUInt32(0); uint16 InstanceID = p.GetUInt32(4); ServerPacket pack(opcode, p); - zoneserver_list.SendPacket(ZoneID, InstanceID, &pack); + ZSList::Instance()->SendPacket(ZoneID, InstanceID, &pack); } void QueryServConnection::HandleLFGuildUpdateMessage(uint16_t opcode, EQ::Net::Packet &p) { ServerPacket pack(opcode, p); - zoneserver_list.SendPacket(&pack); + ZSList::Instance()->SendPacket(&pack); } bool QueryServConnection::SendPacket(ServerPacket* pack) diff --git a/world/shared_task_manager.cpp b/world/shared_task_manager.cpp index ecdd520f2..7caa4c7b9 100644 --- a/world/shared_task_manager.cpp +++ b/world/shared_task_manager.cpp @@ -18,7 +18,6 @@ #include extern ClientList client_list; -extern ZSList zoneserver_list; SharedTaskManager::SharedTaskManager() : m_process_timer{ static_cast(RuleI(TaskSystem, SharedTasksWorldProcessRate)) } diff --git a/world/shared_task_world_messaging.cpp b/world/shared_task_world_messaging.cpp index c848af89d..20e7338e9 100644 --- a/world/shared_task_world_messaging.cpp +++ b/world/shared_task_world_messaging.cpp @@ -15,7 +15,6 @@ #include "dynamic_zone.h" extern ClientList client_list; -extern ZSList zoneserver_list; void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack) { @@ -297,7 +296,7 @@ void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack) 0 ); - zoneserver_list.SendPacket(p.get()); + ZSList::Instance()->SendPacket(p.get()); break; } diff --git a/world/web_interface_eqw.cpp b/world/web_interface_eqw.cpp index 832f8e8c6..94975f434 100644 --- a/world/web_interface_eqw.cpp +++ b/world/web_interface_eqw.cpp @@ -7,7 +7,6 @@ #include "launcher_list.h" extern ClientList client_list; -extern ZSList zoneserver_list; extern LauncherList launcher_list; void EQW__GetConfig(WebInterface *i, const std::string& method, const std::string& id, const Json::Value& params) { @@ -58,7 +57,7 @@ void EQW__GetPlayerCount(WebInterface *i, const std::string& method, const std:: } void EQW__GetZoneCount(WebInterface *i, const std::string& method, const std::string& id, const Json::Value& params) { - Json::Value ret = zoneserver_list.GetZoneCount(); + Json::Value ret = ZSList::Instance()->GetZoneCount(); i->SendResponse(id, ret); } diff --git a/world/wguild_mgr.cpp b/world/wguild_mgr.cpp index 3c7050ba8..a77471244 100644 --- a/world/wguild_mgr.cpp +++ b/world/wguild_mgr.cpp @@ -36,7 +36,6 @@ extern ClientList client_list; -extern ZSList zoneserver_list; std::map tribute_list; WorldGuildManager guild_mgr; @@ -50,7 +49,7 @@ void WorldGuildManager::SendGuildRefresh(uint32 guild_id, bool name, bool motd, s->motd_change = motd; s->rank_change = rank; s->relation_change = relation; - zoneserver_list.SendPacketToZonesWithGuild(guild_id, pack); + ZSList::Instance()->SendPacketToZonesWithGuild(guild_id, pack); safe_delete(pack); } @@ -61,7 +60,7 @@ void WorldGuildManager::SendCharRefresh(uint32 old_guild_id, uint32 guild_id, ui s->guild_id = guild_id; s->old_guild_id = old_guild_id; s->char_id = charid; - zoneserver_list.SendPacketToZonesWithGuild(guild_id, pack); + ZSList::Instance()->SendPacketToZonesWithGuild(guild_id, pack); safe_delete(pack); } @@ -70,7 +69,7 @@ void WorldGuildManager::SendGuildDelete(uint32 guild_id) { auto pack = new ServerPacket(ServerOP_DeleteGuild, sizeof(ServerGuildID_Struct)); ServerGuildID_Struct *s = (ServerGuildID_Struct *) pack->pBuffer; s->guild_id = guild_id; - zoneserver_list.SendPacketToZonesWithGuild(guild_id, pack); + ZSList::Instance()->SendPacketToZonesWithGuild(guild_id, pack); safe_delete(pack); } @@ -91,7 +90,7 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) { } //broadcast this packet to all zones. - zoneserver_list.SendPacketToBootedZones(pack); + ZSList::Instance()->SendPacketToBootedZones(pack); break; } @@ -107,7 +106,7 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) { //broadcast this update to any zone with a member in this guild. //because im sick of this not working, sending it to all zones, just spends a bit more bandwidth. - zoneserver_list.SendPacketToZonesWithGuild(s->guild_id, pack); + ZSList::Instance()->SendPacketToZonesWithGuild(s->guild_id, pack); break; } @@ -130,7 +129,7 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) { LogGuilds("Received and broadcasting guild delete for guild [{}]", s->guild_id); //broadcast this packet to all zones. - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } @@ -146,7 +145,7 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) { auto s = (ServerGuildID_Struct *)pack->pBuffer; RefreshGuild(s->guild_id); - zoneserver_list.SendPacketToZonesWithGuild(s->guild_id, pack); + ZSList::Instance()->SendPacketToZonesWithGuild(s->guild_id, pack); break; } case ServerOP_GuildPermissionUpdate: @@ -178,7 +177,7 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) { sg->function_value ); - zoneserver_list.SendPacketToZonesWithGuild(sg->guild_id, pack); + ZSList::Instance()->SendPacketToZonesWithGuild(sg->guild_id, pack); } else { LogError("World Received ServerOP_GuildPermissionUpdate for guild [{}] function id {} with value of {} but guild could not be found.", @@ -212,7 +211,7 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) { rnc->rank, rnc->rank_name ); - zoneserver_list.SendPacketToZonesWithGuild(rnc->guild_id, pack); + ZSList::Instance()->SendPacketToZonesWithGuild(rnc->guild_id, pack); } else { LogError("World Received ServerOP_GuildRankNameChange from zone for guild [{}] rank id {} with new name of {} but could not find guild.", @@ -232,7 +231,7 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) { case ServerOP_GuildMembersList: { auto in = (ServerOP_GuildMessage_Struct *) pack->pBuffer; - zoneserver_list.SendPacketToZonesWithGuild(in->guild_id, pack); + ZSList::Instance()->SendPacketToZonesWithGuild(in->guild_id, pack); break; } case ServerOP_GuildMemberAdd: @@ -243,12 +242,12 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) { BaseGuildManager::RefreshGuild(in->guild_id); } - zoneserver_list.SendPacketToZonesWithGuild(in->guild_id, pack); + ZSList::Instance()->SendPacketToZonesWithGuild(in->guild_id, pack); break; } case ServerOP_GuildSendGuildList: { auto in = (ServerOP_GuildMessage_Struct *) pack->pBuffer; - zoneserver_list.SendPacketToBootedZones(pack); + ZSList::Instance()->SendPacketToBootedZones(pack); break; } @@ -456,6 +455,6 @@ void WorldGuildManager::SendGuildTributeFavorAndTimer(uint32 guild_id, uint32 fa data->tribute_timer = time; data->trophy_timer = 0; - zoneserver_list.SendPacketToZonesWithGuild(guild_id, sp); + ZSList::Instance()->SendPacketToZonesWithGuild(guild_id, sp); safe_delete(sp) } diff --git a/world/world_boot.cpp b/world/world_boot.cpp index 27e776b56..19667927c 100644 --- a/world/world_boot.cpp +++ b/world/world_boot.cpp @@ -29,7 +29,6 @@ #include "../common/database/database_update.h" #include "../common/repositories/zone_state_spawns_repository.h" -extern ZSList zoneserver_list; extern WorldConfig Config; auto mutex = new Mutex; @@ -53,7 +52,7 @@ void WorldBoot::GMSayHookCallBackProcessWorld(uint16 log_category, const char *f auto message_split = Strings::Split(message, '\n'); for (size_t iter = 0; iter < message_split.size(); ++iter) { - zoneserver_list.SendEmoteMessage( + ZSList::Instance()->SendEmoteMessage( 0, 0, AccountStatus::QuestTroupe, @@ -69,7 +68,7 @@ void WorldBoot::GMSayHookCallBackProcessWorld(uint16 log_category, const char *f return; } - zoneserver_list.SendEmoteMessage( + ZSList::Instance()->SendEmoteMessage( 0, 0, AccountStatus::QuestTroupe, @@ -351,7 +350,7 @@ bool WorldBoot::DatabaseLoadRoutines(int argc, char **argv) TimeOfDay_Struct eqTime{}; time_t realtime; eqTime = database.LoadTime(realtime); - zoneserver_list.worldclock.SetCurrentEQTimeOfDay(eqTime, realtime); + ZSList::Instance()->worldclock.SetCurrentEQTimeOfDay(eqTime, realtime); LogInfo("Deleted [{}] stale player corpses from database", database.DeleteStalePlayerCorpses()); diff --git a/world/zonelist.h b/world/zonelist.h index e9f643ea6..43dd52b44 100644 --- a/world/zonelist.h +++ b/world/zonelist.h @@ -79,6 +79,13 @@ public: std::vector m_queued_reloads = {}; void QueueServerReload(ServerReload::Type &type); + + static ZSList* Instance() + { + static ZSList instance; + return &instance; + } + private: void OnTick(EQ::Timer *t); uint32 NextID; diff --git a/world/zoneserver.cpp b/world/zoneserver.cpp index 7797525af..408d0faec 100644 --- a/world/zoneserver.cpp +++ b/world/zoneserver.cpp @@ -54,7 +54,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA extern ClientList client_list; extern GroupLFPList LFPGroupList; -extern ZSList zoneserver_list; extern volatile bool RunLoops; extern volatile bool UCSServerAvailable_; @@ -69,7 +68,7 @@ ZoneServer::ZoneServer(std::shared_ptr in_c memset(client_address, 0, sizeof(client_address)); memset(client_local_address, 0, sizeof(client_local_address)); - zone_server_id = zoneserver_list.GetNextID(); + zone_server_id = ZSList::Instance()->GetNextID(); zone_server_zone_id = 0; instance_id = 0; zone_os_process_id = 0; @@ -242,7 +241,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { break; } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_GroupJoin: { @@ -250,7 +249,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { break; } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_ForceGroupUpdate: { @@ -258,7 +257,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { break; } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_DisbandGroup: { @@ -266,7 +265,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { break; } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_RaidAdd: { @@ -274,7 +273,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { break; } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_RaidRemove: { @@ -282,7 +281,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { break; } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_RaidDisband: { @@ -290,7 +289,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { break; } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_RaidLockFlag: { @@ -298,7 +297,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { break; } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_RaidChangeGroup: { @@ -306,7 +305,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { break; } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_UpdateGroup: { @@ -314,7 +313,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { break; } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_RaidGroupDisband: { @@ -322,7 +321,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { break; } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_RaidGroupAdd: { @@ -330,7 +329,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { break; } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_RaidGroupRemove: { @@ -338,7 +337,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { break; } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_RaidGroupLeader: { @@ -346,7 +345,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { break; } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_RaidLeader: { @@ -354,7 +353,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { break; } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_PlayerEvent: { @@ -386,7 +385,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { break; } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_RaidMOTD: { @@ -394,7 +393,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { break; } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_RaidNote: { @@ -402,7 +401,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { break; } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_SpawnCondition: { @@ -411,7 +410,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { } auto ssc = (ServerSpawnCondition_Struct*) pack->pBuffer; - zoneserver_list.SendPacket(ssc->zoneID, ssc->instanceID, pack); + ZSList::Instance()->SendPacket(ssc->zoneID, ssc->instanceID, pack); break; } case ServerOP_SpawnEvent: { @@ -420,7 +419,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { } auto sse = (ServerSpawnEvent_Struct*) pack->pBuffer; - zoneserver_list.SendPacket(sse->zoneID, 0, pack); + ZSList::Instance()->SendPacket(sse->zoneID, 0, pack); break; } case ServerOP_ChannelMessage: { @@ -456,7 +455,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { ) && !scm->noreply ) { - zoneserver_list.SendEmoteMessage( + ZSList::Instance()->SendEmoteMessage( scm->from, 0, AccountStatus::Player, @@ -530,7 +529,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { } } else if (!cle->Server()) { if (!scm->noreply) - zoneserver_list.SendEmoteMessage( + ZSList::Instance()->SendEmoteMessage( scm->from, 0, AccountStatus::Player, @@ -568,11 +567,11 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { } } if (scm->guilddbid > 0) { - zoneserver_list.SendPacketToZonesWithGuild(scm->guilddbid, pack); + ZSList::Instance()->SendPacketToZonesWithGuild(scm->guilddbid, pack); } else if (scm->chan_num == ChatChannel_GMSAY) { - zoneserver_list.SendPacketToZonesWithGMs(pack); + ZSList::Instance()->SendPacketToZonesWithGMs(pack); } else { - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); } } @@ -580,7 +579,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { } case ServerOP_EmoteMessage: { auto sem = (ServerEmoteMessage_Struct*) pack->pBuffer; - zoneserver_list.SendEmoteMessageRaw( + ZSList::Instance()->SendEmoteMessageRaw( sem->to, sem->guilddbid, sem->minstatus, @@ -598,7 +597,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { cle->Online() < CLE_Status::Zoning || !cle->Server() ) { - zoneserver_list.SendEmoteMessage( + ZSList::Instance()->SendEmoteMessage( svm->From, 0, AccountStatus::Player, @@ -612,14 +611,14 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { } cle->Server()->SendPacket(pack); } else { - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); } break; } case ServerOP_RezzPlayer: { auto rps = (RezzPlayer_Struct*) pack->pBuffer; - if (zoneserver_list.SendPacket(pack)) { + if (ZSList::Instance()->SendPacket(pack)) { LogInfo("Sent Rez packet for [{}]", rps->rez.your_name); } else { LogInfo("Could not send Rez packet for [{}]", rps->rez.your_name); @@ -663,7 +662,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { auto sci = (ServerConnectInfo*) pack->pBuffer; if (!sci->port) { - client_port = zoneserver_list.GetAvailableZonePort(); + client_port = ZSList::Instance()->GetAvailableZonePort(); ServerPacket p(ServerOP_SetConnectInfo, sizeof(ServerConnectInfo)); memset(p.pBuffer, 0, sizeof(ServerConnectInfo)); @@ -705,20 +704,20 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { } case ServerOP_ShutdownAll: { if (!pack->size) { - zoneserver_list.SendPacket(pack); - zoneserver_list.Process(); + ZSList::Instance()->SendPacket(pack); + ZSList::Instance()->Process(); CatchSignal(2); } else { auto wsd = (WorldShutDown_Struct*) pack->pBuffer; - if (!wsd->time && !wsd->interval && zoneserver_list.shutdowntimer->Enabled()) { - zoneserver_list.shutdowntimer->Disable(); - zoneserver_list.reminder->Disable(); + if (!wsd->time && !wsd->interval && ZSList::Instance()->shutdowntimer->Enabled()) { + ZSList::Instance()->shutdowntimer->Disable(); + ZSList::Instance()->reminder->Disable(); } else { - zoneserver_list.shutdowntimer->SetTimer(wsd->time); - zoneserver_list.reminder->SetTimer(wsd->interval - 1000); - zoneserver_list.reminder->SetAtTrigger(wsd->interval); - zoneserver_list.shutdowntimer->Start(); - zoneserver_list.reminder->Start(); + ZSList::Instance()->shutdowntimer->SetTimer(wsd->time); + ZSList::Instance()->reminder->SetTimer(wsd->interval - 1000); + ZSList::Instance()->reminder->SetAtTrigger(wsd->interval); + ZSList::Instance()->shutdowntimer->Start(); + ZSList::Instance()->reminder->Start(); } } @@ -728,13 +727,13 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { auto *s = (ServerZoneStateChange_Struct*) pack->pBuffer; ZoneServer* zs = 0; if (s->zone_server_id) { - zs = zoneserver_list.FindByID(s->zone_server_id); + zs = ZSList::Instance()->FindByID(s->zone_server_id); } else if (s->zone_id) { - zs = zoneserver_list.FindByName(ZoneName(s->zone_id)); + zs = ZSList::Instance()->FindByName(ZoneName(s->zone_id)); } else if (s->instance_id) { - zs = zoneserver_list.FindByInstanceID(s->instance_id); + zs = ZSList::Instance()->FindByInstanceID(s->instance_id); } else { - zoneserver_list.SendEmoteMessage( + ZSList::Instance()->SendEmoteMessage( s->admin_name, 0, AccountStatus::Player, @@ -744,7 +743,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { } if (!zs) { - zoneserver_list.SendEmoteMessage( + ZSList::Instance()->SendEmoteMessage( s->admin_name, 0, AccountStatus::Player, @@ -759,13 +758,13 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { } case ServerOP_ZoneBootup: { auto *s = (ServerZoneStateChange_Struct*) pack->pBuffer; - zoneserver_list.SOPZoneBootup(s->admin_name, s->zone_server_id, ZoneName(s->zone_id), s->is_static); + ZSList::Instance()->SOPZoneBootup(s->admin_name, s->zone_server_id, ZoneName(s->zone_id), s->is_static); break; } case ServerOP_ZoneStatus: { if (pack->size >= 1) { auto z = (ServerZoneStatus_Struct*) pack->pBuffer; - zoneserver_list.SendZoneStatus(z->name, z->admin, this); + ZSList::Instance()->SendZoneStatus(z->name, z->admin, this); } break; @@ -829,7 +828,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { if ( ztz->admin < AccountStatus::QuestTroupe && ztz->ignorerestrictions < 2 && - zoneserver_list.IsZoneLocked(ztz->requested_zone_id) + ZSList::Instance()->IsZoneLocked(ztz->requested_zone_id) ) { ztz->response = 0; @@ -846,8 +845,8 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { auto ingress_server = ( ztz->requested_instance_id ? - zoneserver_list.FindByInstanceID(ztz->requested_instance_id) : - zoneserver_list.FindByZoneID(ztz->requested_zone_id) + ZSList::Instance()->FindByInstanceID(ztz->requested_instance_id) : + ZSList::Instance()->FindByZoneID(ztz->requested_zone_id) ); if (ingress_server) { @@ -861,7 +860,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { ztz->response = 1; } else { int server_id; - if ((server_id = zoneserver_list.TriggerBootup(ztz->requested_zone_id, ztz->requested_instance_id))) { + if ((server_id = ZSList::Instance()->TriggerBootup(ztz->requested_zone_id, ztz->requested_instance_id))) { LogZoning( "ZoneToZone successfully booted a zone for character [{}] zone [{}] ({}) instance [{}] ({})", ztz->name, @@ -871,7 +870,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { server_id ); ztz->response = 1; - ingress_server = zoneserver_list.FindByID(server_id); + ingress_server = ZSList::Instance()->FindByID(server_id); } else { LogError("failed to boot a zone for [{}]", ztz->name); ztz->response = 0; @@ -895,8 +894,8 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { ); auto egress_server = ( ztz->current_instance_id ? - zoneserver_list.FindByInstanceID(ztz->current_instance_id) : - zoneserver_list.FindByZoneID(ztz->current_zone_id) + ZSList::Instance()->FindByInstanceID(ztz->current_instance_id) : + ZSList::Instance()->FindByZoneID(ztz->current_zone_id) ); if (egress_server) { @@ -1006,7 +1005,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { cle->SetAdmin(*((int16*)&pack->pBuffer[4])); } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_GMGoto: { @@ -1106,7 +1105,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { auto smotd = (ServerMotd_Struct*) pack->pBuffer; RuleManager::Instance()->SetRule("MOTD", smotd->motd, &database, true, true); - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_Uptime: { @@ -1119,7 +1118,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { if (!sus->zoneserverid) { ZSList::ShowUpTime(this, sus->adminname); } else { - auto zs = zoneserver_list.FindByID(sus->zoneserverid); + auto zs = ZSList::Instance()->FindByID(sus->zoneserverid); if (zs) { zs->SendPacket(pack); } @@ -1136,8 +1135,8 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { pack->pBuffer = new uchar[pack->size]; memset(pack->pBuffer, 0, pack->size); auto tod = (eqTimeOfDay*) pack->pBuffer; - tod->start_eqtime = zoneserver_list.worldclock.getStartEQTime(); - tod->start_realtime = zoneserver_list.worldclock.getStartRealTime(); + tod->start_eqtime = ZSList::Instance()->worldclock.getStartEQTime(); + tod->start_realtime = ZSList::Instance()->worldclock.getStartRealTime(); SendPacket(pack); safe_delete(pack); break; @@ -1145,10 +1144,10 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { case ServerOP_SetWorldTime: { LogNetcode("Received SetWorldTime"); auto newtime = (eqTimeOfDay*) pack->pBuffer; - zoneserver_list.worldclock.SetCurrentEQTimeOfDay(newtime->start_eqtime, newtime->start_realtime); + ZSList::Instance()->worldclock.SetCurrentEQTimeOfDay(newtime->start_eqtime, newtime->start_realtime); LogInfo("New time = [{}]-[{}]-[{}] [{}]:[{}] ([{}])\n", newtime->start_eqtime.year, newtime->start_eqtime.month, (int)newtime->start_eqtime.day, (int)newtime->start_eqtime.hour, (int)newtime->start_eqtime.minute, (int)newtime->start_realtime); database.SaveTime((int)newtime->start_eqtime.minute, (int)newtime->start_eqtime.hour, (int)newtime->start_eqtime.day, newtime->start_eqtime.month, newtime->start_eqtime.year); - zoneserver_list.SendTimeSync(); + ZSList::Instance()->SendTimeSync(); break; } case ServerOP_IPLookup: { @@ -1174,14 +1173,14 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { auto lock_zone = (ServerLockZone_Struct*) pack->pBuffer; if (lock_zone->op == ServerLockType::List) { - zoneserver_list.ListLockedZones(lock_zone->adminname, this); + ZSList::Instance()->ListLockedZones(lock_zone->adminname, this); break; } else if ( lock_zone->op == ServerLockType::Lock || lock_zone->op == ServerLockType::Unlock ) { - if (zoneserver_list.SetLockedZone(lock_zone->zoneID, lock_zone->op == ServerLockType::Lock)) { - zoneserver_list.SendEmoteMessage( + if (ZSList::Instance()->SetLockedZone(lock_zone->zoneID, lock_zone->op == ServerLockType::Lock)) { + ZSList::Instance()->SendEmoteMessage( 0, 0, AccountStatus::QuestTroupe, @@ -1225,7 +1224,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { } case ServerOP_SpawnPlayerCorpse: { auto s = (SpawnPlayerCorpse_Struct*) pack->pBuffer; - auto zs = zoneserver_list.FindByZoneID(s->zone_id); + auto zs = ZSList::Instance()->FindByZoneID(s->zone_id); if (zs) { zs->SendPacket(pack); } @@ -1237,8 +1236,8 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { auto owner_zs = ( s->instance_id ? - zoneserver_list.FindByInstanceID(s->instance_id) : - zoneserver_list.FindByZoneID(s->zone_id) + ZSList::Instance()->FindByInstanceID(s->instance_id) : + ZSList::Instance()->FindByZoneID(s->zone_id) ); if (owner_zs) { @@ -1252,8 +1251,8 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { if (cle) { auto granted_zs = ( cle->instance() ? - zoneserver_list.FindByInstanceID(cle->instance()) : - zoneserver_list.FindByZoneID(cle->zone()) + ZSList::Instance()->FindByInstanceID(cle->instance()) : + ZSList::Instance()->FindByZoneID(cle->zone()) ); if (granted_zs && granted_zs != owner_zs) { @@ -1266,7 +1265,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { } case ServerOP_InstanceUpdateTime: { auto iut = (ServerInstanceUpdateTime_Struct*) pack->pBuffer; - auto zm = zoneserver_list.FindByInstanceID(iut->instance_id); + auto zm = ZSList::Instance()->FindByInstanceID(iut->instance_id); if (zm) { zm->SendPacket(pack); } @@ -1278,7 +1277,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { break; } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_QGlobalDelete: { @@ -1286,7 +1285,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { break; } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_AdventureRequest: { @@ -1344,7 +1343,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { } case ServerOP_UCSServerStatusRequest: { auto ucsss = (UCSServerStatus_Struct*) pack->pBuffer; - auto zs = zoneserver_list.FindByPort(ucsss->port); + auto zs = ZSList::Instance()->FindByPort(ucsss->port); if (!zs) { break; } @@ -1398,12 +1397,12 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { case ServerOP_WWSpell: case ServerOP_WWTaskUpdate: case ServerOP_ZonePlayer: { - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_ServerReloadRequest: { auto o = (ServerReload::Request*) pack->pBuffer; - zoneserver_list.SendServerReload((ServerReload::Type) o->type, pack->pBuffer); + ZSList::Instance()->SendServerReload((ServerReload::Type) o->type, pack->pBuffer); break; } case ServerOP_IsOwnerOnline: { @@ -1425,7 +1424,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { ); } - auto zs = zoneserver_list.FindByZoneID(o->zone_id); + auto zs = ZSList::Instance()->FindByZoneID(o->zone_id); if (zs) { zs->SendPacket(pack); } @@ -1439,7 +1438,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { LogInfo("Error: Could not load item data. But ignoring"); } - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); break; } case ServerOP_RequestTellQueue: { @@ -1514,7 +1513,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { guild->tribute.timer.Disable(); - zoneserver_list.SendPacketToZonesWithGuild(data->guild_id, pack); + ZSList::Instance()->SendPacketToZonesWithGuild(data->guild_id, pack); } break; } @@ -1557,7 +1556,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { guild_mgr.UpdateDbGuildFavor(data->guild_id, data->favor); guild_mgr.UpdateDbTributeTimeRemaining(data->guild_id, data->time_remaining); - zoneserver_list.SendPacketToZonesWithGuild(data->guild_id, pack); + ZSList::Instance()->SendPacketToZonesWithGuild(data->guild_id, pack); } break; } @@ -1591,7 +1590,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { data->time_remaining = in->time_remaining; strn0cpy(data->player_name, in->player_name, sizeof(data->player_name)); - zoneserver_list.SendPacketToZonesWithGuild(in->guild_id, out); + ZSList::Instance()->SendPacketToZonesWithGuild(in->guild_id, out); safe_delete(out); } break; @@ -1614,7 +1613,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { out->tribute_id_2_tier = guild->tribute.id_2_tier; out->time_remaining = guild_mgr.GetGuildTributeTimeRemaining(in->guild_id); - zoneserver_list.SendPacketToZonesWithGuild(in->guild_id, sp); + ZSList::Instance()->SendPacketToZonesWithGuild(in->guild_id, sp); safe_delete(sp); } @@ -1634,7 +1633,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { out->tribute_timer = guild_mgr.GetGuildTributeTimeRemaining(in->guild_id); out->trophy_timer = 0; - zoneserver_list.SendPacketToZonesWithGuild(in->guild_id, sp); + ZSList::Instance()->SendPacketToZonesWithGuild(in->guild_id, sp); safe_delete(sp); } @@ -1658,7 +1657,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { out->member_time = in->member_time; strn0cpy(out->player_name, in->player_name, sizeof(out->player_name)); - zoneserver_list.SendPacketToZonesWithGuild(out->guild_id, sp); + ZSList::Instance()->SendPacketToZonesWithGuild(out->guild_id, sp); safe_delete(sp) } break; @@ -1672,7 +1671,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { return; } - zoneserver_list.SendPacketToBootedZones(pack); + ZSList::Instance()->SendPacketToBootedZones(pack); break; } case ServerOP_BazaarPurchase: { @@ -1688,7 +1687,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { auto trader = client_list.FindCLEByCharacterID(in->trader_buy_struct.trader_id); if (trader) { - zoneserver_list.SendPacket(trader->zone(), trader->instance(), pack); + ZSList::Instance()->SendPacket(trader->zone(), trader->instance(), pack); } break; @@ -1706,13 +1705,13 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { return; } - zoneserver_list.SendPacketToBootedZones(pack); + ZSList::Instance()->SendPacketToBootedZones(pack); break; } case Barter_SellItem: { auto buyer = client_list.FindCharacter(in->buyer_name); if (buyer) { - zoneserver_list.SendPacket(buyer->zone(), buyer->instance(), pack); + ZSList::Instance()->SendPacket(buyer->zone(), buyer->instance(), pack); } break; @@ -1721,7 +1720,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { case Barter_BuyerTransactionComplete: { auto seller = client_list.FindCharacter(in->seller_name); if (seller) { - zoneserver_list.SendPacket(seller->zone(), seller->instance(), pack); + ZSList::Instance()->SendPacket(seller->zone(), seller->instance(), pack); } break; @@ -1789,7 +1788,7 @@ void ZoneServer::SendEmoteMessageRaw(const char* to, uint32 to_guilddbid, int16 void ZoneServer::SendGroupIDs() { auto pack = new ServerPacket(ServerOP_GroupIDReply, sizeof(ServerGroupIDReply_Struct)); auto sgi = (ServerGroupIDReply_Struct*) pack->pBuffer; - zoneserver_list.NextGroupIDs(sgi->start, sgi->end); + ZSList::Instance()->NextGroupIDs(sgi->start, sgi->end); SendPacket(pack); delete pack; } @@ -1806,7 +1805,7 @@ void ZoneServer::ChangeWID(uint32 iCharID, uint32 iWID) { auto scw = (ServerChangeWID_Struct*) pack->pBuffer; scw->charid = iCharID; scw->newwid = iWID; - zoneserver_list.SendPacket(pack); + ZSList::Instance()->SendPacket(pack); delete pack; }