]> de.git.xonotic.org Git - voretournament/voretournament.git/blobdiff - data/qcsrc/client/shownames.qc
Change how the status setting works for shownames. Also, don't show armor by default...
[voretournament/voretournament.git] / data / qcsrc / client / shownames.qc
index 37bd0bfc6a0b7c41e63fc8834ca85c9f5fe1f016..a1ed5f9990e2959a52c03ccb3e69e0b8b5f83904 100644 (file)
@@ -3,7 +3,6 @@
 // self.healthvalue
 // self.armorvalue
 // self.eaten
-// self.sameteam = player is on same team as local client
 //
 const float SHOWNAMES_FADESPEED = 4;
 void Draw_ShowNames(entity ent)
@@ -14,14 +13,22 @@ void Draw_ShowNames(entity ent)
        if(ent.sv_entnum == player_localentnum && !cvar("chase_active"))
                return;
 
-       if(ent.eaten) // don't show names for prey
+       if(ent.predator) // don't show names for prey
                return;
 
-       if(ent.sameteam || (!ent.sameteam && cvar("hud_shownames_enemies")))
+       float sameteam;
+       if(teamplay && (GetPlayerColor(player_localentnum - 1) == GetPlayerColor(ent.sv_entnum - 1)))
+               sameteam = TRUE;
+
+       if(sameteam || (!sameteam && cvar("hud_shownames_enemies")))
        {
                ent.origin_z += cvar("hud_shownames_offset");
 
-               if(!ent.sameteam)
+               // offset the name by player scale, decided by health
+               if(g_healthsize)
+                       ent.origin_z -= (g_healthsize - ent.healthvalue) * cvar("hud_shownames_offset_healthsize");
+
+               if(!sameteam)
                {
                        /* WIP, why does trace_ent != ent not work as intended here?
                           if(cvar("hud_shownames_enemies") != 2) // player has to point at enemy if so
@@ -60,7 +67,7 @@ void Draw_ShowNames(entity ent)
                        }
                }
 
-               if(!ent.sameteam && trace_endpos != view_origin) // out of view, fade out
+               if(!sameteam && trace_endpos != view_origin) // out of view, fade out
                        ent.alpha = max(0, ent.alpha - SHOWNAMES_FADESPEED * frametime);
                else if(ent.healthvalue < 1) // dead player, fade out slowly
                        ent.alpha = max(0, ent.alpha - SHOWNAMES_FADESPEED * 0.25 * frametime);
@@ -123,13 +130,16 @@ void Draw_ShowNames(entity ent)
                        drawfontscale = '1 1 0' * resize;
                        s = textShortenToWidth(s, namewidth, '1 1 0' * cvar("hud_shownames_fontsize"), stringwidth_colors);
 
-                       if(cvar("hud_shownames_status") && teamplay)
-                       if(ent.sameteam && ent.healthvalue > 0)
+                       if(sameteam && ent.healthvalue > 0)
                        {
-                               if(ent.armorvalue)
-                                       s = strcat(s, " (", ftos(ent.healthvalue), "|", ftos(ent.armorvalue), ")");
-                               else
-                                       s = strcat(s, " (", ftos(ent.healthvalue), ")");
+                               if(cvar("hud_shownames_status") > 2 && ent.armorvalue)
+                                       s = strcat(s, "^7 (^1+", ftos(ent.healthvalue), "^7|^2*", ftos(ent.armorvalue), "^7)");
+                               else if(cvar("hud_shownames_status") > 1)
+                                       s = strcat(s, "^7 (^1+", ftos(ent.healthvalue), "^7)");
+
+                               // if team healing is enabled, mark the team mate as possible to heal
+                               if(cvar("hud_shownames_status") && ent.healthvalue < teamheal_max)
+                                       s = strcat(s, "^7 [^5HEAL^7]");
                        }
 
                        float width;
@@ -170,15 +180,13 @@ void Draw_ShowNames_All()
                {
                        e.healthvalue = entcs.healthvalue;
                        e.armorvalue = entcs.armorvalue;
-                       e.sameteam = 1; /* (teamplay && (t == myteam)); */
-                       e.eaten = entcs.eaten;
+                       e.predator = entcs.predator;
                }
                else
                {
                        e.healthvalue = 2342;
                        e.armorvalue = 0;
-                       e.sameteam = 0;
-                       e.eaten = 0;
+                       e.predator = 0;
                }
 
                e.origin = getplayerorigin(i);