float checkfail[16];
+float rainbow_last_flicker;
+vector rainbow_prev_color;
+
#define BUTTON_3 4
#define BUTTON_4 8
float cl_notice_run();
string wcross_wep = "", wcross_name;
float wcross_scale, wcross_blur;
- if (autocvar_crosshair_per_weapon || autocvar_crosshair_color_per_weapon) {
+ if (autocvar_crosshair_per_weapon || (autocvar_crosshair_color_special == 1))
+ {
e = get_weaponinfo(switchingweapon);
if (e && e.netname != "")
{
}
}
}
- if(wcross_wep != "" && autocvar_crosshair_color_per_weapon)
- wcross_color = stov(cvar_string(strcat("crosshair_", wcross_wep, "_color")));
- else if(autocvar_crosshair_color_by_health)
- {
- float x = getstati(STAT_HEALTH);
- //x = red
- //y = green
- //z = blue
-
- wcross_color_z = 0;
+ //print(sprintf("crosshair style: %s\n", wcross_style));
+ wcross_name = strcat("gfx/crosshair", wcross_style);
- if(x > 200)
- {
- wcross_color_x = 0;
- wcross_color_y = 1;
- }
- else if(x > 150)
- {
- wcross_color_x = 0.4 - (x-150)*0.02 * 0.4;
- wcross_color_y = 0.9 + (x-150)*0.02 * 0.1;
- }
- else if(x > 100)
- {
- wcross_color_x = 1 - (x-100)*0.02 * 0.6;
- wcross_color_y = 1 - (x-100)*0.02 * 0.1;
- wcross_color_z = 1 - (x-100)*0.02;
- }
- else if(x > 50)
+ // MAIN CROSSHAIR COLOR DECISION
+ switch(autocvar_crosshair_color_special)
+ {
+ case 1: // crosshair_color_per_weapon
{
- wcross_color_x = 1;
- wcross_color_y = 1;
- wcross_color_z = 0.2 + (x-50)*0.02 * 0.8;
+ if(wcross_wep != "")
+ {
+ wcross_color = stov(cvar_string(sprintf("crosshair_%s_color", wcross_wep)));
+ break;
+ }
+ else { goto normalcolor; }
}
- else if(x > 20)
+
+ case 2: // crosshair_color_by_health
{
- wcross_color_x = 1;
- wcross_color_y = (x-20)*90/27/100;
- wcross_color_z = (x-20)*90/27/100 * 0.2;
+ float x = getstati(STAT_HEALTH);
+
+ //x = red
+ //y = green
+ //z = blue
+
+ wcross_color_z = 0;
+
+ if(x > 200)
+ {
+ wcross_color_x = 0;
+ wcross_color_y = 1;
+ }
+ else if(x > 150)
+ {
+ wcross_color_x = 0.4 - (x-150)*0.02 * 0.4;
+ wcross_color_y = 0.9 + (x-150)*0.02 * 0.1;
+ }
+ else if(x > 100)
+ {
+ wcross_color_x = 1 - (x-100)*0.02 * 0.6;
+ wcross_color_y = 1 - (x-100)*0.02 * 0.1;
+ wcross_color_z = 1 - (x-100)*0.02;
+ }
+ else if(x > 50)
+ {
+ wcross_color_x = 1;
+ wcross_color_y = 1;
+ wcross_color_z = 0.2 + (x-50)*0.02 * 0.8;
+ }
+ else if(x > 20)
+ {
+ wcross_color_x = 1;
+ wcross_color_y = (x-20)*90/27/100;
+ wcross_color_z = (x-20)*90/27/100 * 0.2;
+ }
+ else
+ {
+ wcross_color_x = 1;
+ wcross_color_y = 0;
+ }
+ break;
}
- else
+
+ case 3: // crosshair_color_rainbow
{
- wcross_color_x = 1;
- wcross_color_y = 0;
+ if(time >= rainbow_last_flicker)
+ {
+ rainbow_prev_color = randomvec() * autocvar_crosshair_color_special_rainbow_brightness;
+ rainbow_last_flicker = time + autocvar_crosshair_color_special_rainbow_delay;
+ }
+ wcross_color = rainbow_prev_color;
+ break;
}
+ :normalcolor
+ default: { wcross_color = stov(autocvar_crosshair_color); break; }
}
- else
- wcross_color = stov(autocvar_crosshair_color);
-
- wcross_name = strcat("gfx/crosshair", wcross_style);
if(autocvar_crosshair_effect_scalefade)
{
if(autocvar_crosshair_hitindication)
{
- vector hitindication_color = ((autocvar_crosshair_color_per_weapon) ? stov(autocvar_crosshair_hitindication_per_weapon_color) : stov(autocvar_crosshair_hitindication_color));
+ vector hitindication_color = ((autocvar_crosshair_color_special == 1) ? stov(autocvar_crosshair_hitindication_per_weapon_color) : stov(autocvar_crosshair_hitindication_color));
if(hitindication_crosshair_time < hit_time)
{
if(shottype == SHOTTYPE_HITTEAM)
wcross_scale /= autocvar_crosshair_hittest; // is not queried if hittest is 0
- f = autocvar_crosshair_effect_speed;
- if(f < 0)
- f *= -2 * g_weaponswitchdelay; // anim starts when weapon has been lowered and new weapon comes up
+ f = fabs(autocvar_crosshair_effect_time);
if(wcross_scale != wcross_scale_goal_prev || wcross_alpha != wcross_alpha_goal_prev || wcross_color != wcross_color_goal_prev)
{
wcross_changedonetime = time + f;
}
// if in weapon switch animation, fade ring out/in
- if(g_weaponswitchdelay > 0)
+ if(fabs(autocvar_crosshair_effect_time) > 0)
{
- f = (time - wcross_name_changestarttime) / g_weaponswitchdelay;
+ f = (time - wcross_name_changestarttime) / wcross_changedonetime;
if(f > 0 && f < 2)
ring_alpha *= fabs(1 - f);
}