float waypointsprite_distancefadedistance;
float waypointsprite_alpha;
+.float helpme;
.float rule;
.string netname; // primary picture
.string netname2; // secondary picture
float SPRITE_HEALTHBAR_BORDERALPHA = 1;
float SPRITE_HEALTHBAR_HEALTHALPHA = 0.5;
float SPRITE_ARROW_SCALE = 1.0;
+float SPRITE_HELPME_BLINK = 2;
void drawrotpic(vector org, float rot, string pic, vector sz, vector hotspot, vector rgb, float a, float f)
{
// returns location of sprite text
vector drawspritearrow(vector o, float ang, vector rgb, float a, float t)
{
+ float SQRT2 = 1.414;
+ float BORDER; BORDER = 1.5 * t;
+ float TSIZE; TSIZE = 8 * t;
+ float RLENGTH; RLENGTH = 8 * t;
+ float RWIDTH; RWIDTH = 4 * t;
+ float MLENGTH; MLENGTH = 4 * t;
+
R_BeginPolygon("", DRAWFLAG_NORMAL);
- R_PolygonVertex(o + rotate('-11.5 9.5 0'*t, ang), '0 0 0', '0 0 0', a);
- R_PolygonVertex(o + rotate('11.5 9.5 0'*t, ang), '0 0 0', '0 0 0', a);
- R_PolygonVertex(o + rotate('0 -2 0'*t, ang), '0 0 0', '0 0 0', a);
+ R_PolygonVertex(o + rotate(eX * -(TSIZE + BORDER * (1 + SQRT2)) + eY * (TSIZE + BORDER), ang), '0 0 0', '0 0 0', a);
+ R_PolygonVertex(o + rotate(eX * (TSIZE + BORDER * (1 + SQRT2)) + eY * (TSIZE + BORDER), ang), '0 0 0', '0 0 0', a);
+ R_PolygonVertex(o + rotate(eY * -( BORDER * SQRT2), ang), '0 0 0', '0 0 0', a);
R_EndPolygon();
R_BeginPolygon("", DRAWFLAG_NORMAL);
- R_PolygonVertex(o + rotate('-5.5 9.5 0'*t, ang), '0 0 0', '0 0 0', a);
- R_PolygonVertex(o + rotate('-5.5 17.5 0'*t, ang), '0 0 0', '0 0 0', a);
- R_PolygonVertex(o + rotate('5.5 17.5 0'*t, ang), '0 0 0', '0 0 0', a);
- R_PolygonVertex(o + rotate('5.5 9.5 0'*t, ang), '0 0 0', '0 0 0', a);
+ R_PolygonVertex(o + rotate(eX * -(RWIDTH + BORDER) + eY * (TSIZE + BORDER), ang), '0 0 0', '0 0 0', a);
+ R_PolygonVertex(o + rotate(eX * -(RWIDTH + BORDER) + eY * (TSIZE + RLENGTH + BORDER), ang), '0 0 0', '0 0 0', a);
+ R_PolygonVertex(o + rotate(eX * (RWIDTH + BORDER) + eY * (TSIZE + RLENGTH + BORDER), ang), '0 0 0', '0 0 0', a);
+ R_PolygonVertex(o + rotate(eX * (RWIDTH + BORDER) + eY * (TSIZE + BORDER), ang), '0 0 0', '0 0 0', a);
R_EndPolygon();
- R_BeginPolygon("", DRAWFLAG_NORMAL);
- R_PolygonVertex(o + rotate('-8 8 0'*t, ang), '0 0 0', rgb, a);
- R_PolygonVertex(o + rotate('8 8 0'*t, ang), '0 0 0', rgb, a);
- R_PolygonVertex(o + rotate('0 0 0'*t, ang), '0 0 0', rgb, a);
+ R_BeginPolygon("", DRAWFLAG_ADDITIVE);
+ R_PolygonVertex(o + rotate(eX * -TSIZE + eY * TSIZE, ang), '0 0 0', rgb, a);
+ R_PolygonVertex(o + rotate(eX * TSIZE + eY * TSIZE, ang), '0 0 0', rgb, a);
+ R_PolygonVertex(o + rotate('0 0 0', ang), '0 0 0', rgb, a);
R_EndPolygon();
- R_BeginPolygon("", DRAWFLAG_NORMAL);
- R_PolygonVertex(o + rotate('-4 8 0'*t, ang), '0 0 0', rgb, a);
- R_PolygonVertex(o + rotate('-4 16 0'*t, ang), '0 0 0', rgb, a);
- R_PolygonVertex(o + rotate('4 16 0'*t, ang), '0 0 0', rgb, a);
- R_PolygonVertex(o + rotate('4 8 0'*t, ang), '0 0 0', rgb, a);
+ R_BeginPolygon("", DRAWFLAG_ADDITIVE);
+ R_PolygonVertex(o + rotate(eX * -RWIDTH + eY * TSIZE, ang), '0 0 0', rgb, a);
+ R_PolygonVertex(o + rotate(eX * -RWIDTH + eY * (TSIZE + RLENGTH), ang), '0 0 0', rgb, a);
+ R_PolygonVertex(o + rotate(eX * RWIDTH + eY * (TSIZE + RLENGTH), ang), '0 0 0', rgb, a);
+ R_PolygonVertex(o + rotate(eX * RWIDTH + eY * TSIZE, ang), '0 0 0', rgb, a);
R_EndPolygon();
return
- o + rotate('0 20 0'*t, ang);
+ o + rotate(eY * (TSIZE + RLENGTH + MLENGTH), ang);
}
// returns location of sprite healthbar
case "item-shueld": return 2;
case "item-fuelregen": return 2;
case "item-jetpack": return 2;
+ case "tagged-target": return 2;
default: return 1;
}
}
+vector spritelookupcolor(string s, vector def)
+{
+ switch(s)
+ {
+ case "keycarrier-friend": return '0 1 0';
+ default: return def;
+ }
+}
string spritelookuptext(string s)
{
switch(s)
case "item-jetpack": return _("Jet Pack");
case "freezetag_frozen": return _("Frozen!");
case "tagged-target": return _("Tagged");
+ case "vehicle": return _("Vehicle");
default: return s;
}
}
vector rgb;
rgb = self.teamradar_color;
+ rgb = spritelookupcolor(spriteimage, rgb);
+ if(rgb == '0 0 0')
+ {
+ self.teamradar_color = '1 0 1';
+ print(sprintf("WARNING: sprite of name %s has no color, using pink so you notice it\n", spriteimage));
+ }
if(time - floor(time) > 0.5)
- a *= spritelookupblinkvalue(spriteimage);
+ {
+ if(self.helpme && time < self.helpme)
+ a *= SPRITE_HELPME_BLINK;
+ else
+ a *= spritelookupblinkvalue(spriteimage);
+ }
if(a > 1)
{
}
else
{
+#if 1
ang = M_PI;
+#else
+ vector d;
+ d = o - '0.5 0 0' * vid_conwidth - '0 0.5 0' * vid_conheight;
+ ang = atan2(-d_x, -d_y);
+#endif
}
o_z = 0;
string txt;
txt = spritelookuptext(spriteimage);
- txt = strtoupper(txt);
+ if(self.helpme && time < self.helpme)
+ txt = sprintf(_("%s needing help!"), txt);
+ if(autocvar_g_waypointsprite_uppercase)
+ txt = strtoupper(txt);
if(self.health >= 0)
{
self.teamradar_color_x = ReadByte() / 255.0;
self.teamradar_color_y = ReadByte() / 255.0;
self.teamradar_color_z = ReadByte() / 255.0;
+ self.helpme = ReadByte() * 0.1;
+ if(self.helpme > 0)
+ self.helpme += servertime;
}
InterpolateOrigin_Note();