This is an automated email from the git hooks/post-receive script. smcv pushed a commit to annotated tag 1.42d in repository iortcw.
commit cd010c9440a5919049ba2fa3e4563fb9360f5df0 Author: MAN-AT-ARMS <m4n4t4...@gmail.com> Date: Wed Dec 2 11:37:02 2015 -0500 MP: Initial fixed aspect stuff for UI / Placement fixes SP: Move ui_fixedAspect cvar declaration --- MP/code/cgame/cg_draw.c | 130 +++++++++++++++-------------- MP/code/cgame/cg_info.c | 6 +- MP/code/cgame/cg_local.h | 13 --- MP/code/cgame/cg_newdraw.c | 10 --- MP/code/cgame/cg_scoreboard.c | 10 +-- MP/code/cgame/cg_weapons.c | 3 - MP/code/qcommon/q_shared.h | 13 +++ MP/code/ui/ui_atoms.c | 23 ----- MP/code/ui/ui_local.h | 2 + MP/code/ui/ui_main.c | 45 ++++++++-- MP/code/ui/ui_shared.c | 189 +++++++++++++++++++++++++++++++++++++++--- MP/code/ui/ui_shared.h | 9 ++ SP/code/ui/ui_main.c | 2 - SP/code/ui/ui_shared.c | 1 - 14 files changed, 313 insertions(+), 143 deletions(-) diff --git a/MP/code/cgame/cg_draw.c b/MP/code/cgame/cg_draw.c index c59645e..32c0ddd 100644 --- a/MP/code/cgame/cg_draw.c +++ b/MP/code/cgame/cg_draw.c @@ -511,18 +511,9 @@ void CG_DrawTeamBackground( int x, int y, int w, int h, float alpha, int team ) } else { return; } - - if ( cg_fixedAspect.integer ) { - trap_R_SetColor( hcolor ); - CG_SetScreenPlacement(PLACE_STRETCH, CG_GetScreenVerticalPlacement()); - CG_DrawPic( x, y, w, h, cgs.media.teamStatusBar ); - CG_PopScreenPlacement(); - trap_R_SetColor( NULL ); - } else { - trap_R_SetColor( hcolor ); - CG_DrawPic( x, y, w, h, cgs.media.teamStatusBar ); - trap_R_SetColor( NULL ); - } + trap_R_SetColor( hcolor ); + CG_DrawPic( x, y, w, h, cgs.media.teamStatusBar ); + trap_R_SetColor( NULL ); } /* @@ -876,8 +867,6 @@ static void CG_DrawUpperRight(stereoFrame_t stereoFrame) { if ( cg_fixedAspect.integer == 2 ) { CG_SetScreenPlacement(PLACE_RIGHT, PLACE_TOP); - } else if ( cg_fixedAspect.integer == 1 ) { - CG_SetScreenPlacement(PLACE_CENTER, PLACE_TOP); } if ( cgs.gametype >= GT_TEAM ) { @@ -932,9 +921,7 @@ static void CG_DrawTeamInfo( void ) { if ( cg_fixedAspect.integer == 2 ) { CG_SetScreenPlacement( PLACE_LEFT, PLACE_BOTTOM ); - } else if ( cg_fixedAspect.integer == 1 ) { - CG_SetScreenPlacement( PLACE_CENTER, PLACE_BOTTOM ); - } + } if ( cgs.teamLastChatPos != cgs.teamChatPos ) { if ( cg.time - cgs.teamChatMsgTimes[cgs.teamLastChatPos % chatHeight] > cg_teamChatTime.integer ) { @@ -967,8 +954,11 @@ static void CG_DrawTeamInfo( void ) { hcolor[3] = 0.33f * alphapercent; trap_R_SetColor( hcolor ); - CG_DrawPic( CHATLOC_X, CHATLOC_Y - ( cgs.teamChatPos - i ) * TINYCHAR_HEIGHT, 640, TINYCHAR_HEIGHT, cgs.media.teamStatusBar ); - + if ( cg_fixedAspect.integer == 2 ) { + CG_DrawPic( CHATLOC_X, CHATLOC_Y - ( cgs.teamChatPos - i ) * TINYCHAR_HEIGHT, cgs.glconfig.vidWidth, TINYCHAR_HEIGHT, cgs.media.teamStatusBar ); + } else { + CG_DrawPic( CHATLOC_X, CHATLOC_Y - ( cgs.teamChatPos - i ) * TINYCHAR_HEIGHT, 640, TINYCHAR_HEIGHT, cgs.media.teamStatusBar ); + } hcolor[0] = hcolor[1] = hcolor[2] = 1.0; hcolor[3] = alphapercent; trap_R_SetColor( hcolor ); @@ -997,8 +987,6 @@ static void CG_DrawPickupItem( void ) { if ( cg_fixedAspect.integer == 2 ) { CG_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM); - } else if ( cg_fixedAspect.integer == 1 ) { - CG_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER); } value = cg.itemPickup; @@ -1053,8 +1041,6 @@ static void CG_DrawNotify( void ) { if ( cg_fixedAspect.integer == 2 ) { CG_SetScreenPlacement(PLACE_LEFT, PLACE_TOP); - } else if ( cg_fixedAspect.integer == 1 ) { - CG_SetScreenPlacement(PLACE_CENTER, PLACE_TOP); } trap_Cvar_VariableStringBuffer( "con_notifytime", var, sizeof( var ) ); @@ -1195,12 +1181,12 @@ static void CG_DrawDisconnect( void ) { return; } - if ( cg_fixedAspect.integer ) { + if ( cg_fixedAspect.integer == 2 ) { CG_SetScreenPlacement(PLACE_RIGHT, PLACE_BOTTOM); } - x = 640 - 72; - y = 480 - 52; + x = 640 - 52; + y = 480 - 140; CG_DrawPic( x, y, 48, 48, trap_R_RegisterShader( "gfx/2d/net.tga" ) ); } @@ -1229,14 +1215,12 @@ static void CG_DrawLagometer( void ) { if ( cg_fixedAspect.integer == 2 ) { CG_SetScreenPlacement(PLACE_RIGHT, PLACE_BOTTOM); - } else if ( cg_fixedAspect.integer == 1 ) { - CG_SetScreenPlacement(PLACE_CENTER, PLACE_BOTTOM); } // // draw the graph // - x = 640 - 55; + x = 640 - 52; y = 480 - 140; trap_R_SetColor( NULL ); @@ -1522,7 +1506,6 @@ CG_DrawWeapReticle static void CG_DrawWeapReticle( void ) { qboolean snooper, sniper; vec4_t color = {0, 0, 0, 1}; - float width = 80.0; // DHM - Nerve :: So that we will draw reticle if ( cgs.gametype >= GT_WOLF && ( ( cg.snap->ps.pm_flags & PMF_FOLLOW ) || cg.demoPlayback ) ) { @@ -1538,14 +1521,29 @@ static void CG_DrawWeapReticle( void ) { // sides if ( cg_fixedAspect.integer ) { - if ( cgs.glconfig.vidWidth * 480 > cgs.glconfig.vidHeight * 640 ) { - width = 0.5 * ( ( cgs.glconfig.vidWidth - ( min( cgs.screenXScale, cgs.screenYScale ) * 480 ) ) / min( cgs.screenXScale, cgs.screenYScale ) ); + if ( cgs.glconfig.vidWidth * 480.0 > cgs.glconfig.vidHeight * 640.0 ) { + float mask = 0.5 * ( ( cgs.glconfig.vidWidth - ( cgs.screenXScale * 480.0 ) ) / cgs.screenXScale ); + + CG_SetScreenPlacement(PLACE_LEFT, PLACE_CENTER); + CG_FillRect( 0, 0, mask, 480, color ); + CG_SetScreenPlacement(PLACE_RIGHT, PLACE_CENTER); + CG_FillRect( 640 - mask, 0, mask, 480, color ); } - CG_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM); - CG_FillRect( 0, 0, width, 480, color ); - CG_SetScreenPlacement(PLACE_RIGHT, PLACE_BOTTOM); - CG_FillRect( 640-width, 0, width, 480, color ); + // sides with letterbox + if ( cgs.glconfig.vidWidth * 480.0 < cgs.glconfig.vidHeight * 640.0 ) { + float lb = 0.5 * ( ( cgs.glconfig.vidHeight - ( cgs.screenYScale * 480.0 ) ) / cgs.screenYScale ); + + CG_SetScreenPlacement(PLACE_LEFT, PLACE_CENTER); + CG_FillRect( 0, 0, 80, 480, color ); + CG_SetScreenPlacement(PLACE_RIGHT, PLACE_CENTER); + CG_FillRect( 560, 0, 80, 480, color ); + + CG_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM); + CG_FillRect( 0, 480 - lb, 640, lb, color ); + CG_SetScreenPlacement(PLACE_LEFT, PLACE_TOP); + CG_FillRect( 0, 0, 640, lb, color ); + } } else { CG_FillRect( 0, 0, 80, 480, color ); CG_FillRect( 560, 0, 80, 480, color ); @@ -1571,14 +1569,29 @@ static void CG_DrawWeapReticle( void ) { // sides if ( cg_fixedAspect.integer ) { - if ( cgs.glconfig.vidWidth * 480 > cgs.glconfig.vidHeight * 640 ) { - width = 0.5 * ( ( cgs.glconfig.vidWidth - ( min( cgs.screenXScale, cgs.screenYScale ) * 480 ) ) / min( cgs.screenXScale, cgs.screenYScale ) ); + if ( cgs.glconfig.vidWidth * 480.0 > cgs.glconfig.vidHeight * 640.0 ) { + float mask = 0.5 * ( ( cgs.glconfig.vidWidth - ( cgs.screenXScale * 480.0 ) ) / cgs.screenXScale ); + + CG_SetScreenPlacement(PLACE_LEFT, PLACE_CENTER); + CG_FillRect( 0, 0, mask, 480, color ); + CG_SetScreenPlacement(PLACE_RIGHT, PLACE_CENTER); + CG_FillRect( 640 - mask, 0, mask, 480, color ); } - CG_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM); - CG_FillRect( 0, 0, width, 480, color ); - CG_SetScreenPlacement(PLACE_RIGHT, PLACE_BOTTOM); - CG_FillRect( 640-width, 0, width, 480, color ); + // sides with letterbox + if ( cgs.glconfig.vidWidth * 480.0 < cgs.glconfig.vidHeight * 640.0 ) { + float lb = 0.5 * ( ( cgs.glconfig.vidHeight - ( cgs.screenYScale * 480.0 ) ) / cgs.screenYScale ); + + CG_SetScreenPlacement(PLACE_LEFT, PLACE_CENTER); + CG_FillRect( 0, 0, 80, 480, color ); + CG_SetScreenPlacement(PLACE_RIGHT, PLACE_CENTER); + CG_FillRect( 560, 0, 80, 480, color ); + + CG_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM); + CG_FillRect( 0, 480 - lb, 640, lb, color ); + CG_SetScreenPlacement(PLACE_LEFT, PLACE_TOP); + CG_FillRect( 0, 0, 640, lb, color ); + } } else { CG_FillRect( 0, 0, 80, 480, color ); CG_FillRect( 560, 0, 80, 480, color ); @@ -2292,9 +2305,10 @@ CG_DrawSpectator ================= */ static void CG_DrawSpectator( void ) { - if ( cg_fixedAspect.integer ) { + if ( cg_fixedAspect.integer == 2 ) { CG_SetScreenPlacement(PLACE_CENTER, PLACE_BOTTOM); } + CG_DrawBigString( 320 - 9 * 8, 440, CG_TranslateString( "SPECTATOR" ), 1.0F ); if ( cgs.gametype == GT_TOURNAMENT ) { CG_DrawBigString( 320 - 15 * 8, 460, "waiting to play", 1.0F ); @@ -2315,6 +2329,10 @@ static void CG_DrawVote( void ) { float color[4] = { 1, 1, 0, 1 }; int sec; + if ( cg_fixedAspect.integer == 2 ) { + CG_SetScreenPlacement(PLACE_LEFT, PLACE_CENTER); + } + if ( cgs.complaintEndTime > cg.time ) { if ( cgs.complaintClient == -1 ) { @@ -2368,10 +2386,6 @@ static void CG_DrawVote( void ) { Q_strncpyz( str2, "vote no", 32 ); } - if ( cg_fixedAspect.integer ) { - CG_SetScreenPlacement(PLACE_LEFT, PLACE_TOP); - } - // play a talk beep whenever it is modified if ( cgs.voteModified ) { cgs.voteModified = qfalse; @@ -2596,8 +2610,6 @@ static qboolean CG_DrawFollow( void ) { if ( cg_fixedAspect.integer == 2 ) { CG_SetScreenPlacement(PLACE_LEFT, PLACE_TOP); - } else if ( cg_fixedAspect.integer == 1 ) { - CG_SetScreenPlacement(PLACE_CENTER, PLACE_TOP); } color[0] = 1; @@ -2653,7 +2665,7 @@ static void CG_DrawWarmup( void ) { return; // (SA) don't bother with this stuff in sp } - if ( cg_fixedAspect.integer ) { + if ( cg_fixedAspect.integer == 2 ) { CG_SetScreenPlacement(PLACE_CENTER, PLACE_TOP); } @@ -2953,7 +2965,8 @@ static void CG_DrawFlashFire( void ) { col[3] = alpha; trap_R_SetColor( col ); if ( cg_fixedAspect.integer ) { - trap_R_DrawStretchPic( -10, -10, 650, 490, 0, 0, 1, 1, cgs.media.viewFlashFire[( cg.time / 50 ) % 16] ); + CG_SetScreenPlacement(PLACE_STRETCH, PLACE_STRETCH); + CG_DrawPic( -10, -10, 650, 490, cgs.media.viewFlashFire[( cg.time / 50 ) % 16] ); } else { CG_DrawPic( -10, -10, 650, 490, cgs.media.viewFlashFire[( cg.time / 50 ) % 16] ); } @@ -2996,14 +3009,13 @@ static void CG_DrawFlashLightning( void ) { } if ( cg_fixedAspect.integer ) { - trap_R_DrawStretchPic( -10, -10, 650, 490, 0, 0, 1, 1, shader ); + CG_SetScreenPlacement(PLACE_STRETCH, PLACE_STRETCH); + CG_DrawPic( -10, -10, 650, 490, shader ); } else { CG_DrawPic( -10, -10, 650, 490, shader ); } } - - /* ============== CG_DrawFlashBlendBehindHUD @@ -3213,8 +3225,6 @@ void CG_DrawObjectiveIcons( void ) { if ( cg_fixedAspect.integer == 2 ) { CG_SetScreenPlacement(PLACE_LEFT, PLACE_TOP); - } else if ( cg_fixedAspect.integer == 1 ) { - CG_SetScreenPlacement(PLACE_CENTER, PLACE_TOP); } // JPW NERVE added round timer @@ -3461,7 +3471,7 @@ void CG_Draw2D2( void ) { hcolor[3] = cg_hudAlpha.value; trap_R_SetColor( hcolor ); - if ( cg_fixedAspect.integer ) { + if ( cg_fixedAspect.integer == 2 ) { CG_SetScreenPlacement(PLACE_CENTER, PLACE_BOTTOM); } @@ -3552,7 +3562,7 @@ static void CG_DrawCompass( void ) { return; } - if ( cg_fixedAspect.integer ) { + if ( cg_fixedAspect.integer == 2 ) { CG_SetScreenPlacement(PLACE_CENTER, PLACE_BOTTOM); } @@ -3709,8 +3719,6 @@ static void CG_Draw2D(stereoFrame_t stereoFrame) { if ( cg_drawStatus.integer ) { if ( cg_fixedAspect.integer == 2 ) { CG_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM); - } else if ( cg_fixedAspect.integer == 1 ) { - CG_SetScreenPlacement(PLACE_CENTER, PLACE_BOTTOM); } Menu_PaintAll(); @@ -3836,7 +3844,7 @@ void CG_DrawActive( stereoFrame_t stereoView ) { h = LIMBO_3D_H; cg.refdef.width = 0; - if ( cg_fixedAspect.integer ) { + if ( cg_fixedAspect.integer == 2 ) { //FIXME:MAN-AT-ARMS...Use correct view cg.refdef.x = LIMBO_3D_X * cgs.screenXScaleStretch; cg.refdef.y = LIMBO_3D_Y * cgs.screenYScaleStretch; cg.refdef.width = LIMBO_3D_W * cgs.screenXScaleStretch; diff --git a/MP/code/cgame/cg_info.c b/MP/code/cgame/cg_info.c index b552182..e92ba51 100644 --- a/MP/code/cgame/cg_info.c +++ b/MP/code/cgame/cg_info.c @@ -260,11 +260,7 @@ void CG_DrawInformation( void ) { levelshot = trap_R_RegisterShaderNoMip( "levelshots/unknownmap.jpg" ); } trap_R_SetColor( NULL ); - if ( cg_fixedAspect.integer ) { - trap_R_DrawStretchPic( 0, 0, cgs.glconfig.vidWidth, cgs.glconfig.vidHeight, 0, 0, 1, 1, levelshot ); - } else { - CG_DrawPic( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, levelshot ); - } + CG_DrawPic( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, levelshot ); // show the server motd CG_DrawMotd(); diff --git a/MP/code/cgame/cg_local.h b/MP/code/cgame/cg_local.h index 5176640..da54c9b 100644 --- a/MP/code/cgame/cg_local.h +++ b/MP/code/cgame/cg_local.h @@ -1823,19 +1823,6 @@ void CG_Concussive( centity_t *cent ); // // cg_drawtools.c // -typedef enum { - PLACE_STRETCH, - PLACE_CENTER, - - // horizontal only - PLACE_LEFT, - PLACE_RIGHT, - - // vertical only - PLACE_TOP, - PLACE_BOTTOM -} screenPlacement_e; - void CG_SetScreenPlacement(screenPlacement_e hpos, screenPlacement_e vpos); void CG_PopScreenPlacement(void); screenPlacement_e CG_GetScreenHorizontalPlacement(void); diff --git a/MP/code/cgame/cg_newdraw.c b/MP/code/cgame/cg_newdraw.c index 600d465..adf15f5 100644 --- a/MP/code/cgame/cg_newdraw.c +++ b/MP/code/cgame/cg_newdraw.c @@ -290,8 +290,6 @@ static void CG_DrawPlayerWeaponIcon( rectDef_t *rect, qboolean drawHighlighted, if ( cg_fixedAspect.integer == 2 ) { CG_SetScreenPlacement(PLACE_RIGHT, PLACE_BOTTOM); - } else if ( cg_fixedAspect.integer == 1 ) { - CG_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER); } realweap = cg.predictedPlayerState.weapon; @@ -659,8 +657,6 @@ static void CG_DrawPlayerAmmoValue( rectDef_t *rect, float scale, vec4_t color, if ( cg_fixedAspect.integer == 2 ) { CG_SetScreenPlacement(PLACE_RIGHT, PLACE_BOTTOM); - } else if ( cg_fixedAspect.integer == 1 ) { - CG_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER); } switch ( weap ) { // some weapons don't draw ammo count text @@ -1109,8 +1105,6 @@ static void CG_DrawPlayerHealth( rectDef_t *rect, float scale, vec4_t color, qha if ( cg_fixedAspect.integer == 2 ) { CG_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM); - } else if ( cg_fixedAspect.integer == 1 ) { - CG_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER); } if ( shader ) { @@ -2223,8 +2217,6 @@ void CG_DrawWeapHeat( rectDef_t *rect, int align ) { if ( cg_fixedAspect.integer == 2 ) { CG_SetScreenPlacement(PLACE_RIGHT, PLACE_BOTTOM); - } else if ( cg_fixedAspect.integer == 1 ) { - CG_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER); } if ( align != HUD_HORIZONTAL ) { @@ -2252,8 +2244,6 @@ static void CG_DrawFatigue( rectDef_t *rect, vec4_t color, int align ) { if ( cg_fixedAspect.integer == 2 ) { CG_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM); - } else if ( cg_fixedAspect.integer == 1 ) { - CG_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER); } if ( align != HUD_HORIZONTAL ) { diff --git a/MP/code/cgame/cg_scoreboard.c b/MP/code/cgame/cg_scoreboard.c index fd737f3..14a35cb 100644 --- a/MP/code/cgame/cg_scoreboard.c +++ b/MP/code/cgame/cg_scoreboard.c @@ -650,10 +650,6 @@ qboolean CG_DrawScoreboard( void ) { float *fadeColor; char *s; - if ( cg_fixedAspect.integer ) { - CG_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER); - } - // don't draw anything if the menu or console is up if ( cg_paused.integer ) { cg.deferredPlayerLoading = 0; @@ -670,6 +666,10 @@ qboolean CG_DrawScoreboard( void ) { return qfalse; } + if ( cg_fixedAspect.integer ) { + CG_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER); + } + // NERVE - SMF - added mp wolf check if ( cg.showScores || ( cg.predictedPlayerState.pm_type == PM_DEAD && cgs.gametype < GT_WOLF ) || cg.predictedPlayerState.pm_type == PM_INTERMISSION ) { @@ -864,7 +864,7 @@ void CG_DrawTourneyScoreboard( void ) { color[3] = 1; CG_SetScreenPlacement(PLACE_STRETCH, PLACE_STRETCH); CG_FillRect( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, color ); - CG_PopScreenPlacement(); + CG_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER); } else { color[0] = color[1] = color[2] = 0; color[3] = 1; diff --git a/MP/code/cgame/cg_weapons.c b/MP/code/cgame/cg_weapons.c index 30680b7..7908a63 100644 --- a/MP/code/cgame/cg_weapons.c +++ b/MP/code/cgame/cg_weapons.c @@ -2927,11 +2927,8 @@ void CG_DrawWeaponSelect( void ) { if ( cg_fixedAspect.integer == 2 ) { CG_SetScreenPlacement(PLACE_RIGHT, PLACE_BOTTOM); - } else if ( cg_fixedAspect.integer == 1 ) { - CG_SetScreenPlacement(PLACE_CENTER, PLACE_BOTTOM); } - //----(SA) neither of these overlap the weapon selection area anymore, so let them stay // showing weapon select clears pickup item display, but not the blend blob cg.itemPickupTime = 0; diff --git a/MP/code/qcommon/q_shared.h b/MP/code/qcommon/q_shared.h index 583450d..1c01108 100644 --- a/MP/code/qcommon/q_shared.h +++ b/MP/code/qcommon/q_shared.h @@ -471,6 +471,19 @@ extern vec4_t g_color_table[8]; #define DEG2RAD( a ) ( ( ( a ) * M_PI ) / 180.0F ) #define RAD2DEG( a ) ( ( ( a ) * 180.0f ) / M_PI ) +typedef enum { + PLACE_STRETCH, + PLACE_CENTER, + + // horizontal only + PLACE_LEFT, + PLACE_RIGHT, + + // vertical only + PLACE_TOP, + PLACE_BOTTOM +} screenPlacement_e; + struct cplane_s; extern vec3_t vec3_origin; diff --git a/MP/code/ui/ui_atoms.c b/MP/code/ui/ui_atoms.c index 05b2d15..bbbd87d 100644 --- a/MP/code/ui/ui_atoms.c +++ b/MP/code/ui/ui_atoms.c @@ -450,29 +450,6 @@ UI_Shutdown void UI_Shutdown( void ) { } -/* -================ -UI_AdjustFrom640 - -Adjusted for resolution and screen aspect ratio -================ -*/ -void UI_AdjustFrom640( float *x, float *y, float *w, float *h ) { - // expect valid pointers -#if 0 - *x = *x * uiInfo.uiDC.scale + uiInfo.uiDC.bias; - *y *= uiInfo.uiDC.scale; - *w *= uiInfo.uiDC.scale; - *h *= uiInfo.uiDC.scale; -#endif - - *x *= uiInfo.uiDC.xscale; - *y *= uiInfo.uiDC.yscale; - *w *= uiInfo.uiDC.xscale; - *h *= uiInfo.uiDC.yscale; - -} - void UI_DrawNamedPic( float x, float y, float width, float height, const char *picname ) { qhandle_t hShader; diff --git a/MP/code/ui/ui_local.h b/MP/code/ui/ui_local.h index c6f32bc..bbd4dcf 100644 --- a/MP/code/ui/ui_local.h +++ b/MP/code/ui/ui_local.h @@ -74,6 +74,8 @@ extern vmCvar_t ui_autoactivate; extern vmCvar_t ui_emptyswitch; // END JOSEPH +extern vmCvar_t ui_fixedAspect; + extern vmCvar_t ui_server1; extern vmCvar_t ui_server2; extern vmCvar_t ui_server3; diff --git a/MP/code/ui/ui_main.c b/MP/code/ui/ui_main.c index cb7b5d3..00c002c 100644 --- a/MP/code/ui/ui_main.c +++ b/MP/code/ui/ui_main.c @@ -1600,6 +1600,7 @@ static void UI_DrawClanCinematic( rectDef_t *rect, float scale, vec4_t color ) { } if ( uiInfo.teamList[i].cinematic >= 0 ) { trap_CIN_RunCinematic( uiInfo.teamList[i].cinematic ); + //FIXME:MAN-AT-ARMS Scale this trap_CIN_SetExtents( uiInfo.teamList[i].cinematic, rect->x, rect->y, rect->w, rect->h ); trap_CIN_DrawCinematic( uiInfo.teamList[i].cinematic ); } else { @@ -1619,6 +1620,7 @@ static void UI_DrawPreviewCinematic( rectDef_t *rect, float scale, vec4_t color uiInfo.previewMovie = trap_CIN_PlayCinematic( va( "%s.roq", uiInfo.movieList[uiInfo.movieIndex] ), 0, 0, 0, 0, ( CIN_loop | CIN_silent ) ); if ( uiInfo.previewMovie >= 0 ) { trap_CIN_RunCinematic( uiInfo.previewMovie ); + //FIXME:MAN-AT-ARMS Scale this trap_CIN_SetExtents( uiInfo.previewMovie, rect->x, rect->y, rect->w, rect->h ); trap_CIN_DrawCinematic( uiInfo.previewMovie ); } else { @@ -1743,8 +1745,9 @@ static void UI_DrawMapCinematic( rectDef_t *rect, float scale, vec4_t color, qbo if ( uiInfo.mapList[map].cinematic == -1 ) { uiInfo.mapList[map].cinematic = trap_CIN_PlayCinematic( va( "%s.roq", uiInfo.mapList[map].mapLoadName ), 0, 0, 0, 0, ( CIN_loop | CIN_silent ) ); } - if ( uiInfo.mapList[map].cinematic >= 0 ) { + if ( uiInfo.mapList[map].cinematic >= 0 ) { trap_CIN_RunCinematic( uiInfo.mapList[map].cinematic ); + // FIXME:MAN-AT-ARMS Scale this trap_CIN_SetExtents( uiInfo.mapList[map].cinematic, rect->x, rect->y, rect->w, rect->h ); trap_CIN_DrawCinematic( uiInfo.mapList[map].cinematic ); } else { @@ -1872,6 +1875,7 @@ static void UI_DrawNetMapCinematic( rectDef_t *rect, float scale, vec4_t color ) if ( uiInfo.serverStatus.currentServerCinematic >= 0 ) { trap_CIN_RunCinematic( uiInfo.serverStatus.currentServerCinematic ); + // FIXME:MAN-AT-ARMS Scale this trap_CIN_SetExtents( uiInfo.serverStatus.currentServerCinematic, rect->x, rect->y, rect->w, rect->h ); trap_CIN_DrawCinematic( uiInfo.serverStatus.currentServerCinematic ); } else { @@ -6734,6 +6738,7 @@ static void UI_StopCinematic( int handle ) { } static void UI_DrawCinematic( int handle, float x, float y, float w, float h ) { + //FIXME:MAN-AT-ARMS Scale this trap_CIN_SetExtents( handle, x, y, w, h ); trap_CIN_DrawCinematic( handle ); } @@ -6823,14 +6828,36 @@ void _UI_Init( qboolean inGameLoad ) { trap_GetGlconfig( &uiInfo.uiDC.glconfig ); // for 640x480 virtualized screen - uiInfo.uiDC.yscale = uiInfo.uiDC.glconfig.vidHeight * ( 1.0 / 480.0 ); - uiInfo.uiDC.xscale = uiInfo.uiDC.glconfig.vidWidth * ( 1.0 / 640.0 ); - if ( uiInfo.uiDC.glconfig.vidWidth * 480 > uiInfo.uiDC.glconfig.vidHeight * 640 ) { - // wide screen - uiInfo.uiDC.bias = 0.5 * ( uiInfo.uiDC.glconfig.vidWidth - ( uiInfo.uiDC.glconfig.vidHeight * ( 640.0 / 480.0 ) ) ); + if ( ui_fixedAspect.integer ) { + uiInfo.uiDC.xscaleStretch = uiInfo.uiDC.glconfig.vidWidth * (1.0/640.0); + uiInfo.uiDC.yscaleStretch = uiInfo.uiDC.glconfig.vidHeight * (1.0/480.0); + if ( uiInfo.uiDC.glconfig.vidWidth * 480 > uiInfo.uiDC.glconfig.vidHeight * 640 ) { + uiInfo.uiDC.xscale = uiInfo.uiDC.glconfig.vidWidth * (1.0/640.0); + uiInfo.uiDC.yscale = uiInfo.uiDC.glconfig.vidHeight * (1.0/480.0); + // wide screen + uiInfo.uiDC.xBias = 0.5 * ( uiInfo.uiDC.glconfig.vidWidth - ( uiInfo.uiDC.glconfig.vidHeight * (640.0/480.0) ) ); + uiInfo.uiDC.xscale = uiInfo.uiDC.yscale; + // no narrow screen + uiInfo.uiDC.yBias = 0; + } else { + uiInfo.uiDC.xscale = uiInfo.uiDC.glconfig.vidWidth * (1.0/640.0); + uiInfo.uiDC.yscale = uiInfo.uiDC.glconfig.vidHeight * (1.0/480.0); + // narrow screen + uiInfo.uiDC.yBias = 0.5 * ( uiInfo.uiDC.glconfig.vidHeight - ( uiInfo.uiDC.glconfig.vidWidth * (480.0/640.0) ) ); + uiInfo.uiDC.yscale = uiInfo.uiDC.xscale; + // no wide screen + uiInfo.uiDC.xBias = 0; + } } else { - // no wide screen - uiInfo.uiDC.bias = 0; + uiInfo.uiDC.yscale = uiInfo.uiDC.glconfig.vidHeight * ( 1.0 / 480.0 ); + uiInfo.uiDC.xscale = uiInfo.uiDC.glconfig.vidWidth * ( 1.0 / 640.0 ); + if ( uiInfo.uiDC.glconfig.vidWidth * 480 > uiInfo.uiDC.glconfig.vidHeight * 640 ) { + // wide screen + uiInfo.uiDC.bias = 0.5 * ( uiInfo.uiDC.glconfig.vidWidth - ( uiInfo.uiDC.glconfig.vidHeight * ( 640.0 / 480.0 ) ) ); + } else { + // no wide screen + uiInfo.uiDC.bias = 0; + } } @@ -7583,6 +7610,8 @@ cvarTable_t cvarTable[] = { { &ui_autoactivate, "cg_autoactivate", "1", CVAR_ARCHIVE }, // END JOSEPH + { &ui_fixedAspect, "cg_fixedAspect", "0", CVAR_ARCHIVE | CVAR_LATCH }, + { &ui_server1, "server1", "", CVAR_ARCHIVE }, { &ui_server2, "server2", "", CVAR_ARCHIVE }, { &ui_server3, "server3", "", CVAR_ARCHIVE }, diff --git a/MP/code/ui/ui_shared.c b/MP/code/ui/ui_shared.c index 4ac7285..8464b8d 100644 --- a/MP/code/ui/ui_shared.c +++ b/MP/code/ui/ui_shared.c @@ -94,6 +94,111 @@ static char memoryPool[MEM_POOL_SIZE]; static int allocPoint, outOfMemory; +static screenPlacement_e ui_horizontalPlacement = PLACE_CENTER; +static screenPlacement_e ui_verticalPlacement = PLACE_CENTER; +static screenPlacement_e ui_lastHorizontalPlacement = PLACE_CENTER; +static screenPlacement_e ui_lastVerticalPlacement = PLACE_CENTER; + +/* +================ +UI_SetScreenPlacement +================ +*/ +void UI_SetScreenPlacement(screenPlacement_e hpos, screenPlacement_e vpos) +{ + ui_lastHorizontalPlacement = ui_horizontalPlacement; + ui_lastVerticalPlacement = ui_verticalPlacement; + + ui_horizontalPlacement = hpos; + ui_verticalPlacement = vpos; +} + +/* +================ +UI_PopScreenPlacement +================ +*/ +void UI_PopScreenPlacement(void) +{ + ui_horizontalPlacement = ui_lastHorizontalPlacement; + ui_verticalPlacement = ui_lastVerticalPlacement; +} + +/* +================ +UI_GetScreenHorizontalPlacement +================ +*/ +screenPlacement_e UI_GetScreenHorizontalPlacement(void) +{ + return ui_horizontalPlacement; +} + +/* +================ +UI_GetScreenVerticalPlacement +================ +*/ +screenPlacement_e UI_GetScreenVerticalPlacement(void) +{ + return ui_verticalPlacement; +} + +vmCvar_t ui_fixedAspect; + +/* +================ +UI_AdjustFrom640 + +Adjusted for resolution and screen aspect ratio +================ +*/ +void UI_AdjustFrom640( float *x, float *y, float *w, float *h ) { + // expect valid pointers +#if 0 + *x = *x * DC->scale + DC->bias; + *y *= DC->scale; + *w *= DC->scale; + *h *= DC->scale; +#endif + if ( ui_fixedAspect.integer ) { + if (ui_horizontalPlacement == PLACE_STRETCH) { + // scale for screen sizes (not aspect correct in wide screen) + *w *= DC->xscaleStretch; + *x *= DC->xscaleStretch; + } else { + // scale for screen sizes + *w *= DC->xscale; + *x *= DC->xscale; + + if (ui_horizontalPlacement == PLACE_CENTER) { + *x += DC->xBias; + } else if (ui_horizontalPlacement == PLACE_RIGHT) { + *x += DC->xBias*2; + } + } + + if (ui_verticalPlacement == PLACE_STRETCH) { + *h *= DC->yscaleStretch; + *y *= DC->yscaleStretch; + } else { + *h *= DC->yscale; + *y *= DC->yscale; + + if (ui_verticalPlacement == PLACE_CENTER) { + *y += DC->yBias; + } else if (ui_verticalPlacement == PLACE_BOTTOM) { + *y += DC->yBias*2; + } + } + } else { + *x *= DC->xscale; + *y *= DC->yscale; + *w *= DC->xscale; + *h *= DC->yscale; + } +} + /* =============== UI_Alloc @@ -687,13 +792,44 @@ void Window_Paint( Window *w, float fadeAmount, float fadeClamp, float fadeCycle fillRect.h -= w->borderSize + 1; } + // Make pillarbox/letterbox for 4:3 UI + if ( ui_fixedAspect.integer == 1 || !Q_stricmpn( w->name, "wm_limbo", 8 ) ) { + vec4_t col = {0, 0, 0, 1}; + if ( DC->glconfig.vidWidth * 480.0 > DC->glconfig.vidHeight * 640.0 ) { + float pillar = 0.5 * ( ( DC->glconfig.vidWidth - ( DC->xscale * 640.0 ) ) / DC->xscale ); + + UI_SetScreenPlacement(PLACE_LEFT, PLACE_CENTER); + DC->fillRect( 0, 0, pillar + 1, 480, col ); + UI_SetScreenPlacement(PLACE_RIGHT, PLACE_CENTER); + DC->fillRect( 640 - pillar, 0, pillar + 1, 480, col ); + UI_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER); + } else if ( DC->glconfig.vidWidth * 480.0 < DC->glconfig.vidHeight * 640.0 ) { + float lb = 0.5 * ( ( DC->glconfig.vidHeight - ( DC->yscale * 480.0 ) ) / DC->yscale ); + + UI_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM); + DC->fillRect( 0, 480 - lb, 640, lb + 1, col ); + UI_SetScreenPlacement(PLACE_LEFT, PLACE_TOP); + DC->fillRect( 0, 0, 640, lb + 1, col ); + UI_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER); + } + } + if ( w->style == WINDOW_STYLE_FILLED ) { // box, but possible a shader that needs filled if ( w->background ) { - Fade( &w->flags, &w->backColor[3], fadeClamp, &w->nextTime, fadeCycle, qtrue, fadeAmount ); - DC->setColor( w->backColor ); - DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background ); - DC->setColor( NULL ); + if ( ui_fixedAspect.integer == 2 ) { + UI_SetScreenPlacement(PLACE_CENTER, PLACE_STRETCH); + Fade( &w->flags, &w->backColor[3], fadeClamp, &w->nextTime, fadeCycle, qtrue, fadeAmount ); + DC->setColor( w->backColor ); + DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background ); + DC->setColor( NULL ); + UI_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER); + } else { + Fade( &w->flags, &w->backColor[3], fadeClamp, &w->nextTime, fadeCycle, qtrue, fadeAmount ); + DC->setColor( w->backColor ); + DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background ); + DC->setColor( NULL ); + } } else { DC->fillRect( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->backColor ); } @@ -704,8 +840,32 @@ void Window_Paint( Window *w, float fadeAmount, float fadeClamp, float fadeCycle if ( w->flags & WINDOW_FORECOLORSET ) { DC->setColor( w->foreColor ); } - DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background ); - DC->setColor( NULL ); + if ( ui_fixedAspect.integer == 2 ) { + if ( DC->glconfig.vidWidth * 480 > DC->glconfig.vidHeight * 640 ) { + // HACK ... widen menu without stretching items and models + if ( !Q_stricmpn( w->name, "BLACKGRAD", 9 ) ) { + UI_SetScreenPlacement(PLACE_STRETCH, PLACE_STRETCH); + DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background ); + DC->setColor( NULL ); + } else if ( !Q_stricmpn( w->name, "gold_line", 9 ) ) { + UI_SetScreenPlacement(PLACE_STRETCH, PLACE_STRETCH); + DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background ); + DC->setColor( NULL ); + } else { + UI_SetScreenPlacement(PLACE_CENTER, PLACE_STRETCH); + DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background ); + DC->setColor( NULL ); + } + } else { + UI_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER); + DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background ); + DC->setColor( NULL ); + } + UI_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER); + } else { + DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background ); + DC->setColor( NULL ); + } } else if ( w->style == WINDOW_STYLE_TEAMCOLOR ) { if ( DC->getTeamColor ) { DC->getTeamColor( &color ); @@ -3900,14 +4060,19 @@ qboolean Item_Bind_HandleKey( itemDef_t *item, int key, qboolean down ) { return qtrue; } - - void AdjustFrom640( float *x, float *y, float *w, float *h ) { //*x = *x * DC->scale + DC->bias; - *x *= DC->xscale; - *y *= DC->yscale; - *w *= DC->xscale; - *h *= DC->yscale; + if ( ui_fixedAspect.integer ) { + *w *= DC->xscale; + *x = *x * DC->xscale + DC->xBias; + *h *= DC->yscale; + *y = *y * DC->yscale + DC->yBias; + } else { + *x *= DC->xscale; + *y *= DC->yscale; + *w *= DC->xscale; + *h *= DC->yscale; + } } void Item_Model_Paint( itemDef_t *item ) { diff --git a/MP/code/ui/ui_shared.h b/MP/code/ui/ui_shared.h index 5b4ac43..09478ed 100644 --- a/MP/code/ui/ui_shared.h +++ b/MP/code/ui/ui_shared.h @@ -408,6 +408,10 @@ typedef struct { float yscale; float xscale; + float yscaleStretch; + float xscaleStretch; + float yBias; + float xBias; float bias; int realTime; int frameTime; @@ -491,4 +495,9 @@ int trap_PC_FreeSource( int handle ); int trap_PC_ReadToken( int handle, pc_token_t *pc_token ); int trap_PC_SourceFileAndLine( int handle, char *filename, int *line ); +void UI_SetScreenPlacement(screenPlacement_e hpos, screenPlacement_e vpos); +void UI_PopScreenPlacement(void); +screenPlacement_e UI_GetScreenHorizontalPlacement(void); +screenPlacement_e UI_GetScreenVerticalPlacement(void); + #endif diff --git a/SP/code/ui/ui_main.c b/SP/code/ui/ui_main.c index 252385f..11f8b0f 100644 --- a/SP/code/ui/ui_main.c +++ b/SP/code/ui/ui_main.c @@ -7269,8 +7269,6 @@ vmCvar_t ui_autoactivate; vmCvar_t ui_emptyswitch; //----(SA) added // END JOSEPH -vmCvar_t ui_fixedAspect; - vmCvar_t ui_server1; vmCvar_t ui_server2; vmCvar_t ui_server3; diff --git a/SP/code/ui/ui_shared.c b/SP/code/ui/ui_shared.c index ee7466e..55fb9ec 100644 --- a/SP/code/ui/ui_shared.c +++ b/SP/code/ui/ui_shared.c @@ -214,7 +214,6 @@ void UI_AdjustFrom640( float *x, float *y, float *w, float *h ) { *w *= DC->scale; *h *= DC->scale; #endif - if ( ui_fixedAspect.integer ) { if (ui_horizontalPlacement == PLACE_STRETCH) { // scale for screen sizes (not aspect correct in wide screen) -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/iortcw.git _______________________________________________ Pkg-games-commits mailing list Pkg-games-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits