X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fvehicles%2Fcl_vehicles.qc;h=971a5ebad6911bc28abd53b1f26958c614b0f4d1;hb=0514f7948727cfa572b33bd29d1bdf2c13cd866d;hp=e2187290d97910574b1b51a2537e2eefd42538ac;hpb=834fed09016056ff2cd32d1980f0719d09c403a2;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/vehicles/cl_vehicles.qc b/qcsrc/common/vehicles/cl_vehicles.qc index e2187290d..971a5ebad 100644 --- a/qcsrc/common/vehicles/cl_vehicles.qc +++ b/qcsrc/common/vehicles/cl_vehicles.qc @@ -1,3 +1,5 @@ +#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"; @@ -20,7 +22,7 @@ float alarm2time; void vehicle_alarm(entity e, int ch, Sound s0und) { - TC(Sound, s0und); + TC(Sound, s0und); if(!autocvar_cl_vehicles_alarm) return; @@ -32,13 +34,14 @@ void AuxiliaryXhair_Draw2D(entity this) if (scoreboard_active) return; - vector size = draw_getimagesize(this.axh_image) * autocvar_cl_vehicles_crosshair_size; - vector pos = project_3d_to_2d(this.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, this.axh_image, size, this.colormod, autocvar_crosshair_alpha * this.alpha, this.axh_drawflag); } @@ -48,12 +51,14 @@ void AuxiliaryXhair_Draw2D(entity this) 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; @@ -61,14 +66,21 @@ 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 = ReadVector(); + } + + 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; @@ -80,10 +92,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; } @@ -92,10 +116,10 @@ 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 = new(AuxiliaryXhair); axh.draw2d = func_null; axh.drawmask = MASK_NORMAL; axh.axh_drawflag = DRAWFLAG_NORMAL; @@ -103,6 +127,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) @@ -110,7 +135,7 @@ 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 = Vehicles_from(hud_id); + Vehicle info = REGISTRY_GET(Vehicles, hud_id); info.vr_setup(info, NULL); } } @@ -124,7 +149,6 @@ void Vehicles_drawHUD( string iconAmmo2, vector colorAmmo2) { - SELFPARAM(); // Initialize vector tmpSize = '0 0 0'; vector tmpPos = '0 0 0'; @@ -164,7 +188,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 @@ -232,7 +256,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); } @@ -240,7 +264,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); @@ -254,7 +278,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); } @@ -262,7 +286,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);