void CON_CvarInit(void) { AM_RegisterCvars(); R_RegisterCvars(); V_RegisterCvars(); ST_RegisterCvars(); S_RegisterCvars(); I_RegisterCvars(); M_RegisterCvars(); P_RegisterCvars(); G_RegisterCvars(); G_AddCommand("listcvars", CMD_ListCvars, 0); }
/* ============ G_InitGame ============ */ void G_InitGame( int levelTime, int randomSeed, int restart ) { int i; G_Printf ("------- Game Initialization -------\n"); G_Printf ("gamename: %s\n", GAMEVERSION); G_Printf ("gamedate: %s\n", __DATE__); srand( randomSeed ); G_RegisterCvars(); G_ProcessIPBans(); G_InitMemory(); // set some level globals memset( &level, 0, sizeof( level ) ); level.time = levelTime; level.startTime = levelTime; level.snd_fry = G_SoundIndex("sound/player/fry.wav"); // FIXME standing in lava / slime if ( g_gametype.integer != GT_SINGLE_PLAYER && g_logfile.string[0] ) { if ( g_logfileSync.integer ) { trap_FS_FOpenFile( g_logfile.string, &level.logFile, FS_APPEND_SYNC ); } else { trap_FS_FOpenFile( g_logfile.string, &level.logFile, FS_APPEND ); } if ( !level.logFile ) { G_Printf( "WARNING: Couldn't open logfile: %s\n", g_logfile.string ); } else { char serverinfo[MAX_INFO_STRING]; trap_GetServerinfo( serverinfo, sizeof( serverinfo ) ); G_LogPrintf("------------------------------------------------------------\n" ); G_LogPrintf("InitGame: %s\n", serverinfo ); } } else { G_Printf( "Not logging to disk.\n" ); } G_InitWorldSession(); // initialize all entities for this game memset( g_entities, 0, MAX_GENTITIES * sizeof(g_entities[0]) ); level.gentities = g_entities; // initialize all clients for this game level.maxclients = g_maxclients.integer; memset( g_clients, 0, MAX_CLIENTS * sizeof(g_clients[0]) ); level.clients = g_clients; // set client fields on player ents for ( i=0 ; i<level.maxclients ; i++ ) { g_entities[i].client = level.clients + i; } // always leave room for the max number of clients, // even if they aren't all used, so numbers inside that // range are NEVER anything but clients level.num_entities = MAX_CLIENTS; for ( i=0 ; i<MAX_CLIENTS ; i++ ) { g_entities[i].classname = "clientslot"; } // let the server system know where the entites are trap_LocateGameData( level.gentities, level.num_entities, sizeof( gentity_t ), &level.clients[0].ps, sizeof( level.clients[0] ) ); // reserve some spots for dead player bodies InitBodyQue(); ClearRegisteredItems(); // parse the key/value pairs and spawn gentities G_SpawnEntitiesFromString(); // general initialization G_FindTeams(); // make sure we have flags for CTF, etc if( g_gametype.integer >= GT_TEAM ) { G_CheckTeamItems(); } SaveRegisteredItems(); G_Printf ("-----------------------------------\n"); if( g_gametype.integer == GT_SINGLE_PLAYER || trap_Cvar_VariableIntegerValue( "com_buildScript" ) ) { G_ModelIndex( SP_PODIUM_MODEL ); } if ( trap_Cvar_VariableIntegerValue( "bot_enable" ) ) { BotAISetup( restart ); BotAILoadMap( restart ); G_InitBots( restart ); } G_RemapTeamShaders(); }
/* ============ G_InitGame ============ */ void G_InitGame( int levelTime, int randomSeed ) { Com_Printf ("------- Game Initialization -------\n"); Com_Printf ("gamename: %s\n", GAME_IDENTIFIER); Com_Printf ("gamedate: %s\n", __DATE__ ); Com_Printf ("mf version: %s\n", MF_VERSION ); srand( randomSeed ); G_RegisterCvars(); G_ProcessIPBans(); G_InitMemory(); // MFQ3: set the game version into a server var (that can be viewed as server-info) Cvar_Set( "mf_version", MF_VERSION ); // MFQ3: (for now) always set the 'g_synchronousClients' var to 0, as setting to 1 // causes glitching/flickering with the models #pragma message( "g_synchronousClients is always being set to 0 in G_InitGame()" ) Cvar_Set( "g_synchronousClients", "0" ); // set some level globals //memset( &level, 0, sizeof( level ) ); theLevel.resetAll(); theLevel.time_ = levelTime; theLevel.startTime_ = levelTime; //level.snd_fry = G_SoundIndex("sound/player/fry.wav"); // FIXME standing in lava / slime if ( g_gametype.integer != GT_SINGLE_PLAYER && g_gametype.integer != GT_MISSION_EDITOR && g_log.string[0] ) { if ( g_logSync.integer ) FS_FOpenFileByMode( g_log.string, &theLevel.logFile_, FS_APPEND_SYNC ); else FS_FOpenFileByMode( g_log.string, &theLevel.logFile_, FS_APPEND ); if ( !theLevel.logFile_ ) Com_Printf( "WARNING: Couldn't open logfile: %s\n", g_log.string ); else { char serverinfo[MAX_INFO_STRING]; SV_GetServerinfo( serverinfo, sizeof( serverinfo ) ); G_LogPrintf("------------------------------------------------------------\n" ); G_LogPrintf("InitGame: %s\n", serverinfo ); } } else Com_Printf( "Not logging to disk.\n" ); G_InitWorldSession(); // initialize all entities for this game //memset( g_entities, 0, MAX_GENTITIES * sizeof(g_entities[0]) ); //level.gentities = g_entities; // initialize all clients for this game theLevel.maxclients_ = g_maxclients.integer; //memset( g_clients, 0, MAX_CLIENTS * sizeof(g_clients[0]) ); //level.clients = g_clients; // set client fields on player ents #pragma message("cant do this with the new system.... find solution!!") //for( int i=1 ; i <= theLevel.maxclients_ ; i++ ) //{ // //g_entities[i].client = level.clients + i; // reinterpret_cast<GameEntity*>(theLevel.gameEntities_.at(i))->client_ = theLevel.clients_.at(i); //} // always leave room for the max number of clients, // even if they aren't all used, so numbers inside that // range are NEVER anything but clients //theLevel.num_entities_ = 0;//MAX_CLIENTS; // let the server system know where the entites are // SV_LocateGameData( (void*)level.gentities, level.num_entities, sizeof( gentity_t ), // &level.clients[0].ps, sizeof( level.clients[0] ) ); theLevel.setServerGameData();// SV_LocateGameData( &theLevel.gameEntities_, &theLevel.clients_ ); ClearRegisteredItems(); // MFQ3 data MF_LoadAllVehicleData(); //DataManager::getInstance().createAllData(); // parse the key/value pairs and spawn gentities G_SpawnEntitiesFromString(); // general initialization G_FindTeams(); // make sure we have flags for CTF, etc if( g_gametype.integer >= GT_TEAM ) G_CheckTeamItems(); SaveRegisteredItems(); Com_Printf ("-----------------------------------\n"); if( g_gametype.integer == GT_SINGLE_PLAYER || Cvar_VariableIntegerValue( "com_buildScript" ) ) { G_SoundIndex( "sound/player/gurp1.wav" ); G_SoundIndex( "sound/player/gurp2.wav" ); } G_RemapTeamShaders(); if( g_gametype.integer != GT_MISSION_EDITOR ) { // MFQ3 mission scripts //G_LoadMissionScripts(); // init some MFQ3 stuff //DroneInit(); } }