X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fwaypointsprites.qc;h=788dd871eed84f74e2050375211ef9eca122ee20;hb=bdc3e3b86271ee599bcf3d1f4deb59511709a7d7;hp=2df3dd411bc6d9f4da76ef4124a81fa51658c8fc;hpb=f3b9bfb518cc2abbd8d196b2fa9d1713fb79b414;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/waypointsprites.qc b/qcsrc/client/waypointsprites.qc index 2df3dd411..788dd871e 100644 --- a/qcsrc/client/waypointsprites.qc +++ b/qcsrc/client/waypointsprites.qc @@ -1,51 +1,4 @@ -float waypointsprite_initialized; -float waypointsprite_fadedistance; -float waypointsprite_normdistance; -float waypointsprite_minscale; -float waypointsprite_minalpha; -float waypointsprite_distancealphaexponent; -float waypointsprite_timealphaexponent; -float waypointsprite_scale; -float waypointsprite_fontsize; -float waypointsprite_edgefadealpha; -float waypointsprite_edgefadescale; -float waypointsprite_edgefadedistance; -float waypointsprite_edgeoffset_bottom; -float waypointsprite_edgeoffset_left; -float waypointsprite_edgeoffset_right; -float waypointsprite_edgeoffset_top; -float waypointsprite_crosshairfadealpha; -float waypointsprite_crosshairfadescale; -float waypointsprite_crosshairfadedistance; -float waypointsprite_distancefadealpha; -float waypointsprite_distancefadescale; -float waypointsprite_distancefadedistance; -float waypointsprite_alpha; - -.float helpme; -.float rule; -.string netname; // primary picture -.string netname2; // secondary picture -.string netname3; // tertiary picture -.float team; // team that gets netname2 -.float lifetime; -.float fadetime; -.float maxdistance; -.float hideflags; -.float spawntime; -.float health; -.float build_started; -.float build_starthealth; -.float build_finished; - -const float SPRITE_HEALTHBAR_WIDTH = 144; -const float SPRITE_HEALTHBAR_HEIGHT = 9; -const float SPRITE_HEALTHBAR_MARGIN = 6; -const float SPRITE_HEALTHBAR_BORDER = 2; -const float SPRITE_HEALTHBAR_BORDERALPHA = 1; -const float SPRITE_HEALTHBAR_HEALTHALPHA = 0.5; -const float SPRITE_ARROW_SCALE = 1.0; -const float SPRITE_HELPME_BLINK = 2; +#include "waypointsprites.qh" void drawrotpic(vector org, float rot, string pic, vector sz, vector hotspot, vector rgb, float a, float f) { @@ -55,9 +8,9 @@ void drawrotpic(vector org, float rot, string pic, vector sz, vector hotspot, ve // hotspot-relative coordinates of the corners v1 = hotspot; - v2 = hotspot + '1 0 0' * sz_x; - v3 = hotspot + '1 0 0' * sz_x + '0 1 0' * sz_y; - v4 = hotspot + '0 1 0' * sz_y; + v2 = hotspot + '1 0 0' * sz.x; + v3 = hotspot + '1 0 0' * sz.x + '0 1 0' * sz.y; + v4 = hotspot + '0 1 0' * sz.y; // rotate them, and make them absolute rot = -rot; // rotate by the opposite angle, as our coordinate system is reversed @@ -103,7 +56,7 @@ void drawhealthbar(vector org, float rot, float h, vector sz, vector hotspot, fl up = rotate(up, rot); owidth = width + 2 * border; - o = o - up * (margin + border + height) + ri * (sz_x - owidth) * 0.5; + o = o - up * (margin + border + height) + ri * (sz.x - owidth) * 0.5; drawquad(o - up * border, ri * owidth, up * border, "", rgb, a, f); drawquad(o + up * height, ri * owidth, up * border, "", rgb, a, f); @@ -149,12 +102,12 @@ vector drawspritetext(vector o, float ang, float minwidth, vector rgb, float a, float sw, w, h; float aspect, sa, ca; - sw = stringwidth(s, FALSE, fontsize); + sw = stringwidth(s, false, fontsize); if(sw > minwidth) w = sw; else w = minwidth; - h = fontsize_y; + h = fontsize.y; // how do corners work? aspect = vid_conwidth / vid_conheight; @@ -172,25 +125,25 @@ vector drawspritetext(vector o, float ang, float minwidth, vector rgb, float a, } // align - o_x -= w * algnx; - o_y -= h * algny; + o.x -= w * algnx; + o.y -= h * algny; // we want to be onscreen - if(o_x < 0) - o_x = 0; - if(o_y < 0) - o_y = 0; - if(o_x > vid_conwidth - w) - o_x = vid_conwidth - w; - if(o_y > vid_conheight - h) - o_x = vid_conheight - h; + if(o.x < 0) + o.x = 0; + if(o.y < 0) + o.y = 0; + if(o.x > vid_conwidth - w) + o.x = vid_conwidth - w; + if(o.y > vid_conheight - h) + o.x = vid_conheight - h; - o_x += 0.5 * (w - sw); + o.x += 0.5 * (w - sw); drawstring(o, s, fontsize, rgb, a, DRAWFLAG_NORMAL); - o_x += 0.5 * sw; - o_y += 0.5 * h; + o.x += 0.5 * sw; + o.y += 0.5 * h; return o; } @@ -297,58 +250,57 @@ vector fixrgbexcess_move(vector rgb, vector src, vector dst) } vector fixrgbexcess(vector rgb) { - if(rgb_x > 1) + if(rgb.x > 1) { rgb = fixrgbexcess_move(rgb, '1 0 0', '0 1 1'); - if(rgb_y > 1) + if(rgb.y > 1) { rgb = fixrgbexcess_move(rgb, '0 1 0', '0 0 1'); - if(rgb_z > 1) - rgb_z = 1; + if(rgb.z > 1) + rgb.z = 1; } - else if(rgb_z > 1) + else if(rgb.z > 1) { rgb = fixrgbexcess_move(rgb, '0 0 1', '0 1 0'); - if(rgb_y > 1) - rgb_y = 1; + if(rgb.y > 1) + rgb.y = 1; } } - else if(rgb_y > 1) + else if(rgb.y > 1) { rgb = fixrgbexcess_move(rgb, '0 1 0', '1 0 1'); - if(rgb_x > 1) + if(rgb.x > 1) { rgb = fixrgbexcess_move(rgb, '1 0 0', '0 0 1'); - if(rgb_z > 1) - rgb_z = 1; + if(rgb.z > 1) + rgb.z = 1; } - else if(rgb_z > 1) + else if(rgb.z > 1) { rgb = fixrgbexcess_move(rgb, '0 0 1', '1 0 0'); - if(rgb_x > 1) - rgb_x = 1; + if(rgb.x > 1) + rgb.x = 1; } } - else if(rgb_z > 1) + else if(rgb.z > 1) { rgb = fixrgbexcess_move(rgb, '0 0 1', '1 1 0'); - if(rgb_x > 1) + if(rgb.x > 1) { rgb = fixrgbexcess_move(rgb, '1 0 0', '0 1 0'); - if(rgb_y > 1) - rgb_y = 1; + if(rgb.y > 1) + rgb.y = 1; } - else if(rgb_y > 1) + else if(rgb.y > 1) { rgb = fixrgbexcess_move(rgb, '0 1 0', '1 0 0'); - if(rgb_x > 1) - rgb_x = 1; + if(rgb.x > 1) + rgb.x = 1; } } return rgb; } -float waypointsprite_count, waypointsprite_newcount; void Draw_WaypointSprite() { string spriteimage; @@ -450,27 +402,27 @@ void Draw_WaypointSprite() float ang; o = project_3d_to_2d(self.origin); - 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))) + 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))) { // scale it to be just in view vector d; float f1, f2; d = o - '0.5 0 0' * vid_conwidth - '0 0.5 0' * vid_conheight; - ang = atan2(-d_x, -d_y); - if(o_z < 0) + ang = atan2(-d.x, -d.y); + if(o.z < 0) ang += M_PI; - f1 = d_x / vid_conwidth; - f2 = d_y / vid_conheight; + f1 = d.x / vid_conwidth; + f2 = d.y / vid_conheight; if(max(f1, -f1) > max(f2, -f2)) { - if(d_z * f1 > 0) + if(d.z * f1 > 0) { // RIGHT edge d = d * ((0.5 - waypointsprite_edgeoffset_right) / f1); @@ -483,7 +435,7 @@ void Draw_WaypointSprite() } else { - if(d_z * f2 > 0) + if(d.z * f2 > 0) { // BOTTOM edge d = d * ((0.5 - waypointsprite_edgeoffset_bottom) / f2); @@ -504,21 +456,21 @@ void Draw_WaypointSprite() #else vector d; d = o - '0.5 0 0' * vid_conwidth - '0 0.5 0' * vid_conheight; - ang = atan2(-d_x, -d_y); + ang = atan2(-d.x, -d.y); #endif } - o_z = 0; + o.z = 0; float edgedistance_min, crosshairdistance; - edgedistance_min = min((o_y - (vid_conheight * waypointsprite_edgeoffset_top)), - (o_x - (vid_conwidth * waypointsprite_edgeoffset_left)), - (vid_conwidth - (vid_conwidth * waypointsprite_edgeoffset_right)) - o_x, - (vid_conheight - (vid_conheight * waypointsprite_edgeoffset_bottom)) - o_y); + edgedistance_min = min((o.y - (vid_conheight * waypointsprite_edgeoffset_top)), + (o.x - (vid_conwidth * waypointsprite_edgeoffset_left)), + (vid_conwidth - (vid_conwidth * waypointsprite_edgeoffset_right)) - o.x, + (vid_conheight - (vid_conheight * waypointsprite_edgeoffset_bottom)) - o.y); float vidscale; vidscale = max(vid_conwidth / vid_width, vid_conheight / vid_height); - crosshairdistance = sqrt( pow(o_x - vid_conwidth/2, 2) + pow(o_y - vid_conheight/2, 2) ); + crosshairdistance = sqrt( pow(o.x - vid_conwidth/2, 2) + pow(o.y - vid_conheight/2, 2) ); t = waypointsprite_scale * vidscale; a *= waypointsprite_alpha; @@ -614,7 +566,7 @@ void Ent_RemoveWaypointSprite() void Ent_WaypointSprite() { - float sendflags, f, t; + int sendflags, f, t; sendflags = ReadByte(); if(!self.spawntime) @@ -720,7 +672,7 @@ void WaypointSprite_Load_Frames(string ext) { float dh, n, i, o, f; string s, sname, sframes; - dh = search_begin(strcat("models/sprites/*_frame*", ext), FALSE, FALSE); + dh = search_begin(strcat("models/sprites/*_frame*", ext), false, false); if (dh < 0) return; float ext_len = strlen(ext);