/* ================= UI_CreateGame_Begin ================= */ static void UI_CreateGame_Begin( void ) { if( !MAP_IS_VALID( uiCreateGame.mapName[uiCreateGame.mapsList.curItem] )) return; // bad map if( CVAR_GET_FLOAT( "host_serverstate" ) && CVAR_GET_FLOAT( "maxplayers" ) == 1 ) HOST_ENDGAME( "end of the game" ); CVAR_SET_FLOAT( "deathmatch", 1.0f ); // FIXME CVAR_SET_FLOAT( "maxplayers", atoi( uiCreateGame.maxClients.buffer )); CVAR_SET_STRING( "hostname", uiCreateGame.hostName.buffer ); CVAR_SET_STRING( "defaultmap", uiCreateGame.mapName[uiCreateGame.mapsList.curItem] ); // all done, start server if( uiCreateGame.dedicatedServer.enabled ) { HOST_WRITECONFIG ( CVAR_GET_STRING( "servercfgfile" )); char cmd[128]; sprintf( cmd, "#%s", gMenu.m_gameinfo.gamefolder ); // NOTE: dedicated server will be executed "defaultmap" // from engine after restarting HOST_CHANGEGAME( cmd, "Starting dedicated server...\n" ); } else { HOST_WRITECONFIG ( CVAR_GET_STRING( "lservercfgfile" )); char cmd[128]; sprintf( cmd, "exec %s\nmap %s\n", CVAR_GET_STRING( "lservercfgfile" ), CVAR_GET_STRING( "defaultmap" )); CLIENT_COMMAND( FALSE, cmd ); } }
/* ================= UI_NewGame_StartGame ================= */ static void UI_NewGame_StartGame( float skill ) { if( CVAR_GET_FLOAT( "host_serverstate" ) && CVAR_GET_FLOAT( "maxplayers" ) > 1 ) HOST_ENDGAME( "end of the game" ); CVAR_SET_FLOAT( "skill", skill ); CVAR_SET_FLOAT( "deathmatch", 0.0f ); CVAR_SET_FLOAT( "teamplay", 0.0f ); CVAR_SET_FLOAT( "pausable", 1.0f ); // singleplayer is always allowing pause CVAR_SET_FLOAT( "maxplayers", 1.0f ); CVAR_SET_FLOAT( "coop", 0.0f ); CLIENT_COMMAND( FALSE, "newgame\n" ); }
/* ================= UI_Main_NewGame ================= */ static void UI_Main_NewGame( void ) { if( CVAR_GET_FLOAT( "host_serverstate" ) && CVAR_GET_FLOAT( "maxplayers" ) > 1 ) HOST_ENDGAME( "end of the game" ); CVAR_SET_FLOAT( "skill", 1.0f ); CVAR_SET_FLOAT( "deathmatch", 0.0f ); CVAR_SET_FLOAT( "teamplay", 0.0f ); CVAR_SET_FLOAT( "pausable", 1.0f ); // singleplayer is always allowing pause CVAR_SET_FLOAT( "coop", 0.0f ); BACKGROUND_TRACK( NULL, NULL ); CLIENT_COMMAND( FALSE, "newgame\n" ); }
/* ================= UI_Credits_DrawFunc ================= */ static void UI_Credits_DrawFunc( void ) { int i, y; float speed = 40.0f; int w = UI_MED_CHAR_WIDTH; int h = UI_MED_CHAR_HEIGHT; int color = 0; // draw the background first if( !uiCredits.finalCredits && !CVAR_GET_FLOAT( "sv_background" )) UI_DrawPic( 0, 0, 1024 * uiStatic.scaleX, 768 * uiStatic.scaleY, uiColorWhite, ART_BACKGROUND ); else speed = 45.0f; // syncronize with final background track :-) // otherwise running on cutscene speed = 32.0f * (768.0f / ScreenHeight); // now draw the credits UI_ScaleCoords( NULL, NULL, &w, &h ); y = ScreenHeight - (((gpGlobals->time * 1000) - uiCredits.startTime ) / speed ); // draw the credits for ( i = 0; i < uiCredits.numLines && uiCredits.credits[i]; i++, y += h ) { // skip not visible lines, but always draw end line if( y <= -h && i != uiCredits.numLines - 1 ) continue; if(( y < ( ScreenHeight - h ) / 2 ) && i == uiCredits.numLines - 1 ) { if( !uiCredits.fadeTime ) uiCredits.fadeTime = (gpGlobals->time * 1000); color = UI_FadeAlpha( uiCredits.fadeTime, uiCredits.showTime ); if( UnpackAlpha( color )) UI_DrawString( 0, ( ScreenHeight - h ) / 2, 1024 * uiStatic.scaleX, h, uiCredits.credits[i], color, true, w, h, 1, true ); } else UI_DrawString( 0, y, 1024 * uiStatic.scaleX, h, uiCredits.credits[i], uiColorWhite, false, w, h, 1, true ); } if( y < 0 && UnpackAlpha( color ) == 0 ) { uiCredits.active = false; // end of credits if( uiCredits.finalCredits ) HOST_ENDGAME( gMenu.m_gameinfo.title ); } if( !uiCredits.active ) UI_PopMenu(); }