+#include "shownames.qh"
+#include "_.qh"
+
+#include "hud.qh"
+
+#include "../common/constants.qh"
+#include "../common/mapinfo.qh"
+#include "../common/teams.qh"
+#include "../common/util.qh"
+
+#include "../csqcmodellib/cl_model.qh"
+
// self.isactive = player is in range and coordinates/status (health and armor) are up to date
// self.origin = player origin TODO: should maybe move this so it's the origin of the shownames tag already in SSQC for culling?
// self.healthvalue
if(!autocvar_hud_shownames)
return;
-#ifdef COMPAT_XON050_ENGINE
- if((ent.sv_entnum == player_localentnum) || (ent.sv_entnum == spectatee_status)) // ent is me or person i'm spectating
-#else
if(ent.sv_entnum == player_localentnum) // ent is me or person i'm spectating
-#endif
if(!(autocvar_hud_shownames_self && autocvar_chase_active))
return;
}
// handle tag fading
- float overlap = FALSE, onscreen, crosshairdistance;
+ float overlap = false, onscreen, crosshairdistance;
vector o, eo;
o = project_3d_to_2d(ent.origin);
if(e == ent)
continue;
eo = project_3d_to_2d(e.origin);
- if (!(eo_z < 0 || eo_x < 0 || eo_y < 0 || eo_x > vid_conwidth || eo_y > vid_conheight))
+ if (!(eo.z < 0 || eo.x < 0 || eo.y < 0 || eo.x > vid_conwidth || eo.y > vid_conheight))
{
- eo_z = 0;
- if(vlen((eX * o_x + eY * o_y) - eo) < autocvar_hud_shownames_antioverlap_distance && vlen(ent.origin - view_origin) > vlen(e.origin - view_origin))
+ eo.z = 0;
+ if(vlen((eX * o.x + eY * o.y) - eo) < autocvar_hud_shownames_antioverlap_distance && vlen(ent.origin - view_origin) > vlen(e.origin - view_origin))
{
- overlap = TRUE;
+ overlap = true;
break;
}
}
}
}
- onscreen = (o_z >= 0 && o_x >= 0 && o_y >= 0 && o_x <= vid_conwidth && o_y <= vid_conheight);
- crosshairdistance = sqrt( pow(o_x - vid_conwidth/2, 2) + pow(o_y - vid_conheight/2, 2) );
+ onscreen = (o.z >= 0 && o.x >= 0 && o.y >= 0 && o.x <= vid_conwidth && o.y <= vid_conheight);
+ crosshairdistance = sqrt( pow(o.x - vid_conwidth/2, 2) + pow(o.y - vid_conheight/2, 2) );
if(autocvar_hud_shownames_crosshairdistance)
{
if(autocvar_hud_shownames_crosshairdistance > crosshairdistance)
ent.pointtime = time;
- if (!(ent.pointtime + autocvar_hud_shownames_crosshairdistance_time > time))
- overlap = TRUE;
+ if (ent.pointtime + autocvar_hud_shownames_crosshairdistance_time <= time)
+ overlap = true;
else
- overlap = (autocvar_hud_shownames_crosshairdistance_antioverlap ? overlap : FALSE); // override what antioverlap says unless allowed by cvar.
+ overlap = (autocvar_hud_shownames_crosshairdistance_antioverlap ? overlap : false); // override what antioverlap says unless allowed by cvar.
}
if(!ent.fadedelay)
resize = 0.5 + 0.5 * ((autocvar_hud_shownames_maxdistance - autocvar_hud_shownames_mindistance) - max(0, dist - autocvar_hud_shownames_mindistance)) / (autocvar_hud_shownames_maxdistance - autocvar_hud_shownames_mindistance);
// draw the sprite image
- if(o_z >= 0)
+ if(o.z >= 0)
{
- o_z = 0;
+ o.z = 0;
vector myPos, mySize;
mySize = (eX * autocvar_hud_shownames_aspect + eY) * autocvar_hud_shownames_fontsize;
- myPos = o - '0.5 0 0' * mySize_x - '0 1 0' * mySize_y;
+ myPos = o - '0.5 0 0' * mySize.x - '0 1 0' * mySize.y;
// size scaling
- mySize_x *= resize;
- mySize_y *= resize;
+ mySize.x *= resize;
+ mySize.y *= resize;
- myPos_x += 0.5 * (mySize_x / resize - mySize_x);
- myPos_y += (mySize_y / resize - mySize_y);
+ myPos.x += 0.5 * (mySize.x / resize - mySize.x);
+ myPos.y += (mySize.y / resize - mySize.y);
vector namepos; // this is where the origin of the string
float namewidth;
namepos = myPos;
- namewidth = mySize_x;
+ namewidth = mySize.x;
if(autocvar_hud_shownames_status && teamplay)
{
{
if(ent.healthvalue > 0)
{
- HUD_Panel_DrawProgressBar(namepos + '0 1 0' * autocvar_hud_shownames_fontsize * resize, eX * 0.5 * mySize_x + eY * resize * autocvar_hud_shownames_statusbar_height, "nametag_statusbar", ent.healthvalue/autocvar_hud_panel_healtharmor_maxhealth, 0, 1, '1 0 0', a, DRAWFLAG_NORMAL);
+ HUD_Panel_DrawProgressBar(namepos + '0 1 0' * autocvar_hud_shownames_fontsize * resize, eX * 0.5 * mySize.x + eY * resize * autocvar_hud_shownames_statusbar_height, "nametag_statusbar", ent.healthvalue/autocvar_hud_panel_healtharmor_maxhealth, 0, 1, '1 0 0', a, DRAWFLAG_NORMAL);
if(ent.armorvalue > 0)
- HUD_Panel_DrawProgressBar(namepos + '0 1 0' * autocvar_hud_shownames_fontsize * resize + eX * 0.5 * mySize_x, eX * 0.5 * mySize_x + eY * resize * autocvar_hud_shownames_statusbar_height, "nametag_statusbar", ent.armorvalue/autocvar_hud_panel_healtharmor_maxarmor, 0, 0, '0 1 0', a, DRAWFLAG_NORMAL);
+ HUD_Panel_DrawProgressBar(namepos + '0 1 0' * autocvar_hud_shownames_fontsize * resize + eX * 0.5 * mySize.x, eX * 0.5 * mySize.x + eY * resize * autocvar_hud_shownames_statusbar_height, "nametag_statusbar", ent.armorvalue/autocvar_hud_panel_healtharmor_maxarmor, 0, 0, '0 1 0', a, DRAWFLAG_NORMAL);
}
}
}
s = textShortenToWidth(s, namewidth, '1 1 0' * autocvar_hud_shownames_fontsize, stringwidth_colors);
float width;
- width = stringwidth(s, TRUE, '1 1 0' * autocvar_hud_shownames_fontsize);
+ width = stringwidth(s, true, '1 1 0' * autocvar_hud_shownames_fontsize);
if (width != namewidth)
- namepos_x += (namewidth - width) / 2;
+ namepos.x += (namewidth - width) / 2;
drawcolorcodedstring(namepos, s, '1 1 0' * autocvar_hud_shownames_fontsize, a, DRAWFLAG_NORMAL);
drawfontscale = '1 1 0';
}
entity shownames_ent[255];
void Draw_ShowNames_All()
{
- float i;
+ int i;
for(i = 0; i < maxclients; ++i)
{
float t;