void UI_DrawConnect( const char *servername, const char *updateInfoString ) { #if 0 // if connecting to a local host, don't draw anything before the // gamestate message. This allows cinematics to start seamlessly if ( connState < CA_LOADING && !strcmp( cls.servername, "localhost" ) ) { UI_SetColor( g_color_table[0] ); re.DrawFill (0, 0, re.scrWidth, re.scrHeight); UI_SetColor( NULL ); return; } #endif qboolean qValid; byte *levelPic = ui.SCR_GetScreenshot(&qValid); // draw the dialog background if (!qValid) { UI_DrawHandlePic(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, uis.menuBackShader ); } else { UI_DrawThumbNail(0,SCREEN_HEIGHT, SCREEN_WIDTH, -SCREEN_HEIGHT, levelPic ); // blend a detail texture over it qhandle_t detail = ui.R_RegisterShader( "levelShotDetail" ); UI_DrawHandlePic( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, detail ); } UI_DrawConnectText( servername, updateInfoString ); }
/* ================== SCR_DrawScreenField This will be called twice if rendering in stereo mode ================== */ void SCR_DrawScreenField( stereoFrame_t stereoFrame ) { re.BeginFrame( stereoFrame ); qboolean uiFullscreen = _UI_IsFullscreen(); // wide aspect ratio screens need to have the sides cleared // unless they are displaying game renderings if ( uiFullscreen || (cls.state != CA_ACTIVE && cls.state != CA_CINEMATIC) ) { if ( cls.glconfig.vidWidth * 480 > cls.glconfig.vidHeight * 640 ) { re.SetColor( g_color_table[0] ); re.DrawStretchPic( 0, 0, cls.glconfig.vidWidth, cls.glconfig.vidHeight, 0, 0, 0, 0, 0 ); re.SetColor( NULL ); } } // if the menu is going to cover the entire screen, we // don't need to render anything under it if ( !uiFullscreen ) { switch( cls.state ) { default: Com_Error( ERR_FATAL, "SCR_DrawScreenField: bad cls.state" ); break; case CA_CINEMATIC: SCR_DrawCinematic(); break; case CA_DISCONNECTED: // force menu up UI_SetActiveMenu( "mainMenu",NULL ); // VM_Call( uivm, UI_SET_ACTIVE_MENU, UIMENU_MAIN ); break; case CA_CONNECTING: case CA_CHALLENGING: case CA_CONNECTED: // connecting clients will only show the connection dialog UI_DrawConnect( clc.servername, cls.updateInfoString ); break; case CA_LOADING: case CA_PRIMED: // draw the game information screen and loading progress CL_CGameRendering( stereoFrame ); // also draw the connection information, so it doesn't // flash away too briefly on local or lan games UI_DrawConnectText( clc.servername, cls.updateInfoString ); break; case CA_ACTIVE: if (CL_IsRunningInGameCinematic() || CL_InGameCinematicOnStandBy()) { SCR_DrawCinematic(); } else { CL_CGameRendering( stereoFrame ); } break; } } re.ProcessDissolve(); // draw downloading progress bar // the menu draws next _UI_Refresh( cls.realtime ); // console draws next Con_DrawConsole (); // debug graph can be drawn on top of anything if ( cl_debuggraph->integer || cl_timegraph->integer ) { SCR_DrawDebugGraph (); } }