From: Rudolf Polzer Date: Tue, 21 Jun 2011 18:52:42 +0000 (+0200) Subject: workaround for when a sprite is already attached: append a "needing help!" text X-Git-Tag: xonotic-v0.5.0~199^2~5 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=695f1b7bc0b0acc3caa6aa15357538283ea099a8;p=xonotic%2Fxonotic-data.pk3dir.git workaround for when a sprite is already attached: append a "needing help!" text --- diff --git a/qcsrc/client/waypointsprites.qc b/qcsrc/client/waypointsprites.qc index 3b5deca87..327ad0442 100644 --- a/qcsrc/client/waypointsprites.qc +++ b/qcsrc/client/waypointsprites.qc @@ -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(); diff --git a/qcsrc/server/cl_impulse.qc b/qcsrc/server/cl_impulse.qc index c4b737021..6374bd2c0 100644 --- a/qcsrc/server/cl_impulse.qc +++ b/qcsrc/server/cl_impulse.qc @@ -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; diff --git a/qcsrc/server/waypointsprites.qc b/qcsrc/server/waypointsprites.qc index 8308a220c..836a85357 100644 --- a/qcsrc/server/waypointsprites.qc +++ b/qcsrc/server/waypointsprites.qc @@ -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;