]> de.git.xonotic.org Git - voretournament/voretournament.git/blobdiff - data/qcsrc/client/radar.qc
Also don't show our predator on the radar, since it would once again overlap with...
[voretournament/voretournament.git] / data / qcsrc / client / radar.qc
index c0778f51a3a31c18530df0a4b10860e55fd666f9..4350b0cb83c2c67f7d83ac42b3d980a25f6178ab 100644 (file)
@@ -53,43 +53,75 @@ vector yinvert(vector v)
        return v;\r
 }\r
 \r
-void draw_radar_background(float bg, float fg)\r
+void draw_radar_background(float ca, float bg)\r
 {\r
-       float fga;\r
-       vector fgc;\r
+       vector col;\r
+       vector pos1, pos2, pos3, pos4;\r
+       pos1 = '1 0 0' * (radar_origin2d_x - radar_size2d_x * 0.5 + radar_extraclip_mins_x) + '0 1 0' * (radar_origin2d_y - radar_size2d_y * 0.5 + radar_extraclip_mins_y);\r
+       pos2 = '1 0 0' * (radar_origin2d_x + radar_size2d_x * 0.5 + radar_extraclip_maxs_x) + '0 1 0' * (radar_origin2d_y - radar_size2d_y * 0.5 + radar_extraclip_mins_y);\r
+       pos3 = '1 0 0' * (radar_origin2d_x + radar_size2d_x * 0.5 + radar_extraclip_maxs_x) + '0 1 0' * (radar_origin2d_y + radar_size2d_y * 0.5 + radar_extraclip_maxs_y);\r
+       pos4 = '1 0 0' * (radar_origin2d_x - radar_size2d_x * 0.5 + radar_extraclip_mins_x) + '0 1 0' * (radar_origin2d_y + radar_size2d_y * 0.5 + radar_extraclip_maxs_y);\r
+\r
        if(bg > 0)\r
        {\r
-               R_BeginPolygon("", 0);\r
-               R_PolygonVertex('1 0 0' * (radar_origin2d_x - radar_size2d_x * 0.5 + radar_extraclip_mins_x) + '0 1 0' * (radar_origin2d_y - radar_size2d_y * 0.5 + radar_extraclip_mins_y), '0 0 0', '0 0 0', bg);\r
-               R_PolygonVertex('1 0 0' * (radar_origin2d_x + radar_size2d_x * 0.5 + radar_extraclip_maxs_x) + '0 1 0' * (radar_origin2d_y - radar_size2d_y * 0.5 + radar_extraclip_mins_y), '0 0 0', '0 0 0', bg);\r
-               R_PolygonVertex('1 0 0' * (radar_origin2d_x + radar_size2d_x * 0.5 + radar_extraclip_maxs_x) + '0 1 0' * (radar_origin2d_y + radar_size2d_y * 0.5 + radar_extraclip_maxs_y), '0 0 0', '0 0 0', bg);\r
-               R_PolygonVertex('1 0 0' * (radar_origin2d_x - radar_size2d_x * 0.5 + radar_extraclip_mins_x) + '0 1 0' * (radar_origin2d_y + radar_size2d_y * 0.5 + radar_extraclip_maxs_y), '0 0 0', '0 0 0', bg);\r
+               R_BeginPolygon("gfx/hud/bg_radar.tga", 0);\r
+               R_PolygonVertex(pos1, yinvert('0 1 0'), '1 1 1', bg);\r
+               R_PolygonVertex(pos2, yinvert('1 1 0'), '1 1 1', bg);\r
+               R_PolygonVertex(pos3, yinvert('1 0 0'), '1 1 1', bg);\r
+               R_PolygonVertex(pos4, yinvert('0 0 0'), '1 1 1', bg);\r
                R_EndPolygon();\r
        }\r
 \r
-       if(fg > 0 && minimapname != "")\r
+       if(ca > 0 && minimapname != "")\r
        {\r
-               fga = 1;\r
-               fgc = '1 1 1' * fg;\r
+               col = '1 1 1' * ca;\r
                R_BeginPolygon(minimapname, DRAWFLAG_SCREEN | DRAWFLAG_MIPMAP);\r
                if(v_flipped)\r
                {\r
-                       R_PolygonVertex(radar_texcoord_to_2dcoord(mi_pictexcoord3), yinvert(mi_pictexcoord3), fgc, fga);\r
-                       R_PolygonVertex(radar_texcoord_to_2dcoord(mi_pictexcoord2), yinvert(mi_pictexcoord2), fgc, fga);\r
-                       R_PolygonVertex(radar_texcoord_to_2dcoord(mi_pictexcoord1), yinvert(mi_pictexcoord1), fgc, fga);\r
-                       R_PolygonVertex(radar_texcoord_to_2dcoord(mi_pictexcoord0), yinvert(mi_pictexcoord0), fgc, fga);\r
+                       R_PolygonVertex(radar_texcoord_to_2dcoord(mi_pictexcoord3), yinvert(mi_pictexcoord3), col, 1);\r
+                       R_PolygonVertex(radar_texcoord_to_2dcoord(mi_pictexcoord2), yinvert(mi_pictexcoord2), col, 1);\r
+                       R_PolygonVertex(radar_texcoord_to_2dcoord(mi_pictexcoord1), yinvert(mi_pictexcoord1), col, 1);\r
+                       R_PolygonVertex(radar_texcoord_to_2dcoord(mi_pictexcoord0), yinvert(mi_pictexcoord0), col, 1);\r
                }\r
                else\r
                {\r
-                       R_PolygonVertex(radar_texcoord_to_2dcoord(mi_pictexcoord0), yinvert(mi_pictexcoord0), fgc, fga);\r
-                       R_PolygonVertex(radar_texcoord_to_2dcoord(mi_pictexcoord1), yinvert(mi_pictexcoord1), fgc, fga);\r
-                       R_PolygonVertex(radar_texcoord_to_2dcoord(mi_pictexcoord2), yinvert(mi_pictexcoord2), fgc, fga);\r
-                       R_PolygonVertex(radar_texcoord_to_2dcoord(mi_pictexcoord3), yinvert(mi_pictexcoord3), fgc, fga);\r
+                       R_PolygonVertex(radar_texcoord_to_2dcoord(mi_pictexcoord0), yinvert(mi_pictexcoord0), col, 1);\r
+                       R_PolygonVertex(radar_texcoord_to_2dcoord(mi_pictexcoord1), yinvert(mi_pictexcoord1), col, 1);\r
+                       R_PolygonVertex(radar_texcoord_to_2dcoord(mi_pictexcoord2), yinvert(mi_pictexcoord2), col, 1);\r
+                       R_PolygonVertex(radar_texcoord_to_2dcoord(mi_pictexcoord3), yinvert(mi_pictexcoord3), col, 1);\r
                }\r
                R_EndPolygon();\r
        }\r
 }\r
 \r
+void draw_radar_foreground(float fg)\r
+{\r
+       vector rgb;\r
+       vector pos1, pos2, pos3, pos4;\r
+       pos1 = '1 0 0' * (radar_origin2d_x - radar_size2d_x * 0.5 + radar_extraclip_mins_x) + '0 1 0' * (radar_origin2d_y - radar_size2d_y * 0.5 + radar_extraclip_mins_y);\r
+       pos2 = '1 0 0' * (radar_origin2d_x + radar_size2d_x * 0.5 + radar_extraclip_maxs_x) + '0 1 0' * (radar_origin2d_y - radar_size2d_y * 0.5 + radar_extraclip_mins_y);\r
+       pos3 = '1 0 0' * (radar_origin2d_x + radar_size2d_x * 0.5 + radar_extraclip_maxs_x) + '0 1 0' * (radar_origin2d_y + radar_size2d_y * 0.5 + radar_extraclip_maxs_y);\r
+       pos4 = '1 0 0' * (radar_origin2d_x - radar_size2d_x * 0.5 + radar_extraclip_mins_x) + '0 1 0' * (radar_origin2d_y + radar_size2d_y * 0.5 + radar_extraclip_maxs_y);\r
+       rgb = GetTeamRGB(GetPlayerColor(player_localentnum - 1));\r
+\r
+       if(fg > 0)\r
+       {\r
+               R_BeginPolygon("gfx/hud/fg_radar.tga", 0);\r
+               R_PolygonVertex(pos1, yinvert('0 1 0'), '1 1 1', fg);\r
+               R_PolygonVertex(pos2, yinvert('1 1 0'), '1 1 1', fg);\r
+               R_PolygonVertex(pos3, yinvert('1 0 0'), '1 1 1', fg);\r
+               R_PolygonVertex(pos4, yinvert('0 0 0'), '1 1 1', fg);\r
+               R_EndPolygon();\r
+\r
+               R_BeginPolygon("gfx/hud/fg_radar_team.tga", 0);\r
+               R_PolygonVertex(pos1, yinvert('0 1 0'), rgb, fg);\r
+               R_PolygonVertex(pos2, yinvert('1 1 0'), rgb, fg);\r
+               R_PolygonVertex(pos3, yinvert('1 0 0'), rgb, fg);\r
+               R_PolygonVertex(pos4, yinvert('0 0 0'), rgb, fg);\r
+               R_EndPolygon();\r
+       }\r
+}\r
+\r
 void(vector coord3d, vector pangles, vector rgb) draw_radar_player =\r
 {\r
        vector coord, rgb2;\r
@@ -178,6 +210,7 @@ void draw_radar_link(vector start, vector end, float colors)
 }\r
 \r
 float cl_radar_scale;\r
+float cl_radar_content_alpha;\r
 float cl_radar_background_alpha;\r
 float cl_radar_foreground_alpha;\r
 float cl_radar_rotation;\r
@@ -188,9 +221,10 @@ float cl_radar_zoommode;
 void radar_loadcvars()\r
 {\r
        v_flipped = cvar("v_flipped");\r
-       if(ons_showmap)\r
+       if(showmap)\r
        {\r
                cl_radar_scale = 42; // dummy, not used (see zoommode)\r
+               cl_radar_content_alpha = 1 * (1 - cvar("_menu_alpha"));\r
                cl_radar_background_alpha = 1 * (1 - cvar("_menu_alpha"));\r
                cl_radar_foreground_alpha = 1 * (1 - cvar("_menu_alpha"));\r
                cl_radar_rotation = cvar("cl_radar_rotation");\r
@@ -204,6 +238,7 @@ void radar_loadcvars()
        else\r
        {\r
                cl_radar_scale = cvar("cl_radar_scale");\r
+               cl_radar_content_alpha = cvar("cl_radar_content_alpha") * sbar_alpha_fg;\r
                cl_radar_background_alpha = cvar("cl_radar_background_alpha") * sbar_alpha_fg;\r
                cl_radar_foreground_alpha = cvar("cl_radar_foreground_alpha") * sbar_alpha_fg;\r
                cl_radar_rotation = cvar("cl_radar_rotation");\r
@@ -214,6 +249,7 @@ void radar_loadcvars()
                // others default to 0\r
                // match this to defaultVoretournament.cfg!\r
                if(!cl_radar_scale) cl_radar_scale = 4096;\r
+               if(!cl_radar_content_alpha) cl_radar_content_alpha = 0.4 * sbar_alpha_fg;\r
                if(!cl_radar_background_alpha) cl_radar_background_alpha = 0.4 * sbar_alpha_fg;\r
                if(!cl_radar_foreground_alpha) cl_radar_foreground_alpha = 0.8 * sbar_alpha_fg;\r
                if(!cl_radar_size_x) cl_radar_size_x = 128;\r
@@ -227,13 +263,12 @@ void radar_loadcvars()
 \r
 void() radar_view =\r
 {\r
-       local float color1, color2; // color already declared as a global in hud.qc\r
-       local vector rgb;\r
+       local float col; // color already declared as a global in hud.qc\r
        local entity tm;\r
        float scale2d, normalsize, bigsize;\r
        float f;\r
 \r
-       if(minimapname == "" && !ons_showmap)\r
+       if(minimapname == "" && !showmap)\r
                return;\r
 \r
        radar_loadcvars();\r
@@ -323,9 +358,6 @@ void() radar_view =
                  f * (mi_min + mi_max) * 0.5\r
                + (1 - f) * view_origin);\r
 \r
-       color1 = GetPlayerColor(player_localentnum-1);\r
-       rgb = GetTeamRGB(color1);\r
-\r
        drawsetcliparea(\r
                radar_origin2d_x - radar_size2d_x * 0.5 + radar_extraclip_mins_x,\r
                radar_origin2d_y - radar_size2d_y * 0.5 + radar_extraclip_mins_y,\r
@@ -333,22 +365,11 @@ void() radar_view =
                radar_size2d_y + radar_extraclip_maxs_y - radar_extraclip_mins_y\r
        );\r
 \r
-       draw_radar_background(cl_radar_background_alpha, cl_radar_foreground_alpha);\r
+       draw_radar_background(cl_radar_content_alpha, cl_radar_background_alpha);\r
 \r
-       if(ons_showmap)\r
+       if(showmap)\r
        {\r
                drawresetcliparea();\r
-\r
-               vector frame_origin, frame_size;\r
-               frame_origin = frame_size = '0 0 0';\r
-\r
-               frame_origin_x = radar_origin2d_x - radar_size2d_x * 0.55859375; // matches the picture\r
-               frame_origin_y = radar_origin2d_y - radar_size2d_y * 0.55859375; // matches the picture\r
-               frame_size_x = radar_size2d_x * 1.1171875; // matches the picture\r
-               frame_size_y = radar_size2d_y * 1.1171875; // matches the picture\r
-               drawpic(frame_origin, "gfx/ons-frame.tga", frame_size, '1 1 1', sbar_alpha_fg, 0);\r
-               drawpic(frame_origin, "gfx/ons-frame-team.tga", frame_size, rgb, sbar_alpha_fg, 0);\r
-\r
                drawsetcliparea(\r
                        radar_origin2d_x - radar_size2d_x * 0.5,\r
                        radar_origin2d_y - radar_size2d_y * 0.5,\r
@@ -363,13 +384,18 @@ void() radar_view =
                draw_radar_icon(tm.origin, tm.radar_icon, tm, tm.radar_color, tm.alpha * sbar_alpha_fg);\r
        for(tm = world; (tm = find(tm, classname, "entcs_receiver")); )\r
        {\r
-               color2 = GetPlayerColor(tm.sv_entnum);\r
-               //if(color == COLOR_SPECTATOR || color == color2)\r
-                       draw_radar_player(tm.origin, tm.angles, GetTeamRGB(color2));\r
+               col = GetPlayerColor(tm.sv_entnum);\r
+               if(cvar("cl_radar_players") > 1 || (cvar("cl_radar_players") > 0 && teamplay && GetPlayerColor(player_localentnum - 1) == col))\r
+               if not(tm.sv_entnum == spectatee_status - 1) // don't show the player we are spectating, since we also draw ourself separately\r
+               if not(tm.sv_entnum == getstati(STAT_VORE_EATEN) - 1) // don't show the player who ate us, since we also draw ourself separately\r
+               if not(tm.eaten) // don't show prey on the radar\r
+                       draw_radar_player(tm.origin, tm.angles, GetTeamRGB(col));\r
        }\r
        draw_radar_player(view_origin, view_angles, '1 1 1');\r
 \r
        drawresetcliparea();\r
+\r
+       draw_radar_foreground(cl_radar_foreground_alpha);\r
 };\r
 \r
 \r