]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Make showname tags fade out when a player is dead (according to csqcplayers)
authorSamual <samual@xonotic.org>
Tue, 10 Jan 2012 17:47:24 +0000 (12:47 -0500)
committerSamual <samual@xonotic.org>
Tue, 10 Jan 2012 17:47:24 +0000 (12:47 -0500)
qcsrc/client/Defs.qc
qcsrc/client/csqcmodel_hooks.qc
qcsrc/client/miscfunctions.qc
qcsrc/client/shownames.qc
qcsrc/client/shownames.qh

index 5282910a2ad6288f756e48f599f539bc9e153ac8..e4519b2b3d93fef8061208aaf78ec95c1d2b1773 100644 (file)
@@ -271,3 +271,5 @@ float nex_charge_movingavg;
 float serverflags;
 
 float uid2name_dialog;
+
+.float csqcmodel_isdead; // used by shownames and miscfunctions (float getplayerisdead(float) {}) to know when a player is dead
\ No newline at end of file
index 7204981bd4f3ee8d83806688af7c04fe97b3c74c..60a56ad5a4839fdfa994bb4d40d760e5b1c0625a 100644 (file)
@@ -207,8 +207,6 @@ void CSQCPlayer_ForceModel_Apply(float islocalplayer)
 .float csqcmodel_saveframe4;
 .float csqcmodel_framecount;
 
-.float csqcmodel_isdead; // for utility code
-
 #define IS_DEAD_FRAME(f) ((f) == 0 || (f) == 1)
 void CSQCPlayer_FallbackFrame_PreUpdate(void)
 {
index 2bc20e9510f17f1c4513521e9cd9a217dca9933d..93a47f50e5f5d94cf5fb0298bf16ea0003399824 100644 (file)
@@ -591,3 +591,14 @@ vector getplayerorigin(float pl)
 
        return GETPLAYERORIGIN_ERROR;
 }
+
+float getplayerisdead(float pl)
+{
+       entity e;
+       
+       e = CSQCModel_server2csqc(pl + 1);
+       if(e)
+               return e.csqcmodel_isdead;
+       
+       return FALSE;
+}
\ No newline at end of file
index d5e24888d34a79e03d2de8db4a8c19ca22c8219f..c2bff62c89172c3a0a203a801694182235b1da0a 100644 (file)
@@ -5,7 +5,8 @@
 // self.sameteam = player is on same team as local client
 // self.fadedelay = time to wait before name tag starts fading in for enemies
 // self.pointtime = last time you pointed at this player
-//
+// self.csqcmodel_isdead = value of csqcmodel_isdead to know when the player is dead or not
+
 const float SHOWNAMES_FADESPEED = 4;
 const float SHOWNAMES_FADEDELAY = 0.4;
 void Draw_ShowNames(entity ent)
@@ -90,7 +91,7 @@ void Draw_ShowNames(entity ent)
                        ent.alpha = max(0, ent.alpha - SHOWNAMES_FADESPEED * frametime); 
                        ent.fadedelay = 0; // reset fade in delay, enemy has left the view
                }
-               else if(ent.healthvalue < 1) // dead player, fade out slowly
+               else if(ent.csqcmodel_isdead) // dead player, fade out slowly
                        ent.alpha = max(0, ent.alpha - SHOWNAMES_FADESPEED * 0.25 * frametime); 
                else if(overlap) // tag overlap detected, fade out
                        ent.alpha = max(0, ent.alpha - SHOWNAMES_FADESPEED * frametime); 
@@ -217,6 +218,8 @@ void Draw_ShowNames_All()
                e.origin = getplayerorigin(i);
                if(e.origin == GETPLAYERORIGIN_ERROR)
                        continue;
+                       
+               e.csqcmodel_isdead = getplayerisdead(i);
 
                Draw_ShowNames(e);
        }
index adbfa57120376e5091f3c957d05557b9873de870..6e3f899ddc31cb0754465bacec20e7fac61c0eda 100644 (file)
@@ -2,4 +2,4 @@
 .float armorvalue;
 .float sameteam;
 .float fadedelay;
-.float pointtime;
+.float pointtime;
\ No newline at end of file