summaryrefslogtreecommitdiff
path: root/src/cgame/cg_draw.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cgame/cg_draw.c')
-rw-r--r--src/cgame/cg_draw.c42
1 files changed, 37 insertions, 5 deletions
diff --git a/src/cgame/cg_draw.c b/src/cgame/cg_draw.c
index 374c7a75..bc012338 100644
--- a/src/cgame/cg_draw.c
+++ b/src/cgame/cg_draw.c
@@ -899,15 +899,42 @@ CG_DrawPlayerHealthCross
*/
static void CG_DrawPlayerHealthCross( rectDef_t *rect, vec4_t color, qhandle_t shader )
{
- playerState_t *ps = &cg.snap->ps;
- int health = ps->stats[ STAT_HEALTH ];
-
- if( health < 10 )
+ if( ( cg.snap->ps.stats[ STAT_STATE ] & SS_HEALING_2X ) ||
+ ( cg.snap->ps.stats[ STAT_STATE ] & SS_HEALING_3X ) )
+ return;
+ if( cg.snap->ps.stats[ STAT_PTEAM ] == PTE_HUMANS &&
+ cg.snap->ps.stats[ STAT_HEALTH ] < 10 )
{
color[ 0 ] = 1.0f;
color[ 1 ] = color[ 2 ] = 0.0f;
}
+ if( cg.snap->ps.stats[ STAT_STATE ] & SS_HEALING_ACTIVE )
+ color[ 3 ] = 1.0f;
+
+ trap_R_SetColor( color );
+ CG_DrawPic( rect->x, rect->y, rect->w, rect->h, shader );
+ trap_R_SetColor( NULL );
+}
+
+static void CG_DrawPlayerHealthCross2( rectDef_t *rect, vec4_t color, qhandle_t shader )
+{
+ if( !( cg.snap->ps.stats[ STAT_STATE ] & SS_HEALING_2X ) )
+ return;
+ if( cg.snap->ps.stats[ STAT_STATE ] & SS_HEALING_ACTIVE )
+ color[ 3 ] = 1.0f;
+
+ trap_R_SetColor( color );
+ CG_DrawPic( rect->x, rect->y, rect->w, rect->h, shader );
+ trap_R_SetColor( NULL );
+}
+static void CG_DrawPlayerHealthCross3( rectDef_t *rect, vec4_t color, qhandle_t shader )
+{
+ if( !( cg.snap->ps.stats[ STAT_STATE ] & SS_HEALING_3X ) )
+ return;
+ if( cg.snap->ps.stats[ STAT_STATE ] & SS_HEALING_ACTIVE )
+ color[ 3 ] = 1.0f;
+
trap_R_SetColor( color );
CG_DrawPic( rect->x, rect->y, rect->w, rect->h, shader );
trap_R_SetColor( NULL );
@@ -2156,6 +2183,12 @@ void CG_OwnerDraw( float x, float y, float w, float h, float text_x,
case CG_PLAYER_HEALTH_CROSS:
CG_DrawPlayerHealthCross( &rect, color, shader );
break;
+ case CG_PLAYER_HEALTH_CROSS2:
+ CG_DrawPlayerHealthCross2( &rect, color, shader );
+ break;
+ case CG_PLAYER_HEALTH_CROSS3:
+ CG_DrawPlayerHealthCross3( &rect, color, shader );
+ break;
case CG_PLAYER_CLIPS_RING:
CG_DrawPlayerClipsRing( &rect, color, shader );
break;
@@ -2872,7 +2905,6 @@ static void CG_PainBlend( void )
return;
damage = cg.lastHealth - cg.snap->ps.stats[ STAT_HEALTH ];
-
if( damage < 0 )
damage = 0;