]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
workaround for when a sprite is already attached: append a "needing help!" text
authorRudolf Polzer <divverent@xonotic.org>
Tue, 21 Jun 2011 18:52:42 +0000 (20:52 +0200)
committerRudolf Polzer <divverent@xonotic.org>
Tue, 21 Jun 2011 18:52:42 +0000 (20:52 +0200)
qcsrc/client/waypointsprites.qc
qcsrc/server/cl_impulse.qc
qcsrc/server/waypointsprites.qc

index 3b5deca87134d8a4438e54a33fd76938a0bd0d05..327ad0442d46688694013f1dacc0746141341d78 100644 (file)
@@ -18,6 +18,7 @@ float waypointsprite_distancefadescale;
 float waypointsprite_distancefadedistance;
 float waypointsprite_alpha;
 
+.float helpme;
 .float rule;
 .string netname; // primary picture
 .string netname2; // secondary picture
@@ -40,6 +41,7 @@ float SPRITE_HEALTHBAR_BORDER = 2;
 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)
 {
@@ -433,7 +435,9 @@ void Draw_WaypointSprite()
                print(sprintf("WARNING: sprite of name %s has no color, using pink so you notice it\n", spriteimage)); 
        }
 
-       if(time - floor(time) > 0.5)
+       if(self.helpme && time < self.helpme)
+               a *= SPRITE_HELPME_BLINK;
+       else if(time - floor(time) > 0.5)
                a *= spritelookupblinkvalue(spriteimage);
 
        if(a > 1)
@@ -549,6 +553,8 @@ void Draw_WaypointSprite()
        
        string txt;
        txt = spritelookuptext(spriteimage);
+       if(self.helpme && time < self.helpme)
+               txt = sprintf(_("%s needing help!"), txt);
        if(autocvar_g_waypointsprite_uppercase)
                txt = strtoupper(txt);
 
@@ -691,6 +697,9 @@ void Ent_WaypointSprite()
                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();
index c4b7370216d5eb2995210782155036439797a268..6374bd2c016501737f00c805adf352c110aeb9f2 100644 (file)
@@ -163,7 +163,7 @@ void ImpulseCommands (void)
                                        if(!wp)
                                                wp = self.waypointsprite_attachedforcarrier; // flag sprite?
                                        if(wp)
-                                               WaypointSprite_Ping(wp);
+                                               WaypointSprite_HelpMePing(wp);
                                        sprint(self, "HELP ME attached\n");
                                }
                                break;
index 8308a220c97db95baebcb8083cc289c6e9ca86ff..836a853570bef941b74612a13d03d84e2d774cfc 100644 (file)
@@ -82,6 +82,7 @@ void WaypointSprite_UpdateTeamRadar(entity e, float icon, vector col)
 }
 
 .float waypointsprite_pingtime;
+.float waypointsprite_helpmetime;
 void WaypointSprite_Ping(entity e)
 {
        // anti spam
@@ -93,6 +94,15 @@ void WaypointSprite_Ping(entity e)
        e.SendFlags |= 32;
 }
 
+float waypointsprite_limitedrange, waypointsprite_deployed_lifetime, waypointsprite_deadlifetime;
+
+void WaypointSprite_HelpMePing(entity e)
+{
+       WaypointSprite_Ping(e);
+       e.waypointsprite_helpmetime = time + waypointsprite_deployed_lifetime;
+       e.SendFlags |= 32;
+}
+
 void WaypointSprite_FadeOutIn(entity e, float t)
 {
        if(!e.fade_time)
@@ -115,7 +125,6 @@ void WaypointSprite_FadeOutIn(entity e, float t)
        e.SendFlags |= 16;
 }
 
-float waypointsprite_limitedrange, waypointsprite_deployed_lifetime, waypointsprite_deadlifetime;
 void WaypointSprite_Init()
 {
        waypointsprite_limitedrange = autocvar_g_waypointsprite_limitedrange;
@@ -280,6 +289,13 @@ float WaypointSprite_SendEntity(entity to, float sendflags)
                WriteByte(MSG_ENTITY, self.colormod_x * 255.0);
                WriteByte(MSG_ENTITY, self.colormod_y * 255.0);
                WriteByte(MSG_ENTITY, self.colormod_z * 255.0);
+
+               dt = (self.waypointsprite_helpmetime - time) / 0.1;
+               if(dt < 0)
+                       dt = 0;
+               if(dt > 255)
+                       dt = 255;
+               WriteByte(MSG_ENTITY, dt);
        }
 
        return TRUE;