[Code] EQ::Random Global to Singleton Cleanup (#4936)

This commit is contained in:
Alex King 2025-06-22 14:13:58 -04:00 committed by GitHub
parent 2f4a5b56dd
commit f0c041e8b3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 11 additions and 10 deletions

View File

@ -116,6 +116,12 @@ namespace EQ {
Reseed(); Reseed();
} }
static Random* Instance()
{
static Random instance;
return &instance;
}
private: private:
#ifndef BIASED_INT_DIST #ifndef BIASED_INT_DIST
typedef std::uniform_int_distribution<int>::param_type int_param_t; typedef std::uniform_int_distribution<int>::param_type int_param_t;

View File

@ -18,7 +18,6 @@
extern ZSList zoneserver_list; extern ZSList zoneserver_list;
extern ClientList client_list; extern ClientList client_list;
extern AdventureManager adventure_manager; extern AdventureManager adventure_manager;
extern EQ::Random emu_random;
Adventure::Adventure(AdventureTemplate *t) Adventure::Adventure(AdventureTemplate *t)
{ {
@ -368,8 +367,8 @@ void Adventure::MoveCorpsesToGraveyard()
glm::vec4 position; glm::vec4 position;
float x = GetTemplate()->graveyard_x + emu_random.Real(-GetTemplate()->graveyard_radius, GetTemplate()->graveyard_radius); float x = GetTemplate()->graveyard_x + EQ::Random::Instance()->Real(-GetTemplate()->graveyard_radius, GetTemplate()->graveyard_radius);
float y = GetTemplate()->graveyard_y + emu_random.Real(-GetTemplate()->graveyard_radius, GetTemplate()->graveyard_radius); float y = GetTemplate()->graveyard_y + EQ::Random::Instance()->Real(-GetTemplate()->graveyard_radius, GetTemplate()->graveyard_radius);
float z = GetTemplate()->graveyard_z; float z = GetTemplate()->graveyard_z;
position.x = x; position.x = x;

View File

@ -16,7 +16,6 @@
extern ZSList zoneserver_list; extern ZSList zoneserver_list;
extern ClientList client_list; extern ClientList client_list;
extern EQ::Random emu_random;
AdventureManager::AdventureManager() AdventureManager::AdventureManager()
{ {
@ -324,7 +323,7 @@ void AdventureManager::CalculateAdventureRequestReply(const char *data)
if(eligible_adventures.size() > 0) if(eligible_adventures.size() > 0)
{ {
ea_iter = eligible_adventures.begin(); ea_iter = eligible_adventures.begin();
int c_index = emu_random.Int(0, (eligible_adventures.size()-1)); int c_index = EQ::Random::Instance()->Int(0, (eligible_adventures.size()-1));
for(int i = 0; i < c_index; ++i) for(int i = 0; i < c_index; ++i)
{ {
++ea_iter; ++ea_iter;

View File

@ -91,7 +91,6 @@ std::vector<RaceClassCombos> character_create_race_class_combos;
extern ZSList zoneserver_list; extern ZSList zoneserver_list;
extern LoginServerList loginserverlist; extern LoginServerList loginserverlist;
extern ClientList client_list; extern ClientList client_list;
extern EQ::Random emu_random;
extern uint32 numclients; extern uint32 numclients;
extern volatile bool RunLoops; extern volatile bool RunLoops;
extern volatile bool UCSServerAvailable_; extern volatile bool UCSServerAvailable_;
@ -984,7 +983,7 @@ bool Client::HandleEnterWorldPacket(const EQApplicationPacket *app) {
safe_delete(outapp); safe_delete(outapp);
// set mailkey - used for duration of character session // set mailkey - used for duration of character session
int mail_key = emu_random.Int(1, INT_MAX); int mail_key = EQ::Random::Instance()->Int(1, INT_MAX);
database.SetMailKey(charid, GetIP(), mail_key); database.SetMailKey(charid, GetIP(), mail_key);
if (UCSServerAvailable_) { if (UCSServerAvailable_) {

View File

@ -102,7 +102,6 @@ LauncherList launcher_list;
AdventureManager adventure_manager; AdventureManager adventure_manager;
WorldEventScheduler event_scheduler; WorldEventScheduler event_scheduler;
SharedTaskManager shared_task_manager; SharedTaskManager shared_task_manager;
EQ::Random emu_random;
volatile bool RunLoops = true; volatile bool RunLoops = true;
uint32 numclients = 0; uint32 numclients = 0;
uint32 numzones = 0; uint32 numzones = 0;

View File

@ -41,7 +41,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#include "../common/repositories/buyer_repository.h" #include "../common/repositories/buyer_repository.h"
extern uint32 numzones; extern uint32 numzones;
extern EQ::Random emu_random;
extern WebInterfaceList web_interface; extern WebInterfaceList web_interface;
extern SharedTaskManager shared_task_manager; extern SharedTaskManager shared_task_manager;
extern ClientList client_list; extern ClientList client_list;
@ -694,7 +693,7 @@ void ZSList::RebootZone(const char* ip1, uint16 port, const char* ip2, uint32 sk
safe_delete_array(tmp); safe_delete_array(tmp);
return; return;
} }
uint32 z = emu_random.Int(0, y - 1); uint32 z = EQ::Random::Instance()->Int(0, y - 1);
auto pack = new ServerPacket(ServerOP_ZoneReboot, sizeof(ServerZoneReboot_Struct)); auto pack = new ServerPacket(ServerOP_ZoneReboot, sizeof(ServerZoneReboot_Struct));
ServerZoneReboot_Struct* s = (ServerZoneReboot_Struct*)pack->pBuffer; ServerZoneReboot_Struct* s = (ServerZoneReboot_Struct*)pack->pBuffer;