]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
rifle ring with the new function
authorFruitieX <rasse@rasse-laptop.(none)>
Mon, 4 Oct 2010 16:24:57 +0000 (19:24 +0300)
committerFruitieX <rasse@rasse-laptop.(none)>
Mon, 4 Oct 2010 16:24:57 +0000 (19:24 +0300)
defaultXonotic.cfg
gfx/crosshair_ring.tga [new file with mode: 0644]
gfx/nex_ring.tga [deleted file]
qcsrc/client/Defs.qc
qcsrc/client/Main.qc
qcsrc/client/View.qc
qcsrc/common/constants.qh
qcsrc/server/cl_client.qc

index 8a23a83e6d38031eb2260fd1aeb561e6fb1b5f2e..946d0a440460edc7a9e1508d460e48f66e4ff0c1 100644 (file)
@@ -185,7 +185,6 @@ seta crosshair_campingrifle_color_green 0.5 "crosshair color green component to
 seta crosshair_campingrifle_color_blue 0.25    "crosshair color blue component to display when wielding the campingrifle"
 seta crosshair_campingrifle_color_alpha 1      "crosshair alpha value to display when wielding the campingrifle"
 seta crosshair_campingrifle_size 0.65  "crosshair size when wielding the campingrifle"
-seta crosshair_campingrifle_ring_size 1.5      "bullet counter ring size around campingrifle crosshair, multiple of crosshair_campingrifle_size"
 seta crosshair_tuba "" "crosshair to display when wielding the tuba"
 seta crosshair_tuba_color_red 0.85     "crosshair color red component to display when wielding the tuba"
 seta crosshair_tuba_color_green 0.5    "crosshair color green component to display when wielding the tuba"
@@ -198,10 +197,9 @@ seta crosshair_fireball_color_green 1.0    "crosshair color green component to disp
 seta crosshair_fireball_color_blue 0.2 "crosshair color blue component to display when wielding the fireball"
 seta crosshair_fireball_color_alpha 1  "crosshair alpha value to display when wielding the fireball"
 seta crosshair_fireball_size 1 "crosshair size when wielding the fireball"
-seta crosshair_nexvelocity_color_red 0.8
-seta crosshair_nexvelocity_color_green 0
-seta crosshair_nexvelocity_color_blue 0
-seta crosshair_nexvelocity_alpha 0.25
+seta crosshair_ring_size 3     "bullet counter ring size for Rifle, velocity ring for Nex"
+seta crosshair_campingrifle_bulletcounter_alpha 0.15
+seta crosshair_nexvelocity_alpha 0.15
 seta cl_reticle_stretch 0 "whether to stretch reticles so they fit the screen (brakes image proportions)"
 seta cl_reticle_item_nex 1 "draw aiming recticle for the nex weapon's zoom, 0 disables and values between 0 and 1 change alpha"
 seta cl_reticle_item_normal 1 "draw recticle when zooming with the zoom button, 0 disables and values between 0 and 1 change alpha"
diff --git a/gfx/crosshair_ring.tga b/gfx/crosshair_ring.tga
new file mode 100644 (file)
index 0000000..970ba15
Binary files /dev/null and b/gfx/crosshair_ring.tga differ
diff --git a/gfx/nex_ring.tga b/gfx/nex_ring.tga
deleted file mode 100644 (file)
index 22e3514..0000000
Binary files a/gfx/nex_ring.tga and /dev/null differ
index 1bd911aafb12b890f30152d8a1e17ead239fd11c..4e5380f33239755ecf51b85de28c4a73627c30bd 100644 (file)
@@ -263,3 +263,5 @@ float nex_scope;
 
 float nex_minvelocity;
 float nex_maxvelocity;
+
+float cr_maxbullets;
index 27b9284cd1e903e181490fa20470569bf62aa546..9feef58cc8738836ded4e6b168adf4c8e2e8786d 100644 (file)
@@ -1356,6 +1356,10 @@ float CSQC_Parse_TempEntity()
                        nex_maxvelocity = ReadShort();
                        bHandled = true;
                        break;
+               case TE_CSQC_CR_MAXBULLETS:
+                       cr_maxbullets = ReadByte();
+                       bHandled = true;
+                       break;
                default:
                        // No special logic for this temporary entity; return 0 so the engine can handle it
                        bHandled = false;
index 6fc94ca4346d1ebfa395510f9270ad9234ad841b..89681c32a6d2febb42a2e2490565eb7d63545489 100644 (file)
@@ -697,24 +697,6 @@ void CSQC_UpdateView(float w, float h)
                        if(cvar("viewsize") < 120)
                                CSQC_common_hud();
 
-
-               // ring around crosshair representing velocity-dependent damage for the nex
-               if (activeweapon == WEP_NEX)
-               {
-                       float f, a, curvel;
-                       vector rgb;
-
-                       rgb_x = cvar("crosshair_nexvelocity_color_red");
-                       rgb_y = cvar("crosshair_nexvelocity_color_green");
-                       rgb_z = cvar("crosshair_nexvelocity_color_blue");
-                       a = cvar("crosshair_nexvelocity_alpha");
-
-                       curvel = vlen('1 0 0' * pmove_vel_x + '0 1 0' * pmove_vel_y);
-                       f = bound(0, (curvel - nex_minvelocity) / (nex_maxvelocity - nex_minvelocity), 1);
-
-                       DrawCircleClippedPic('0.5 0 0' * vid_conwidth + '0 0.5 0' * vid_conheight, 0.1 * vid_conheight, "gfx/nex_ring.tga", f, rgb, a, DRAWFLAG_ADDITIVE);
-               }
-
                // crosshair goes VERY LAST
                if(!scoreboard_active && !camera_active && intermission != 2) {
                        // TrueAim check
@@ -842,17 +824,28 @@ void CSQC_UpdateView(float w, float h)
                                wcross_scale *= 1 - cvar("_menu_alpha");
                                wcross_alpha *= 1 - cvar("_menu_alpha");
 
+                               ring_scale = cvar("crosshair_ring_size");
+
+                               float f, a;
+                               wcross_size = drawgetimagesize(wcross_name) * wcross_scale;
                                // ring around crosshair representing bullets left in camping rifle clip
-                               if (activeweapon == WEP_CAMPINGRIFLE)
+                               if (activeweapon == WEP_CAMPINGRIFLE && cr_maxbullets)
                                {
-                                       ring_scale = cvar("crosshair_campingrifle_ring_size");
-                                       bullets = bound(0, getstati(STAT_BULLETS_LOADED), 4);
+                                       bullets = getstati(STAT_BULLETS_LOADED);
+                                       a = cvar("crosshair_campingrifle_bulletcounter_alpha");
+                                       f = bound(0, bullets / cr_maxbullets, 1);
+
+                                       DrawCircleClippedPic(wcross_origin, wcross_size_x * ring_scale, "gfx/crosshair_ring.tga", f, wcross_color, wcross_alpha * a, DRAWFLAG_ADDITIVE);
                                }
-                               else
-                                       bullets = 0;
+                               else if (activeweapon == WEP_NEX) // ring around crosshair representing velocity-dependent damage for the nex
+                               {
+                                       float curvel;
+                                       a = cvar("crosshair_nexvelocity_alpha");
+                                       curvel = vlen('1 0 0' * pmove_vel_x + '0 1 0' * pmove_vel_y);
+                                       f = bound(0, (curvel - nex_minvelocity) / (nex_maxvelocity - nex_minvelocity), 1);
 
-#define CROSSHAIR_DRAW_RING(i,j,sz,wcross_name,wcross_alpha) \
-                               drawpic(wcross_origin - ('0.5 0 0' * (sz * wcross_size_x * ring_scale + i * wcross_blur) + '0 0.5 0' * (sz * wcross_size_y * ring_scale + j * wcross_blur)), strcat("gfx/rifle_ring_", ftos(bullets)), sz * wcross_size * ring_scale, wcross_color, wcross_alpha, DRAWFLAG_NORMAL)
+                                       DrawCircleClippedPic(wcross_origin, wcross_size_x * ring_scale, "gfx/crosshair_ring.tga", f, wcross_color, wcross_alpha * a, DRAWFLAG_ADDITIVE);
+                               }
 
 #define CROSSHAIR_DO_BLUR(M,sz,wcross_name,wcross_alpha) \
                                do \
@@ -889,10 +882,6 @@ void CSQC_UpdateView(float w, float h)
                                }
 
                                wcross_size = drawgetimagesize(wcross_name) * wcross_scale;
-                               if(bullets)
-                               {
-                                       CROSSHAIR_DO_BLUR(CROSSHAIR_DRAW_RING, wcross_resolution, wcross_name, wcross_alpha);
-                               }
                                CROSSHAIR_DRAW(wcross_resolution, wcross_name, wcross_alpha * f);
                                wcross_name_alpha_goal_prev = f;
                        }
index ddd24ed6bc887322941d6503ab314f0f9a0b7ab4..6c16097fcbea21ccf9602797d6e099137a20b9e2 100644 (file)
@@ -62,6 +62,7 @@ const float TE_CSQC_WEAPONCOMPLAIN = 113;
 const float TE_CSQC_CAMPINGRIFLE_SCOPE = 115;
 const float TE_CSQC_NEX_SCOPE = 116;
 const float TE_CSQC_NEX_VELOCITY = 117;
+const float TE_CSQC_CR_MAXBULLETS = 118;
 
 const float RACE_NET_CHECKPOINT_HIT_QUALIFYING = 0; // byte checkpoint, short time, short recordtime, string recordholder
 const float RACE_NET_CHECKPOINT_CLEAR = 1;
index d5ffae1e50d33f416fa9d05a30185107eb183e2b..c601d92cda70d478dd0189c486807a252783f32d 100644 (file)
@@ -14,6 +14,13 @@ void send_CSQC_nexvelocity(entity e) {
        WriteShort(MSG_ONE, cvar("g_balance_nex_velocitydependent_maxspeed"));
 }
 
+void send_CSQC_cr_maxbullets(entity e) {
+       msg_entity = e;
+       WriteByte(MSG_ONE, SVC_TEMPENTITY);
+       WriteByte(MSG_ONE, TE_CSQC_CR_MAXBULLETS);
+       WriteByte(MSG_ONE, cvar("g_balance_campingrifle_magazinecapacity"));
+}
+
 void Announce(string snd) {
        WriteByte(MSG_ALL, SVC_TEMPENTITY);
        WriteByte(MSG_ALL, TE_CSQC_ANNOUNCE);
@@ -1607,6 +1614,7 @@ void ClientConnect (void)
                send_CSQC_teamnagger();
 
        send_CSQC_nexvelocity(self);
+       send_CSQC_cr_maxbullets(self);
 
        CheatInitClient();
 }