/** * @brief A brand new game has been started */ static void SV_InitGame (void) { /* allow next change after map change or restart */ sv_maxclients->flags |= CVAR_LATCH; /* get any latched variable changes (sv_maxclients, etc) */ Cvar_UpdateLatchedVars(); if (svs.serverMutex) Sys_Error("There is still a server running"); svs.clients = (client_t *)Mem_PoolAlloc(sizeof(client_t) * sv_maxclients->integer, sv_genericPool, 0); svs.serverMutex = TH_MutexCreate("server"); /* init network stuff */ if (sv_maxclients->integer > 1) { svs.initialized = SV_Start(NULL, port->string, &SV_ReadPacket); svs.netDatagramSocket = NET_DatagramSocketNew(NULL, Cvar_Get("port", DOUBLEQUOTE(PORT_SERVER), CVAR_NOSET, NULL)->string, &SV_DiscoveryCallback); } else svs.initialized = SV_Start(NULL, NULL, &SV_ReadPacket); SV_Heartbeat_f(); /* init game */ SV_InitGameProgs(); if (sv_maxclients->integer != 1 && (sv_dedicated->integer || sv_public->integer)) SV_SetMaster_f(); }
/** * @brief A brand new game has been started */ static void SV_InitGame (void) { /* allow next change after map change or restart */ sv_maxclients->flags |= CVAR_LATCH; /* get any latched variable changes (sv_maxclients, etc) */ Cvar_UpdateLatchedVars(); if (svs.serverMutex) Sys_Error("There is still a server running"); svs.clients = Mem_PoolAllocTypeN(client_t, sv_maxclients->integer, sv_genericPool); svs.serverMutex = SDL_CreateMutex(); /* init network stuff */ if (sv_maxclients->integer > 1) { svs.initialized = SV_Start(nullptr, port->string, &SV_ReadPacket); svs.netDatagramSocket = NET_DatagramSocketNew(nullptr, port->string, &SV_DiscoveryCallback); } else { svs.initialized = SV_Start(nullptr, nullptr, &SV_ReadPacket); } SV_Heartbeat_f(); /* init game */ SV_InitGameProgs(); if (sv_maxclients->integer > 1 && (sv_dedicated->integer || sv_public->integer)) SV_SetMaster_f(); }