X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fvehicles%2Fcl_vehicles.qc;h=b2f87821eea414ca4b6eb764663571d4d1826c4c;hp=cc4fa0f122b9652f90a038e30fb3796ab7e16702;hb=d865de7a9a17c5a1d9286aec40f68c3530697660;hpb=bda4e58210275f23266f9a1231de949b6bc64893 diff --git a/qcsrc/common/vehicles/cl_vehicles.qc b/qcsrc/common/vehicles/cl_vehicles.qc index cc4fa0f12..b2f87821e 100644 --- a/qcsrc/common/vehicles/cl_vehicles.qc +++ b/qcsrc/common/vehicles/cl_vehicles.qc @@ -1,3 +1,4 @@ +#include "cl_vehicles.qh" const string vCROSS_BURST = "gfx/vehicles/crosshair_burst.tga"; const string vCROSS_DROP = "gfx/vehicles/crosshair_drop.tga"; const string vCROSS_GUIDE = "gfx/vehicles/crosshair_guide.tga"; @@ -18,12 +19,13 @@ entity AuxiliaryXhair[MAX_AXH]; float alarm1time; float alarm2time; -void vehicle_alarm(entity e, int ch, string s0und) +void vehicle_alarm(entity e, int ch, Sound s0und) { + TC(Sound, s0und); if(!autocvar_cl_vehicles_alarm) return; - _sound(e, ch, s0und, VOL_BASEVOICE, ATTEN_NONE); + sound(e, ch, s0und, VOL_BASEVOICE, ATTEN_NONE); } void AuxiliaryXhair_Draw2D(entity this) @@ -31,28 +33,31 @@ void AuxiliaryXhair_Draw2D(entity this) if (scoreboard_active) return; - vector size = draw_getimagesize(self.axh_image) * autocvar_cl_vehicles_crosshair_size; - vector pos = project_3d_to_2d(self.move_origin) - 0.5 * size; + vector pos = project_3d_to_2d(this.origin); if (!(pos.z < 0 || pos.x < 0 || pos.y < 0 || pos.x > vid_conwidth || pos.y > vid_conheight)) { + vector size = draw_getimagesize(this.axh_image) * autocvar_cl_vehicles_crosshair_size; + pos.x -= 0.5 * size.x; + pos.y -= 0.5 * size.y; pos.z = 0; - size.z = 0; - drawpic(pos, self.axh_image, size, self.colormod, autocvar_crosshair_alpha * self.alpha, self.axh_drawflag); + drawpic(pos, this.axh_image, size, this.colormod, autocvar_crosshair_alpha * this.alpha, this.axh_drawflag); } - if(time - self.cnt > self.axh_fadetime) - self.draw2d = func_null; + if(time - this.cnt > this.axh_fadetime) + this.draw2d = func_null; } NET_HANDLE(ENT_CLIENT_AUXILIARYXHAIR, bool isnew) { + int sf = ReadByte(); + int axh_id = bound(0, ReadByte(), MAX_AXH); - entity axh = AuxiliaryXhair[axh_id]; + entity axh = AuxiliaryXhair[axh_id]; - if(axh == world || wasfreed(axh)) // MADNESS? THIS IS QQQQCCCCCCCCC (wasfreed, why do you exsist?) + if(axh == NULL || wasfreed(axh)) { - axh = spawn(); + axh = new(auxiliary_crosshair); axh.draw2d = func_null; axh.drawmask = MASK_NORMAL; axh.axh_drawflag = DRAWFLAG_ADDITIVE; @@ -60,14 +65,23 @@ NET_HANDLE(ENT_CLIENT_AUXILIARYXHAIR, bool isnew) axh.axh_image = vCROSS_HINT; axh.alpha = 1; AuxiliaryXhair[axh_id] = axh; + IL_PUSH(g_drawables_2d, axh); + } + + if(sf & 2) + { + axh.origin_x = ReadCoord(); + axh.origin_y = ReadCoord(); + axh.origin_z = ReadCoord(); + } + + if(sf & 4) + { + axh.colormod_x = ReadByte() / 255; + axh.colormod_y = ReadByte() / 255; + axh.colormod_z = ReadByte() / 255; } - axh.move_origin_x = ReadCoord(); - axh.move_origin_y = ReadCoord(); - axh.move_origin_z = ReadCoord(); - axh.colormod_x = ReadByte() / 255; - axh.colormod_y = ReadByte() / 255; - axh.colormod_z = ReadByte() / 255; axh.cnt = time; axh.draw2d = AuxiliaryXhair_Draw2D; return true; @@ -79,10 +93,22 @@ NET_HANDLE(TE_CSQC_VEHICLESETUP, bool isnew) return = true; // hud_id == 0 means we exited a vehicle, so stop alarm sound/s - if(hud_id == 0) + // note: HUD_NORMAL is set to 0 currently too, but we'll check both just in case + if(hud_id == 0 || hud_id == HUD_NORMAL) { - sound(self, CH_TRIGGER_SINGLE, SND_Null, VOL_BASEVOICE, ATTEN_NONE); - sound(self, CH_PAIN_SINGLE, SND_Null, VOL_BASEVOICE, ATTEN_NONE); + sound(this, CH_TRIGGER_SINGLE, SND_Null, VOL_BASEVOICE, ATTEN_NONE); + sound(this, CH_PAIN_SINGLE, SND_Null, VOL_BASEVOICE, ATTEN_NONE); + + for(int i = 0; i < MAX_AXH; ++i) + { + entity axh = AuxiliaryXhair[i]; + + if(axh != NULL && !wasfreed(axh)) + { + AuxiliaryXhair[i] = NULL; + delete(axh); + } + } return; } @@ -91,8 +117,8 @@ NET_HANDLE(TE_CSQC_VEHICLESETUP, bool isnew) { entity axh = AuxiliaryXhair[i]; - if(axh != world && !wasfreed(axh)) // MADNESS? THIS IS QQQQCCCCCCCCC (wasfreed, why do you exsist?) - remove(axh); + if(axh != NULL && !wasfreed(axh)) // MADNESS? THIS IS QQQQCCCCCCCCC (wasfreed, why do you exsist?) + delete(axh); axh = spawn(); axh.draw2d = func_null; @@ -102,6 +128,7 @@ NET_HANDLE(TE_CSQC_VEHICLESETUP, bool isnew) axh.axh_image = vCROSS_HINT; axh.alpha = 1; AuxiliaryXhair[i] = axh; + IL_PUSH(g_drawables_2d, axh); } if(hud_id == HUD_BUMBLEBEE_GUN) @@ -109,8 +136,8 @@ NET_HANDLE(TE_CSQC_VEHICLESETUP, bool isnew) AuxiliaryXhair[0].axh_image = vCROSS_BURST; // Plasma cannons AuxiliaryXhair[1].axh_image = vCROSS_BURST; // Raygun } else { - Vehicle info = get_vehicleinfo(hud_id); - info.vr_setup(info); + Vehicle info = Vehicles_from(hud_id); + info.vr_setup(info, NULL); } } @@ -123,7 +150,6 @@ void Vehicles_drawHUD( string iconAmmo2, vector colorAmmo2) { - SELFPARAM(); // Initialize vector tmpSize = '0 0 0'; vector tmpPos = '0 0 0'; @@ -163,7 +189,7 @@ void Vehicles_drawHUD( tmpPos.x = vehicleHud_Pos.x + vehicleHud_Size.x * (96/256) - tmpSize.x; tmpPos.y = vehicleHud_Pos.y; tmpSize = '1 1 1' * hud_fontsize; - drawstring(tmpPos, sprintf(_("Press %s"), getcommandkey("dropweapon", "dropweapon")), tmpSize, '1 0 0' + '0 1 1' * tmpblinkValue, hudAlpha, DRAWFLAG_NORMAL); + drawstring(tmpPos, sprintf(_("Press %s"), getcommandkey(_("drop weapon"), "dropweapon")), tmpSize, '1 0 0' + '0 1 1' * tmpblinkValue, hudAlpha, DRAWFLAG_NORMAL); } // Model @@ -231,7 +257,7 @@ void Vehicles_drawHUD( if(alarm1time < time) { alarm1time = time + 2; - vehicle_alarm(self, CH_PAIN_SINGLE, SND(VEH_ALARM)); + vehicle_alarm(NULL, CH_PAIN_SINGLE, SND_VEH_ALARM); } drawpic_skin(tmpPos, "vehicle_icon_health", tmpSize, '1 1 1', hudAlpha * blinkValue, DRAWFLAG_NORMAL); } @@ -239,7 +265,7 @@ void Vehicles_drawHUD( { if(alarm1time) { - vehicle_alarm(self, CH_PAIN_SINGLE, SND(Null)); + vehicle_alarm(NULL, CH_PAIN_SINGLE, SND_Null); alarm1time = 0; } drawpic_skin(tmpPos, "vehicle_icon_health", tmpSize, '1 1 1', hudAlpha, DRAWFLAG_NORMAL); @@ -253,7 +279,7 @@ void Vehicles_drawHUD( if(alarm2time < time) { alarm2time = time + 1; - vehicle_alarm(self, CH_TRIGGER_SINGLE, SND(VEH_ALARM_SHIELD)); + vehicle_alarm(NULL, CH_TRIGGER_SINGLE, SND_VEH_ALARM_SHIELD); } drawpic_skin(tmpPos, "vehicle_icon_shield", tmpSize, '1 1 1', hudAlpha * blinkValue, DRAWFLAG_NORMAL); } @@ -261,7 +287,7 @@ void Vehicles_drawHUD( { if(alarm2time) { - vehicle_alarm(self, CH_TRIGGER_SINGLE, SND(Null)); + vehicle_alarm(NULL, CH_TRIGGER_SINGLE, SND_Null); alarm2time = 0; } drawpic_skin(tmpPos, "vehicle_icon_shield", tmpSize, '1 1 1', hudAlpha, DRAWFLAG_NORMAL); @@ -293,7 +319,6 @@ void Vehicles_drawHUD( void Vehicles_drawCrosshair(string crosshair) { - SELFPARAM(); vector tmpSize = '0 0 0'; vector tmpPos = '0 0 0'; @@ -304,6 +329,10 @@ void Vehicles_drawCrosshair(string crosshair) tmpPos.x = (vid_conwidth - tmpSize.x) / 2; tmpPos.y = (vid_conheight - tmpSize.y) / 2; - drawpic(tmpPos, crosshair, tmpSize, '1 1 1', autocvar_crosshair_alpha, DRAWFLAG_NORMAL); + vector wcross_color = '1 1 1'; + if(autocvar_cl_vehicles_crosshair_colorize) + wcross_color = crosshair_getcolor(NULL, STAT(VEHICLESTAT_HEALTH)); + + drawpic(tmpPos, crosshair, tmpSize, wcross_color, autocvar_crosshair_alpha, DRAWFLAG_NORMAL); } }