X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Ftturrets.qc;h=24deed681f68447507443dd458d69a9dab249a2f;hb=3319c56e4f4d3d2e4dc657147ebfd8fbfabb7aef;hp=2b9ec0297b2ef63411d210cc8a8597bc8438691f;hpb=e52c92b8ba22924be19d8458fb1dd0cb7cfe11c7;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/tturrets.qc b/qcsrc/client/tturrets.qc index 2b9ec0297..24deed681 100644 --- a/qcsrc/client/tturrets.qc +++ b/qcsrc/client/tturrets.qc @@ -163,22 +163,22 @@ void turret_changeteam() { switch(self.team - 1) { - case COLOR_TEAM1: // Red + case NUM_TEAM_1: // Red self.glowmod = '2 0 0'; self.teamradar_color = '1 0 0'; break; - case COLOR_TEAM2: // Blue + case NUM_TEAM_2: // Blue self.glowmod = '0 0 2'; self.teamradar_color = '0 0 1'; break; - case COLOR_TEAM3: // Yellow + case NUM_TEAM_3: // Yellow self.glowmod = '1 1 0'; self.teamradar_color = '1 1 0'; break; - case COLOR_TEAM4: // Pink + case NUM_TEAM_4: // Pink self.glowmod = '1 0 1'; self.teamradar_color = '1 0 1'; break; @@ -231,40 +231,54 @@ void turret_draw2d() if(self.netname == "") return; - if(autocvar_cl_hidewaypoints) // also check g_waypointsprites_turrets after next release (needs changed to clients default/config .cfg) + if(!autocvar_g_waypointsprite_turrets) + return; + + if(autocvar_cl_hidewaypoints) return; float dist = vlen(self.origin - view_origin); + float t = (GetPlayerColor(player_localnum) + 1); + vector o; - /* - // TODO: Vehicle tactical hud - o = project_3d_to_2d(self.origin + '0 0 32'); - if(o_z < 0 - || o_x < (vid_conwidth * waypointsprite_edgeoffset_left) - || o_y < (vid_conheight * waypointsprite_edgeoffset_top) - || o_x > (vid_conwidth - (vid_conwidth * waypointsprite_edgeoffset_right)) - || o_y > (vid_conheight - (vid_conheight * waypointsprite_edgeoffset_bottom))) - return; // Dont draw wp's for turrets out of view - o_z = 0; - if(hud != HUD_NORMAL) - { - switch(hud) - { - case HUD_SPIDERBOT: - case HUD_WAKIZASHI: - case HUD_RAPTOR: - vector pz = drawgetimagesize("gfx/vehicles/axh-bracket.tga") * 0.25; - drawpic(o - pz * 0.5 , "gfx/vehicles/axh-bracket.tga", pz , '1 1 1', 0.75, DRAWFLAG_NORMAL); - break; + string txt; + + if(autocvar_cl_vehicles_hud_tactical) + if(dist < 10240 && t != self.team) + { + // TODO: Vehicle tactical hud + o = project_3d_to_2d(self.origin + '0 0 32'); + if(o_z < 0 + || o_x < (vid_conwidth * waypointsprite_edgeoffset_left) + || o_y < (vid_conheight * waypointsprite_edgeoffset_top) + || o_x > (vid_conwidth - (vid_conwidth * waypointsprite_edgeoffset_right)) + || o_y > (vid_conheight - (vid_conheight * waypointsprite_edgeoffset_bottom))) + return; // Dont draw wp's for turrets out of view + o_z = 0; + if(hud != HUD_NORMAL) + { + switch(hud) + { + case HUD_SPIDERBOT: + case HUD_WAKIZASHI: + case HUD_RAPTOR: + case HUD_BUMBLEBEE: + if(self.turret_type == TID_EWHEEL || self.turret_type == TID_WALKER) + txt = "gfx/vehicles/vth-mover.tga"; + else + txt = "gfx/vehicles/vth-stationary.tga"; + + vector pz = drawgetimagesize(txt) * 0.25; + drawpic(o - pz * 0.5, txt, pz , '1 1 1', 0.75, DRAWFLAG_NORMAL); + break; + } } - } - */ + } if(dist > self.maxdistance) return; string spriteimage = self.netname; - float t = (GetPlayerColor(player_localnum) + 1); float a = self.alpha * autocvar_hud_panel_fg_alpha; vector rgb = spritelookupcolor(spriteimage, self.teamradar_color); @@ -280,7 +294,7 @@ void turret_draw2d() print(sprintf("WARNING: sprite of name %s has no color, using pink so you notice it\n", spriteimage)); } - string txt = self.netname; + txt = self.netname; if(autocvar_g_waypointsprite_spam && waypointsprite_count >= autocvar_g_waypointsprite_spam) txt = _("Spam"); else @@ -378,7 +392,7 @@ void turret_walker_draw() return; fixedmakevectors(self.angles); - movelib_groundalign4point(300, 100, 0.25); + movelib_groundalign4point(300, 100, 0.25, 45); setorigin(self, self.origin + self.velocity * dt); self.tur_head.angles += dt * self.tur_head.move_avelocity; self.angles_y = self.move_angles_y; @@ -443,7 +457,7 @@ void turret_construct() self.tur_head.drawmask = MASK_NORMAL; self.anim_start_time = 0; self.draw2d = turret_draw2d; - self.maxdistance = 4000; // use g_waypointsprites_turrets_maxdist after next release (needs changed to cleint's default) + self.maxdistance = autocvar_g_waypointsprite_turrets_maxdist; self.teamradar_color = '1 0 0'; self.alpha = 1; @@ -528,7 +542,8 @@ entity turret_gibtoss(string _model, vector _from, vector _to, vector _cmod, flo gib.gravity = 1; gib.move_movetype = MOVETYPE_BOUNCE; - gib.move_origin = gib.origin = _from; + gib.move_origin = _from; + setorigin(gib, _from); gib.move_velocity = _to; gib.move_avelocity = prandomvec() * 32; gib.move_time = time; @@ -540,37 +555,38 @@ entity turret_gibtoss(string _model, vector _from, vector _to, vector _cmod, flo void turret_die() { - entity headgib; sound (self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM); pointparticles(particleeffectnum("rocket_explode"), self.origin, '0 0 0', 1); turret_tid2info(self.turret_type); - - // Base - if(self.turret_type == TID_EWHEEL) - turret_gibtoss(tid2info_base, self.origin + '0 0 18', self.velocity + '0 0 400' + '0.1 0.1 1' * (random() * 400), '-1 -1 -1', TRUE); - else if (self.turret_type == TID_WALKER) - turret_gibtoss(tid2info_base, self.origin + '0 0 18', self.velocity + '0 0 300' + '0.1 0.1 1' * (random() * 200), '-1 -1 -1', TRUE); - else if (self.turret_type == TID_TESLA) - turret_gibtoss(tid2info_base, self.origin + '0 0 18', '0 0 200', '-1 -1 -1', FALSE); - else - { - if (random() > 0.5) - { - turret_gibtoss("models/turrets/base-gib2.md3", self.origin + '0 0 8', '0 0 50' + randomvec() * 150, '0 0 0', FALSE); - turret_gibtoss("models/turrets/base-gib3.md3", self.origin + '0 0 8', '0 0 50' + randomvec() * 150, '0 0 0', FALSE); - turret_gibtoss("models/turrets/base-gib4.md3", self.origin + '0 0 8', '0 0 50' + randomvec() * 150, '0 0 0', FALSE); - } + if (!autocvar_cl_nogibs) + { + // Base + if(self.turret_type == TID_EWHEEL) + turret_gibtoss(tid2info_base, self.origin + '0 0 18', self.velocity + '0 0 400' + '0.1 0.1 1' * (random() * 400), '-1 -1 -1', TRUE); + else if (self.turret_type == TID_WALKER) + turret_gibtoss(tid2info_base, self.origin + '0 0 18', self.velocity + '0 0 300' + '0.1 0.1 1' * (random() * 200), '-1 -1 -1', TRUE); + else if (self.turret_type == TID_TESLA) + turret_gibtoss(tid2info_base, self.origin + '0 0 18', '0 0 200', '-1 -1 -1', FALSE); else - turret_gibtoss("models/turrets/base-gib1.md3", self.origin + '0 0 8', '0 0 0', '0 0 0', TRUE); - - headgib = turret_gibtoss(tid2info_head, self.origin + '0 0 32', '0 0 200' + randomvec() * 200, '-1 -1 -1', TRUE); - if(headgib) - { - headgib.angles = headgib.move_angles = self.tur_head.angles; - headgib.avelocity = headgib.move_avelocity = self.tur_head.move_avelocity + randomvec() * 45; - headgib.avelocity_y = headgib.move_avelocity_y = headgib.move_avelocity_y * 5; - headgib.gravity = 0.5; + { + if (random() > 0.5) + { + turret_gibtoss("models/turrets/base-gib2.md3", self.origin + '0 0 8', '0 0 50' + randomvec() * 150, '0 0 0', FALSE); + turret_gibtoss("models/turrets/base-gib3.md3", self.origin + '0 0 8', '0 0 50' + randomvec() * 150, '0 0 0', FALSE); + turret_gibtoss("models/turrets/base-gib4.md3", self.origin + '0 0 8', '0 0 50' + randomvec() * 150, '0 0 0', FALSE); + } + else + turret_gibtoss("models/turrets/base-gib1.md3", self.origin + '0 0 8', '0 0 0', '0 0 0', TRUE); + + entity headgib = turret_gibtoss(tid2info_head, self.origin + '0 0 32', '0 0 200' + randomvec() * 200, '-1 -1 -1', TRUE); + if(headgib) + { + headgib.angles = headgib.move_angles = self.tur_head.angles; + headgib.avelocity = headgib.move_avelocity = self.tur_head.move_avelocity + randomvec() * 45; + headgib.avelocity_y = headgib.move_avelocity_y = headgib.move_avelocity_y * 5; + headgib.gravity = 0.5; + } } } @@ -590,6 +606,7 @@ void ent_turret() self.origin_x = ReadCoord(); self.origin_y = ReadCoord(); self.origin_z = ReadCoord(); + setorigin(self, self.origin); self.angles_x = ReadAngle(); self.angles_y = ReadAngle();