/* ================= CG_Init Called after every level change or subsystem restart Will perform callbacks to make the loading info screen update. ================= */ void CG_Init( int serverMessageNum, int serverCommandSequence, int clientNum ) { const char *s; // clear everything memset( &cgs, 0, sizeof( cgs ) ); memset( &cg, 0, sizeof( cg ) ); memset( cg_entities, 0, sizeof(cg_entities) ); memset( cg_weapons, 0, sizeof(cg_weapons) ); cg.clientNum = clientNum; cgs.processedSnapshotNum = serverMessageNum; cgs.serverCommandSequence = serverCommandSequence; // load a few needed things before we do any screen updates cgs.media.charsetShader = trap_R_RegisterShader( "interface/fonts/font0.png" ); cgs.media.whiteShader = trap_R_RegisterShader( "white" ); cgs.media.clearShader = trap_R_RegisterShader( "clear" ); cgs.media.charsetProp = trap_R_RegisterShaderNoMip( "interface/fonts/font1.png" ); cgs.media.charsetPropGlow = trap_R_RegisterShaderNoMip( "interface/fonts/font1Glow.png" ); cgs.media.charsetPropB = trap_R_RegisterShaderNoMip( "interface/fonts/font2.png" ); CG_RegisterCvars(); CG_InitConsoleCommands(); cg.weaponSelect = 1; // get the rendering configuration from the client system trap_GetGlconfig( &cgs.glconfig ); cgs.screenXScale = cgs.glconfig.vidWidth / 640.0; cgs.screenYScale = cgs.glconfig.vidHeight / 480.0; // get the gamestate from the client system trap_GetGameState( &cgs.gameState ); // check version s = CG_ConfigString( CS_PRODUCT_VERSION ); if ( strcmp( s, PRODUCT_VERSION ) ) { CG_Error( "Client/Server game mismatch: %s/%s", PRODUCT_VERSION, s ); } s = CG_ConfigString( CS_LEVEL_START_TIME ); cgs.levelStartTime = atoi( s ); CG_ParseServerinfo(); // load the new map CG_LoadingString( "collision map" ); trap_CM_LoadMap( cgs.mapname ); cg.loading = qtrue; // force players to load instead of defer CG_LoadingString( "sounds" ); CG_RegisterSounds(); CG_LoadingString( "graphics" ); CG_RegisterGraphics(); CG_LoadingString( "clients" ); CG_RegisterClients(); // if low on memory, some clients will be deferred cg.loading = qfalse; // future players will be deferred CG_InitLocalEntities(); // ADDING FOR ZEQ2 CG_FrameHist_Init(); CG_InitTrails(); CG_InitParticleSystems(); CG_InitBeamTables(); CG_InitRadarBlips(); // END ADDING CG_InitMarkPolys(); // remove the last loading update cg.infoScreenText[0] = 0; // Make sure we have update values (scores) CG_SetConfigValues(); CG_LoadingString( "" ); CG_ShaderStateChanged(); trap_S_ClearLoopingSounds( qtrue ); }
/* ================= CG_Init Called after every level change or subsystem restart Will perform callbacks to make the loading info screen update. ================= */ void CG_Init( int serverMessageNum, int serverCommandSequence, int clientNum ) { const char* s; // clear everything memset( &cgs, 0, sizeof( cgs ) ); memset( &cg, 0, sizeof( cg ) ); memset( cg_entities, 0, sizeof( cg_entities ) ); if ( g_loadingScreen ) // update loading screen (if its present) { g_loadingScreen->addLoadingString( "CG_Init: clientNum %i\n", clientNum ); } cg.clientNum = clientNum; cgs.processedSnapshotNum = serverMessageNum; cgs.serverCommandSequence = serverCommandSequence; // load a few needed things before we do any screen updates cgs.media.charsetShader = rf->registerMaterial( "gfx/2d/bigchars" ); cgs.media.whiteShader = rf->registerMaterial( "white" ); // init cgame console variables AUTOCVAR_RegisterAutoCvars(); CG_RegisterCvars(); // init console commands AUTOCMD_RegisterAutoConsoleCommands(); // get the rendering configuration from the client system cgs.screenXScale = rf->getWinWidth() / 640.0; cgs.screenYScale = rf->getWinHeight() / 480.0; // get the gamestate from the client system g_client->GetGameState( &cgs.gameState ); // check version s = CG_ConfigString( CS_GAME_VERSION ); if ( strcmp( s, GAME_VERSION ) ) { CG_Error( "Client/Server game mismatch: %s/%s", GAME_VERSION, s ); } s = CG_ConfigString( CS_LEVEL_START_TIME ); cgs.levelStartTime = atoi( s ); s = CG_ConfigString( CS_WORLD_SKYMATERIAL ); if ( s && s[0] ) { rf->setSkyMaterial( s ); } s = CG_ConfigString( CS_WORLD_WATERLEVEL ); if ( s && s[0] ) { rf->setWaterLevel( s ); } s = CG_ConfigString( CS_WORLD_FARPLANE ); if ( s && s[0] ) { cg.farPlane = atof( s ); } CG_ParseServerinfo(); // clear any references to old media rf->clearEntities(); //trap_R_ClearScene(); if ( g_loadingScreen ) // update loading screen (if its present) { g_loadingScreen->addLoadingString( "CG_Init: loading world map \"%s\"...", cgs.mapname ); } // load world map first so inline models are present when requested rf->loadWorldMap( cgs.mapname ); if ( g_loadingScreen ) // update loading screen (if its present) { g_loadingScreen->addLoadingString( "done.\n" ); } if ( g_loadingScreen ) // update loading screen (if its present) { g_loadingScreen->addLoadingString( "CG_Init: registering render models..." ); } u32 c_renderModelsLoaded = 0; for ( u32 i = 0; i < MAX_MODELS; i++ ) { const char* str = CG_ConfigString( CS_MODELS + i ); if ( str && str[0] ) { cgs.gameModels[i] = rf->registerModel( str ); c_renderModelsLoaded++; } } if ( g_loadingScreen ) // update loading screen (if its present) { g_loadingScreen->addLoadingString( " %i rModels\n", c_renderModelsLoaded ); g_loadingScreen->addLoadingString( "CG_Init: registering skins..." ); } u32 c_renderSkinsLoaded = 0; for ( u32 i = 0; i < MAX_SKINS; i++ ) { const char* str = CG_ConfigString( CS_SKINS + i ); if ( str && str[0] ) { //cgs.gameSkins[i] = rf->registerSkin(str); c_renderSkinsLoaded++; } } if ( g_loadingScreen ) // update loading screen (if its present) { g_loadingScreen->addLoadingString( " %i rSkins\n", c_renderSkinsLoaded ); g_loadingScreen->addLoadingString( "CG_Init: registering animations..." ); } u32 c_animationsLoaded = 0; for ( u32 i = 0; i < MAX_ANIMATIONS; i++ ) { const char* str = CG_ConfigString( CS_ANIMATIONS + i ); if ( str && str[0] ) { cgs.gameAnims[i] = rf->registerAnimation_getAPI( str ); c_animationsLoaded++; } } if ( g_loadingScreen ) // update loading screen (if its present) { g_loadingScreen->addLoadingString( " %i animations\n", c_animationsLoaded ); g_loadingScreen->addLoadingString( "CG_Init: registering articulated figures decls..." ); } u32 c_afsLoaded = 0; for ( u32 i = 0; i < MAX_RAGDOLLDEFS; i++ ) { const char* str = CG_ConfigString( CS_RAGDOLLDEFSS + i ); if ( str && str[0] ) { cgs.gameAFs[i] = g_declMgr->registerAFDecl( str ); c_afsLoaded++; } } if ( g_loadingScreen ) // update loading screen (if its present) { g_loadingScreen->addLoadingString( " %i AFs\n", c_afsLoaded ); g_loadingScreen->addLoadingString( "CG_Init: registering collision models..." ); } u32 c_collisionModelsLoaded = 0; for ( u32 i = 0; i < MAX_MODELS; i++ ) { const char* str = CG_ConfigString( CS_COLLMODELS + i ); if ( str && str[0] ) { cgs.gameCollModels[i] = cm->registerModel( str ); c_collisionModelsLoaded++; } } if ( g_loadingScreen ) // update loading screen (if its present) { g_loadingScreen->addLoadingString( " %i cmModels\n", c_collisionModelsLoaded ); g_loadingScreen->addLoadingString( "CG_Init: registering materials..." ); } u32 c_renderMaterialsLoaded = 0; for ( u32 i = 0; i < MAX_MATERIALS; i++ ) { const char* str = CG_ConfigString( CS_MATERIALS + i ); if ( str && str[0] ) { cgs.gameMaterials[i] = rf->registerMaterial( str ); c_renderMaterialsLoaded++; } } if ( g_loadingScreen ) // update loading screen (if its present) { g_loadingScreen->addLoadingString( " %i materials\n", c_renderMaterialsLoaded ); g_loadingScreen->addLoadingString( "CG_Init: registering sounds..." ); } u32 c_soundsLoaded = 0; for ( u32 i = 0; i < MAX_SOUNDS; i++ ) { const char* str = CG_ConfigString( CS_SOUNDS + i ); if ( str && str[0] ) { // cgs.gameSounds[i] = 0;//snd->registerSound(str); c_soundsLoaded++; } } if ( g_loadingScreen ) // update loading screen (if its present) { g_loadingScreen->addLoadingString( " %i sounds\n", c_soundsLoaded ); } // cg.loading = false; // future players will be deferred }
/* ================= CG_Init Called after every level change or subsystem restart Will perform callbacks to make the loading info screen update. ================= */ void CG_Init( int serverMessageNum, int serverCommandSequence, int clientNum ) { const char *s; // clear everything memset( &cgs, 0, sizeof( cgs ) ); memset( &cg, 0, sizeof( cg ) ); memset( cg_entities, 0, sizeof(cg_entities) ); memset( cg_weapons, 0, sizeof(cg_weapons) ); memset( cg_items, 0, sizeof(cg_items) ); cg.clientNum = clientNum; cgs.processedSnapshotNum = serverMessageNum; cgs.serverCommandSequence = serverCommandSequence; // load a few needed things before we do any screen updates cgs.media.charsetShader = trap_R_RegisterShader( "gfx/2d/bigchars" ); cgs.media.whiteShader = trap_R_RegisterShader( "white" ); cgs.media.charsetProp = trap_R_RegisterShaderNoMip( "menu/art/font1_prop.tga" ); cgs.media.charsetPropGlow = trap_R_RegisterShaderNoMip( "menu/art/font1_prop_glo.tga" ); cgs.media.charsetPropB = trap_R_RegisterShaderNoMip( "menu/art/font2_prop.tga" ); CG_RegisterCvars(); CG_InitConsoleCommands(); cg.weaponSelect = WP_MACHINEGUN; cgs.redflag = cgs.blueflag = -1; // For compatibily, default to unset for cgs.flagStatus = -1; // old servers // get the rendering configuration from the client system trap_GetGlconfig( &cgs.glconfig ); cgs.screenXScale = cgs.glconfig.vidWidth / 640.0; cgs.screenYScale = cgs.glconfig.vidHeight / 480.0; // get the gamestate from the client system trap_GetGameState( &cgs.gameState ); // check version s = CG_ConfigString( CS_GAME_VERSION ); if ( strcmp( s, GAME_VERSION ) ) { CG_Error( "Client/Server game mismatch: %s/%s", GAME_VERSION, s ); } s = CG_ConfigString( CS_LEVEL_START_TIME ); cgs.levelStartTime = atoi( s ); CG_ParseServerinfo(); // load the new map CG_LoadingString( "collision map" ); trap_CM_LoadMap( cgs.mapname ); cg.loading = qtrue; // force players to load instead of defer CG_LoadingString( "sounds" ); CG_RegisterSounds(); CG_LoadingString( "graphics" ); CG_RegisterGraphics(); CG_LoadingString( "clients" ); CG_RegisterClients(); // if low on memory, some clients will be deferred cg.loading = qfalse; // future players will be deferred CG_InitLocalEntities(); CG_InitMarkPolys(); // remove the last loading update cg.infoScreenText[0] = 0; // Make sure we have update values (scores) CG_SetConfigValues(); CG_StartMusic(); CG_LoadingString( "" ); CG_ShaderStateChanged(); trap_S_ClearLoopingSounds( qtrue ); }
/* ================= CG_Init Called after every level change or subsystem restart Will perform callbacks to make the loading info screen update. ================= */ void CG_Init( int serverMessageNum, int serverCommandSequence, int clientNum, int randomSeed ) { const char *s; // clear everything memset( &cgs, 0, sizeof( cgs ) ); memset( &cg, 0, sizeof( cg ) ); memset( cg_entities, 0, sizeof(cg_entities) ); srand( randomSeed ); cg.clientNum = clientNum; cgs.processedSnapshotNum = serverMessageNum; cgs.serverCommandSequence = serverCommandSequence; trap_R_RegisterFont( "facfont-20", 0, &cgs.media.facfont ); trap_R_RegisterFont( "verdana-14", 0, &cgs.media.verdana ); // load a few needed things before we do any screen updates // cgs.media.charsetShader = trap_R_RegisterShader( "gfx/2d/bigchars" ); cgs.media.whiteShader = trap_R_RegisterShader( "*white" ); // cgs.media.charsetProp = trap_R_RegisterShaderNoMip( "menu/art/font1_prop.tga" ); // cgs.media.charsetPropGlow = trap_R_RegisterShaderNoMip( "menu/art/font1_prop_glo.tga" ); // cgs.media.charsetPropB = trap_R_RegisterShaderNoMip( "menu/art/font2_prop.tga" ); cgs.media.blackShader = trap_R_RegisterShaderNoMip( "textures/mohmenu/black.tga" ); CG_RegisterCvars(); CG_InitConsoleCommands(); // get the rendering configuration from the client system trap_GetGlconfig( &cgs.glconfig ); cgs.screenXScale = cgs.glconfig.vidWidth / 640.0; cgs.screenYScale = cgs.glconfig.vidHeight / 480.0; // get the gamestate from the client system trap_GetGameState( &cgs.gameState ); // check version s = CG_ConfigString( CS_GAME_VERSION ); if ( strcmp( s, GAME_VERSION ) ) { CG_Error( "Client/Server game mismatch: %s/%s", GAME_VERSION, s ); } s = CG_ConfigString( CS_LEVEL_START_TIME ); cgs.levelStartTime = atoi( s ); CG_ParseServerinfo(); // load the new map CG_LoadingString( "collision map" ); trap_CM_LoadMap( cgs.mapname ); CG_LoadingString( "sounds" ); CG_RegisterSounds(); CG_LoadUbersound(); CG_LoadingString( "graphics" ); CG_RegisterGraphics(); CG_LoadingString( "clients" ); CG_RegisterClients(); // if low on memory, some clients will be deferred CG_InitLocalEntities(); CG_InitMarkPolys(); CG_InitEventSystem(); CG_InitBeams(); CG_InitRainEffect(); // remove the last loading update cg.infoScreenText[0] = 0; // Make sure we have update values (scores) CG_SetConfigValues(); CG_StartMusic(); CG_LoadingString( "" ); trap_S_ClearLoopingSounds( qtrue ); }