/* ================= UI_VidInit ================= */ int UI_VidInit( void ) { UI_Precache (); uiStatic.scaleX = ScreenWidth / 1024.0f; uiStatic.scaleY = ScreenHeight / 768.0f; // move cursor to screen center uiStatic.cursorX = ScreenWidth >> 1; uiStatic.cursorY = ScreenHeight >> 1; uiStatic.outlineWidth = 4; uiStatic.sliderWidth = 6; // all menu buttons have the same view sizes uiStatic.buttons_draw_width = UI_BUTTONS_WIDTH; uiStatic.buttons_draw_height = UI_BUTTONS_HEIGHT; UI_ScaleCoords( NULL, NULL, &uiStatic.outlineWidth, NULL ); UI_ScaleCoords( NULL, NULL, &uiStatic.sliderWidth, NULL ); UI_ScaleCoords( NULL, NULL, &uiStatic.buttons_draw_width, &uiStatic.buttons_draw_height ); // trying to load colors.lst UI_ApplyCustomColors (); // trying to load chapterbackgrounds.txt UI_LoadBackgroundMapList (); // register menu font uiStatic.hFont = PIC_Load( "#XASH_SYSTEMFONT_001.bmp", menufont_bmp, sizeof( menufont_bmp )); UI_LoadBackgroundImage (); #if 0 FILE *f; // dump menufont onto disk f = fopen( "menufont.bmp", "wb" ); fwrite( menufont_bmp, sizeof( menufont_bmp ), 1, f ); fclose( f ); #endif // reload all menu buttons UI_LoadBmpButtons (); // now recalc all the menus in stack for( int i = 0; i < uiStatic.menuDepth; i++ ) { menuFramework_s *item = uiStatic.menuStack[i]; // do vid restart for all pushed elements if( item && item->vidInitFunc ) item->vidInitFunc(); } return 1; }
/* ================= UI_LoadGame_Ownerdraw ================= */ static void UI_LoadGame_Ownerdraw( void *self ) { menuCommon_s *item = (menuCommon_s *)self; if( item->type != QMTYPE_ACTION && item->id == ID_LEVELSHOT ) { int x, y, w, h; // draw the levelshot x = LEVELSHOT_X; y = LEVELSHOT_Y; w = LEVELSHOT_W; h = LEVELSHOT_H; UI_ScaleCoords( &x, &y, &w, &h ); if( strlen( uiLoadGame.saveName[uiLoadGame.savesList.curItem] )) { char saveshot[128]; sprintf( saveshot, "save/%s.bmp", uiLoadGame.saveName[uiLoadGame.savesList.curItem] ); if( !FILE_EXISTS( saveshot )) UI_DrawPicAdditive( x, y, w, h, uiColorWhite, "{GRAF001" ); else UI_DrawPic( x, y, w, h, uiColorWhite, saveshot ); } else UI_DrawPicAdditive( x, y, w, h, uiColorWhite, "{GRAF001" ); // draw the rectangle UI_DrawRectangle( item->x, item->y, item->width, item->height, uiInputFgColor ); } }
/* ================== UI_Cinematics_Ownerdraw ================== */ static void UI_Cinematics_Ownerdraw (void *self){ menuCommon_t *item = (menuCommon_t *)self; int x = 566, y = 210, w = 412, h = 348; if (item->id == ID_CINPREVIEW){ UI_ScaleCoords(&x, &y, &w, &h); // Draw black background, cinematic frame and box UI_FillRect(x, y, w, h, colorBlack); if (uiStatic.playingCinematic){ // CIN_UpdateCinematic(); // CIN_DrawCinematic(); } UI_DrawPic(item->x, item->y, item->width, item->height, colorWhite, ((menuBitmap_t *)self)->pic); } else { if (uiCinematics.menu.items[uiCinematics.menu.cursor] == self) UI_DrawPic(item->x, item->y, item->width, item->height, colorWhite, UI_MOVEBOXFOCUS); else UI_DrawPic(item->x, item->y, item->width, item->height, colorWhite, UI_MOVEBOX); UI_DrawPic(item->x, item->y, item->width, item->height, colorWhite, ((menuBitmap_t *)self)->pic); } }
/* ================= UI_Main_ActivateFunc ================= */ static void UI_Main_ActivateFunc( void ) { if ( !CL_IsActive( )) uiMain.resumeGame.generic.flags |= QMF_HIDDEN; if( gpGlobals->developer ) { uiMain.console.generic.y = CL_IsActive() ? 180 : 230; UI_ScaleCoords( NULL, &uiMain.console.generic.y, NULL, NULL ); } }
/* ================= UI_VidOptions_GetConfig ================= */ static void UI_VidOptions_GetConfig( void ) { uiVidOptions.screenSize.curValue = (CVAR_GET_FLOAT( "viewsize" ) - 20.0f ) / 100.0f; uiVidOptions.gammaIntensity.curValue = (CVAR_GET_FLOAT( "vid_gamma" ) - 0.5f) / 1.8f; uiVidOptions.glareReduction.curValue = (CVAR_GET_FLOAT( "r_flaresize" ) - 100.0f ) / 200.0f; if( CVAR_GET_FLOAT( "r_fastsky" )) uiVidOptions.fastSky.enabled = 1; uiVidOptions.outlineWidth = 2; UI_ScaleCoords( NULL, NULL, &uiVidOptions.outlineWidth, NULL ); }
/* ================= 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(); }
/* ================= UI_VidOptions_GetConfig ================= */ static void UI_VidOptions_GetConfig( void ) { uiVidOptions.screenSize.curValue = RemapVal( CVAR_GET_FLOAT( "viewsize" ), 30.0f, 120.0f, 0.0f, 1.0f ); uiVidOptions.glareReduction.curValue = (CVAR_GET_FLOAT( "r_flaresize" ) - 100.0f ) / 200.0f; if( CVAR_GET_FLOAT( "gl_ignorehwgamma" )) { uiVidOptions.gammaIntensity.curValue = RemapVal( CVAR_GET_FLOAT( "gamma" ), 1.8f, 7.0f, 0.0f, 1.0f ); PIC_SetGamma( uiVidOptions.hTestImage, CVAR_GET_FLOAT( "gamma" )); } else uiVidOptions.gammaIntensity.curValue = RemapVal( CVAR_GET_FLOAT( "gamma" ), 0.5f, 2.3f, 0.0f, 1.0f ); if( CVAR_GET_FLOAT( "r_fastsky" )) uiVidOptions.fastSky.enabled = 1; if( CVAR_GET_FLOAT( "host_allow_materials" )) uiVidOptions.hiTextures.enabled = 1; uiVidOptions.outlineWidth = 2; UI_ScaleCoords( NULL, NULL, &uiVidOptions.outlineWidth, NULL ); }
/* ================= UI_Credits_DrawFunc ================= */ static void UI_Credits_DrawFunc( void ) { int i, y; float speed = 32.0f * (768.0f / ScreenHeight); int w = UI_SMALL_CHAR_WIDTH; int h = UI_SMALL_CHAR_HEIGHT; int color = 0x00FFA000; // draw the background first UI_FillRect( 0, 0, ScreenWidth, ScreenHeight, uiColorBlack ); // 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, ScreenWidth, h, uiCredits.credits[i], color, true, w, h, 1, true ); } else UI_DrawString( 0, y, ScreenWidth, h, uiCredits.credits[i], uiColorWhite, false, w, h, 1, true ); } if( y < 0 && UnpackAlpha( color ) == 0 ) { uiCredits.active = false; // end of credits } if( !uiCredits.active ) UI_PopMenu(); }