]> de.git.xonotic.org Git - voretournament/voretournament.git/blobdiff - data/qcsrc/client/View.qc
Only colorize the swallow indicator if one of its color cvars is enabled
[voretournament/voretournament.git] / data / qcsrc / client / View.qc
index 1daa4cb4bde22f8d8ed81e8aefb85ef8b0612b16..674fb9c0bed449ca69c0f03f41018a68fcebfa92 100644 (file)
@@ -250,6 +250,7 @@ void CSQC_Demo_Camera();
 float Sbar_WouldDrawScoreboard ();\r
 float view_set;\r
 float camera_mode;\r
+float reticle_type;\r
 float chase_active_old;\r
 float artwork_fade;\r
 float pickup_crosshair_time, pickup_crosshair_size;\r
@@ -272,6 +273,7 @@ void CSQC_UpdateView(float w, float h)
        vector v, vo;\r
        float a;\r
 \r
+       vector reticle_pos, reticle_size;\r
        vector artwork_pos, artwork_size;\r
 \r
        WaypointSprite_Load();\r
@@ -460,6 +462,48 @@ void CSQC_UpdateView(float w, float h)
        // next R_RenderScene call\r
        drawstring('0 0 0', "", '1 1 0', '1 1 1', 0, 0);\r
 \r
+       // Draw the aiming reticle for weapons that use it\r
+       // reticle_type is changed to the item we are zooming / aiming with, to decide which reticle to use\r
+       // It must be a persisted float for fading out to work properly (you let go of the zoom button for\r
+       // the view to go back to normal, so reticle_type would become 0 as we fade out)\r
+       if(spectatee_status || getstati(STAT_HEALTH) <= 0)\r
+               reticle_type = 0; // prevent reticle from showing during the respawn zoom effect or for spectators\r
+       else if(activeweapon && (button_zoom || zoomscript_caught))\r
+               reticle_type = 2; // weapon zoom\r
+       else if(button_zoom || zoomscript_caught)\r
+               reticle_type = 1; // normal zoom\r
+\r
+       if(cvar("cl_reticle_stretch"))\r
+       {\r
+               reticle_size_x = vid_conwidth;\r
+               reticle_size_y = vid_conheight;\r
+               reticle_pos_x = 0;\r
+               reticle_pos_y = 0;\r
+       }\r
+       else\r
+       {\r
+               reticle_size_x = max(vid_conwidth, vid_conheight);\r
+               reticle_size_y = max(vid_conwidth, vid_conheight);\r
+               reticle_pos_x = (vid_conwidth - reticle_size_x) / 2;\r
+               reticle_pos_y = (vid_conheight - reticle_size_y) / 2;\r
+       }\r
+\r
+       f = current_zoomfraction;\r
+       if(zoomscript_caught)\r
+               f = 1;\r
+       if(cvar("cl_reticle_item_normal"))\r
+       {\r
+               precache_pic("gfx/reticle_normal");\r
+               if(reticle_type == 1 && f)\r
+                       drawpic(reticle_pos, "gfx/reticle_normal", reticle_size, '1 1 1', f * cvar("cl_reticle_item_normal"), DRAWFLAG_NORMAL);\r
+       }\r
+       if(cvar("cl_reticle_item_weapon"))\r
+       {\r
+               precache_pic("gfx/reticle_weapon");\r
+               if(reticle_type == 2 && f)\r
+                       drawpic(reticle_pos, "gfx/reticle_weapon", reticle_size, '1 1 1', f * cvar("cl_reticle_item_weapon"), DRAWFLAG_NORMAL);\r
+       }\r
+\r
        // screen effects\r
        if(cvar("hud_contents"))\r
        {\r
@@ -948,9 +992,62 @@ void CSQC_UpdateView(float w, float h)
                                string wcross_name;\r
                                float wcross_alpha, wcross_scale, wcross_blur, wcross_resolution;\r
 \r
-                               wcross_color_x = cvar("crosshair_color_red");\r
-                               wcross_color_y = cvar("crosshair_color_green");\r
-                               wcross_color_z = cvar("crosshair_color_blue");\r
+                               if(swallow_indicator && (cvar("crosshair_swallowindicator_color_red") || cvar("crosshair_swallowindicator_color_green") || cvar("crosshair_swallowindicator_color_blue")))\r
+                               {\r
+                                       wcross_color_x = cvar("crosshair_swallowindicator_color_red");\r
+                                       wcross_color_y = cvar("crosshair_swallowindicator_color_green");\r
+                                       wcross_color_z = cvar("crosshair_swallowindicator_color_blue");\r
+                               }\r
+                               else if(cvar("crosshair_color_by_health"))\r
+                               {\r
+                                       local float x = getstati(STAT_HEALTH);\r
+                                       \r
+                                       //x = red\r
+                                       //y = green\r
+                                       //z = blue\r
+                                       \r
+                                       wcross_color_z = 0;\r
+                                       \r
+                                       if(x > 200)\r
+                                       {\r
+                                               wcross_color_x = 0;\r
+                                               wcross_color_y = 1;\r
+                                       }\r
+                                       else if(x > 150)\r
+                                       {\r
+                                               wcross_color_x = 0.4 - (x-150)*0.02 * 0.4;\r
+                                               wcross_color_y = 0.9 + (x-150)*0.02 * 0.1;\r
+                                       }\r
+                                       else if(x > 100)\r
+                                       {\r
+                                               wcross_color_x = 1 - (x-100)*0.02 * 0.6;\r
+                                               wcross_color_y = 1 - (x-100)*0.02 * 0.1;\r
+                                               wcross_color_z = 1 - (x-100)*0.02;\r
+                                       }\r
+                                       else if(x > 50)\r
+                                       {\r
+                                               wcross_color_x = 1;\r
+                                               wcross_color_y = 1;\r
+                                               wcross_color_z = 0.2 + (x-50)*0.02 * 0.8;  \r
+                                       }\r
+                                       else if(x > 20)\r
+                                       {\r
+                                               wcross_color_x = 1;\r
+                                               wcross_color_y = (x-20)*90/27/100;\r
+                                               wcross_color_z = (x-20)*90/27/100 * 0.2;\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               wcross_color_x = 1;\r
+                                               wcross_color_y = 0;\r
+                                       }\r
+                               }\r
+                               else\r
+                               {\r
+                                       wcross_color_x = cvar("crosshair_color_red");\r
+                                       wcross_color_y = cvar("crosshair_color_green");\r
+                                       wcross_color_z = cvar("crosshair_color_blue");\r
+                               }\r
                                wcross_alpha = cvar("crosshair_color_alpha");\r
                                wcross_resolution = cvar("crosshair_size");\r
 \r
@@ -965,6 +1062,8 @@ void CSQC_UpdateView(float w, float h)
                                {\r
                                        wcross_scale = 1;\r
                                }\r
+                               if(swallow_indicator)\r
+                                       wcross_scale *= cvar("crosshair_swallowindicator_size");\r
 \r
                                if(cvar("crosshair_pickup"))\r
                                {\r
@@ -1072,9 +1171,6 @@ void CSQC_UpdateView(float w, float h)
                                CROSSHAIR_DRAW(wcross_resolution, wcross_name, wcross_alpha * f);\r
                                wcross_name_alpha_goal_prev = f;\r
 \r
-                               if(swallow_indicator)\r
-                                       wcross_size *= cvar("crosshair_swallowindicator_size");\r
-\r
                                // ring around crosshair representing bullets left in weapon clip\r
                                weapon_clipload = getstati(STAT_WEAPON_CLIPLOAD);\r
                                a = cvar("crosshair_ring_alpha");\r