summaryrefslogtreecommitdiff
path: root/src/cgame
diff options
context:
space:
mode:
Diffstat (limited to 'src/cgame')
-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++;
}