From: FruitieX Date: Mon, 4 Oct 2010 16:24:57 +0000 (+0300) Subject: rifle ring with the new function X-Git-Tag: xonotic-v0.1.0preview~307^2~34 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=3a234f16cd5087efe530c593dcc19b7c8c4d4647;p=xonotic%2Fxonotic-data.pk3dir.git rifle ring with the new function --- diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index 8a23a83e6..946d0a440 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -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 index 000000000..970ba1562 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 index 22e3514cf..000000000 Binary files a/gfx/nex_ring.tga and /dev/null differ diff --git a/qcsrc/client/Defs.qc b/qcsrc/client/Defs.qc index 1bd911aaf..4e5380f33 100644 --- a/qcsrc/client/Defs.qc +++ b/qcsrc/client/Defs.qc @@ -263,3 +263,5 @@ float nex_scope; float nex_minvelocity; float nex_maxvelocity; + +float cr_maxbullets; diff --git a/qcsrc/client/Main.qc b/qcsrc/client/Main.qc index 27b9284cd..9feef58cc 100644 --- a/qcsrc/client/Main.qc +++ b/qcsrc/client/Main.qc @@ -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; diff --git a/qcsrc/client/View.qc b/qcsrc/client/View.qc index 6fc94ca43..89681c32a 100644 --- a/qcsrc/client/View.qc +++ b/qcsrc/client/View.qc @@ -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; } diff --git a/qcsrc/common/constants.qh b/qcsrc/common/constants.qh index ddd24ed6b..6c16097fc 100644 --- a/qcsrc/common/constants.qh +++ b/qcsrc/common/constants.qh @@ -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; diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index d5ffae1e5..c601d92cd 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -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(); }