X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=data%2Fqcsrc%2Fclient%2Fshownames.qc;h=32bd0f49e924b9a4d8e472df62f06440c340dbbb;hb=2172c9941a15b3f6c1acc6ecc32ffe615c8aa275;hp=7dac25a5254eca2a6fbc741d023fe17b7a724c39;hpb=748ddc43b328660e11fb54634f3d4141074e6c1b;p=voretournament%2Fvoretournament.git diff --git a/data/qcsrc/client/shownames.qc b/data/qcsrc/client/shownames.qc index 7dac25a5..32bd0f49 100644 --- a/data/qcsrc/client/shownames.qc +++ b/data/qcsrc/client/shownames.qc @@ -3,41 +3,35 @@ // 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) { if(!cvar("hud_shownames")) return; - + if(spectatee_status < 0 && !cvar("hud_shownames_observers")) + return; if(ent.sv_entnum == player_localentnum && !cvar("chase_active")) return; - - if(ent.predator) // don't show names for prey + if(getstati(STAT_VORE_EATEN) && cvar("cl_vore_stomachmodel") >= 1 && !cvar("chase_active")) + return; + if(ent.eaten) return; - if(ent.sameteam || (!ent.sameteam && cvar("hud_shownames_enemies"))) + float sameteam; + if(teamplay && spectatee_status >= 0) + if((GetPlayerColor(player_localentnum - 1) == GetPlayerColor(ent.sv_entnum - 1)) || (GetPlayerColor(spectatee_status - 1) == GetPlayerColor(ent.sv_entnum - 1))) + sameteam = TRUE; + + if(sameteam || (!sameteam && cvar("hud_shownames") > 1)) { ent.origin_z += cvar("hud_shownames_offset"); // 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(g_healthsize_center >= 0) + ent.origin_z -= (g_healthsize_center - bound(g_healthsize_min, ent.healthvalue, g_healthsize_max)) * cvar("hud_shownames_offset_healthsize"); - if(!ent.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 - { - traceline(view_origin, view_origin + view_forward * MAX_SHOT_DISTANCE, MOVETYPE_FLY, world); - print("trace_endpos: ", vtos(trace_endpos), " view_origin: ", vtos(view_origin), "\n"); - if(trace_ent != ent) - return; - }*/ - - traceline(ent.origin, view_origin, 1, ent); - } + traceline(ent.origin, view_origin, TRUE, ent); vector o, eo; o = project_3d_to_2d(ent.origin); @@ -64,7 +58,7 @@ void Draw_ShowNames(entity ent) } } - if(!ent.sameteam && trace_endpos != view_origin) // out of view, fade out + if(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); @@ -127,13 +121,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; @@ -174,15 +171,13 @@ void Draw_ShowNames_All() { e.healthvalue = entcs.healthvalue; e.armorvalue = entcs.armorvalue; - e.sameteam = 1; /* (teamplay && (t == myteam)); */ - e.predator = entcs.predator; + e.eaten = entcs.eaten; } else { e.healthvalue = 2342; e.armorvalue = 0; - e.sameteam = 0; - e.predator = 0; + e.eaten = 0; } e.origin = getplayerorigin(i);