summaryrefslogtreecommitdiff
path: root/src/cgame/cg_draw.c
diff options
context:
space:
mode:
authorChristopher Schwarz <lakitu7@gmail.com>2010-04-11 03:48:09 +0000
committerTim Angus <tim@ngus.net>2013-01-03 00:17:35 +0000
commit24734eb5cfedeeded9c0dfc7e96d30063fe3dad5 (patch)
tree30a3189058ca941079d0672b91fd6496773bd024 /src/cgame/cg_draw.c
parent76299e2887ef0688ca0889c48b66c466111f8295 (diff)
* Fix the fact that teamoverlay was being drawn above where the hud told it to be, and it wasn't respecting the right-side bbox either. Make it valign in the center of its bbox.
* Align columns of teamoverlay and pad/truncate where necessary * Default/GPP HUD: Move cg_tutorial down a little bit and also make it valign center. * Default/GPP HUD: Move teamoverlay down a little bit and set the scale to 0.85
Diffstat (limited to 'src/cgame/cg_draw.c')
-rw-r--r--src/cgame/cg_draw.c50
1 files changed, 31 insertions, 19 deletions
diff --git a/src/cgame/cg_draw.c b/src/cgame/cg_draw.c
index 5c7bfac7..96319e94 100644
--- a/src/cgame/cg_draw.c
+++ b/src/cgame/cg_draw.c
@@ -1651,7 +1651,7 @@ static void CG_DrawTeamOverlay( rectDef_t *rect, float scale, vec4_t color )
char *s;
int i;
float x = rect->x;
- float y, dx;
+ float y;
clientInfo_t *ci, *pci;
vec4_t tcolor;
float iconSize = rect->h / 8.0f;
@@ -1660,8 +1660,14 @@ static void CG_DrawTeamOverlay( rectDef_t *rect, float scale, vec4_t color )
float midSep = 2.0f;
float backgroundWidth = rect->w;
float fontScale = 0.30f;
+ float vPad = 0.0f;
+ float nameWidth = 0.5f * rect->w;
+ char name[ MAX_NAME_LENGTH + 2 ];
int maxDisplayCount = 0;
int displayCount = 0;
+ float nameMaxX, nameMaxXCp;
+ float maxX = rect->x + rect->w;
+ float maxXCp = maxX;
weapon_t curWeapon = WP_NONE;
if( cg.predictedPlayerState.pm_type == PM_SPECTATOR )
@@ -1682,7 +1688,7 @@ static void CG_DrawTeamOverlay( rectDef_t *rect, float scale, vec4_t color )
for( i = 0; i < MAX_CLIENTS; i++ )
{
ci = cgs.clientinfo + i;
- if( ci->infoValid && pci != ci && ci->team == pci->team)
+ if( ci->infoValid && pci != ci && ci->team == pci->team )
maxDisplayCount++;
}
@@ -1695,8 +1701,10 @@ static void CG_DrawTeamOverlay( rectDef_t *rect, float scale, vec4_t color )
midSep *= scale;
backgroundWidth *= scale;
fontScale *= scale;
+ nameWidth *= scale;
- y = rect->y - (float) maxDisplayCount * ( iconSize / 2.0f );
+ vPad = ( rect->h - ( (float) maxDisplayCount * iconSize ) ) / 2.0f;
+ y = rect->y + vPad;
tcolor[ 0 ] = 1.0f;
tcolor[ 1 ] = 1.0f;
@@ -1710,16 +1718,14 @@ static void CG_DrawTeamOverlay( rectDef_t *rect, float scale, vec4_t color )
if( !ci->infoValid || pci == ci || ci->team != pci->team )
continue;
- dx = 0.f;
+ Com_sprintf( name, sizeof( name ), "%s^7", ci->name );
+
trap_R_SetColor( color );
- CG_DrawPic( x, y - iconSize + iconTopMargin, backgroundWidth,
+ CG_DrawPic( x, y, backgroundWidth,
iconSize, cgs.media.teamOverlayShader );
trap_R_SetColor( tcolor );
if( ci->health <= 0 || !ci->curWeaponClass )
- {
- dx = -iconSize;
- s = va( "%s^7", ci->name );
- }
+ s = "";
else
{
if( ci->team == TEAM_HUMANS )
@@ -1727,15 +1733,14 @@ static void CG_DrawTeamOverlay( rectDef_t *rect, float scale, vec4_t color )
else if( ci->team == TEAM_ALIENS )
curWeapon = BG_Class( ci->curWeaponClass )->startWeapon;
- CG_DrawPic( x + leftMargin, y - iconSize + iconTopMargin, iconSize, iconSize,
+ CG_DrawPic( x + leftMargin, y, iconSize, iconSize,
cg_weapons[ curWeapon ].weaponIcon );
if( cg.predictedPlayerState.stats[ STAT_TEAM ] == TEAM_HUMANS )
{
if( ci->upgrade != UP_NONE )
{
- CG_DrawPic( x + iconSize + leftMargin, y - iconSize + iconTopMargin,
- iconSize, iconSize, cg_upgrades[ ci->upgrade ].upgradeIcon );
- dx = iconSize;
+ CG_DrawPic( x + iconSize + leftMargin, y, iconSize,
+ iconSize, cg_upgrades[ ci->upgrade ].upgradeIcon );
}
}
else
@@ -1743,21 +1748,28 @@ static void CG_DrawTeamOverlay( rectDef_t *rect, float scale, vec4_t color )
if( curWeapon == WP_ABUILD2 || curWeapon == WP_ALEVEL1_UPG ||
curWeapon == WP_ALEVEL2_UPG || curWeapon == WP_ALEVEL3_UPG )
{
- CG_DrawPic( x + iconSize + leftMargin, y - iconSize + iconTopMargin,
- iconSize, iconSize, cgs.media.upgradeClassIconShader );
- dx = iconSize;
+ CG_DrawPic( x + iconSize + leftMargin, y, iconSize,
+ iconSize, cgs.media.upgradeClassIconShader );
}
}
- s = va( "%s^7 [^%c%d^7] ^7%s", ci->name,
+ s = va( " [^%c%3d^7] ^7%s",
CG_GetColorCharForHealth( i ),
ci->health,
CG_ConfigString( CS_LOCATIONS + ci->location ) );
}
trap_R_SetColor( NULL );
- UI_Text_Paint( x + iconSize + leftMargin + midSep + dx, y, fontScale, tcolor, s,
- 0, 0, ITEM_TEXTSTYLE_NORMAL );
+ nameMaxX = nameMaxXCp = x + 2.0f * iconSize +
+ leftMargin + midSep + nameWidth;
+ UI_Text_Paint_Limit( &nameMaxXCp, x + 2.0f * iconSize + leftMargin + midSep,
+ y + iconSize - iconTopMargin, fontScale, tcolor, name,
+ 0, 0 );
+
+ maxXCp = maxX;
+
+ UI_Text_Paint_Limit( &maxXCp, nameMaxX, y + iconSize - iconTopMargin,
+ fontScale, tcolor, s, 0, 0 );
y += iconSize;
displayCount++;
}