void PlayerConfig_DrawSkinSelection (void) { char scratch[MAX_QPATH]; float icon_x = SCREEN_WIDTH*0.5 - 5; //width - 325 float icon_y = SCREEN_HEIGHT - 108; float icon_offset = 0; float x, y, w, h; int i, count, color[3]; TextColor((int)Cvar_VariableValue("alt_text_color"), &color[0], &color[1], &color[2]); if (s_pmi[s_player_model_box.curvalue].nskins<NUM_SKINBOX_ITEMS || s_player_skin_box.curvalue<4) i=0; else if (s_player_skin_box.curvalue > s_pmi[s_player_model_box.curvalue].nskins-4) i=s_pmi[s_player_model_box.curvalue].nskins-NUM_SKINBOX_ITEMS; else i=s_player_skin_box.curvalue-3; // left arrow if (i>0) Com_sprintf (scratch, sizeof(scratch), "/gfx/ui/arrows/arrow_left.pcx"); else Com_sprintf (scratch, sizeof(scratch), "/gfx/ui/arrows/arrow_left_d.pcx"); SCR_DrawPic (icon_x-39, icon_y+2, 32, 32, ALIGN_CENTER, scratch, 1.0); // background SCR_DrawFill (icon_x-3, icon_y-3, NUM_SKINBOX_ITEMS*34+4, 38, ALIGN_CENTER, 0,0,0,255); if (R_DrawFindPic("/gfx/ui/listbox_background.pcx")) { x = icon_x-2; y = icon_y-2; w = NUM_SKINBOX_ITEMS*34+2; h = 36; SCR_AdjustFrom640 (&x, &y, &w, &h, ALIGN_CENTER); R_DrawTileClear ((int)x, (int)y, (int)w, (int)h, "/gfx/ui/listbox_background.pcx"); } else SCR_DrawFill (icon_x-2, icon_y-2, NUM_SKINBOX_ITEMS*34+2, 36, ALIGN_CENTER, 60,60,60,255); for (count=0; count<NUM_SKINBOX_ITEMS; i++,count++) { if (i<0 || i>=s_pmi[s_player_model_box.curvalue].nskins) continue; Com_sprintf (scratch, sizeof(scratch), "/players/%s/%s_i.pcx", s_pmi[s_player_model_box.curvalue].directory, s_pmi[s_player_model_box.curvalue].skindisplaynames[i] ); if (i==s_player_skin_box.curvalue) SCR_DrawFill (icon_x + icon_offset-1, icon_y-1, 34, 34, ALIGN_CENTER, color[0],color[1],color[2],255); SCR_DrawPic (icon_x + icon_offset, icon_y, 32, 32, ALIGN_CENTER, scratch, 1.0); icon_offset += 34; } // right arrow icon_offset = NUM_SKINBOX_ITEMS*34; if (s_pmi[s_player_model_box.curvalue].nskins-i>0) Com_sprintf (scratch, sizeof(scratch), "/gfx/ui/arrows/arrow_right.pcx"); else Com_sprintf (scratch, sizeof(scratch), "/gfx/ui/arrows/arrow_right_d.pcx"); SCR_DrawPic (icon_x+icon_offset+5, icon_y+2, 32, 32, ALIGN_CENTER, scratch, 1.0); }
/* ================ SCR_TileClear ================ */ void SCR_TileClear( void ) { int i, top, bottom, left, right; dirty_t clear; if( scr_viewsize->integer >= 120 ) return; // full screen rendering // erase rect will be the union of the past three frames // so tripple buffering works properly clear = scr_dirty; for( i = 0; i < 2; i++ ) { if( scr_old_dirty[i].x1 < clear.x1 ) clear.x1 = scr_old_dirty[i].x1; if( scr_old_dirty[i].x2 > clear.x2 ) clear.x2 = scr_old_dirty[i].x2; if( scr_old_dirty[i].y1 < clear.y1 ) clear.y1 = scr_old_dirty[i].y1; if( scr_old_dirty[i].y2 > clear.y2 ) clear.y2 = scr_old_dirty[i].y2; } scr_old_dirty[1] = scr_old_dirty[0]; scr_old_dirty[0] = scr_dirty; scr_dirty.x1 = 9999; scr_dirty.x2 = -9999; scr_dirty.y1 = 9999; scr_dirty.y2 = -9999; if( clear.y2 <= clear.y1 ) return; // nothing disturbed top = cl.refdef.viewport[1]; bottom = top + cl.refdef.viewport[3] - 1; left = cl.refdef.viewport[0]; right = left + cl.refdef.viewport[2] - 1; if( clear.y1 < top ) { // clear above view screen i = clear.y2 < top-1 ? clear.y2 : top - 1; R_DrawTileClear( clear.x1, clear.y1, clear.x2 - clear.x1 + 1, i - clear.y1 + 1 ); clear.y1 = top; } if( clear.y2 > bottom ) { // clear below view screen i = clear.y1 > bottom + 1 ? clear.y1 : bottom + 1; R_DrawTileClear( clear.x1, i, clear.x2 - clear.x1 + 1, clear.y2 - i + 1 ); clear.y2 = bottom; } if( clear.x1 < left ) { // clear left of view screen i = clear.x2 < left - 1 ? clear.x2 : left - 1; R_DrawTileClear( clear.x1, clear.y1, i - clear.x1 + 1, clear.y2 - clear.y1 + 1 ); clear.x1 = left; } if( clear.x2 > right ) { // clear left of view screen i = clear.x1 > right + 1 ? clear.x1 : right + 1; R_DrawTileClear( i, clear.y1, clear.x2 - i + 1, clear.y2 - clear.y1 + 1 ); clear.x2 = right; } }