6 float shiftangle,
float wishangle,
float absolute_bestangle,
7 float absolute_prebestangle,
float absolute_overturnangle,
8 bool moving,
float hudangle)
40 float accelzone_left_startangle;
41 float accelzone_right_startangle;
42 float preaccelzone_left_startangle;
43 float preaccelzone_right_startangle;
44 float neutral_startangle;
45 float overturn_startangle;
47 float accelzone_offsetangle = absolute_overturnangle - absolute_bestangle;
48 float preaccelzone_offsetangle =
fabs(absolute_bestangle - absolute_prebestangle);
49 float neutral_offsetangle = 360;
50 float overturn_offsetangle = 360 - absolute_overturnangle * 2;
53 preaccelzone_offsetangle = 0;
56 float current_startangle = 0;
58 preaccelzone_right_startangle = current_startangle;
59 current_startangle += preaccelzone_offsetangle;
61 accelzone_right_startangle = current_startangle;
62 current_startangle += accelzone_offsetangle;
64 overturn_startangle = current_startangle;
65 current_startangle += overturn_offsetangle;
67 accelzone_left_startangle = current_startangle;
68 current_startangle += accelzone_offsetangle;
70 preaccelzone_left_startangle = current_startangle;
71 current_startangle += preaccelzone_offsetangle;
73 neutral_startangle = current_startangle;
74 neutral_offsetangle = 360 - current_startangle;
77 shiftangle += neutral_offsetangle * 0.5 - wishangle;
80 neutral_startangle += shiftangle;
81 accelzone_left_startangle += shiftangle;
82 accelzone_right_startangle += shiftangle;
83 preaccelzone_left_startangle += shiftangle;
84 preaccelzone_right_startangle += shiftangle;
85 overturn_startangle += shiftangle;
88 if (accelzone_offsetangle > 0)
90 accelzone_left_startangle, accelzone_offsetangle,
97 preaccelzone_left_startangle, preaccelzone_offsetangle,
104 if (accelzone_offsetangle > 0)
106 accelzone_right_startangle, accelzone_offsetangle,
113 preaccelzone_right_startangle, preaccelzone_offsetangle,
120 if (overturn_offsetangle > 0)
122 overturn_startangle, overturn_offsetangle,
129 if (neutral_offsetangle > 0)
131 neutral_startangle, neutral_offsetangle,
141 float angle,
vector line_size,
float arrow_size,
int num_dashes,
142 bool has_top_arrow,
bool has_bottom_arrow,
vector color,
float alpha,
float hudangle)
158 if (has_bottom_arrow)
165 if (num_dashes <= 0 ||
size.x <= 0 ||
size.y <= 0)
169 segment_size.y =
size.y / (
bound(1, num_dashes,
size.y) * 2 - 1);
171 for (
float i = 0; i <
size.y; i += segment_size.y * 2)
174 if (i + segment_size.y * 2 >=
size.y)
175 segment_size.y =
size.y - i;
202 vector direction_size_vertical;
204 direction_size_vertical.y =
panel_size.y + direction_size_vertical.x * 2;
205 direction_size_vertical.z = 0;
207 vector direction_size_horizontal;
209 direction_size_horizontal.y = direction_size_vertical.x;
210 direction_size_horizontal.z = 0;
213 && direction_size_vertical.x > 0
220 if (!fwd != opposite_direction)
221 indicator_direction = !indicator_direction;
225 if (direction_size_vertical.y > 0)
227 panel_pos -
eY * direction_size_horizontal.y +
eX * (indicator_direction ? -direction_size_vertical.x :
panel_size.x),
234 panel_pos +
eX * (indicator_direction ? 0 :
panel_size.x - direction_size_horizontal.x) -
eY * direction_size_horizontal.y,
#define drawfill(position, size, rgb, alpha, flag)
void StrafeHUD_DrawStrafeArrow(vector origin, float size, vector color, float alpha, bool flipped, float connection_width)
void StrafeHUD_DrawStrafeHUD(float startangle, float offsetangle, vector color, float alpha, int type, int gradient_type, float range)
float StrafeHUD_AngleToOffset(float angle, float range)
float StrafeHUD_ProjectOffset(float offset, float range, bool reverse)
const float DRAWFLAG_NORMAL
void StrafeHUD_DrawStrafeMeter(float shiftangle, float wishangle, float absolute_bestangle, float absolute_prebestangle, float absolute_overturnangle, bool moving, float hudangle)
void StrafeHUD_DrawAngleIndicatorLine(vector size, float offset, int num_dashes, vector color, float alpha)
void StrafeHUD_DrawDirectionIndicator(int direction, bool opposite_direction, bool fwd)
void StrafeHUD_DrawAngleIndicatorArrow(float size, float offset, vector line_size, vector color, float alpha, bool top)
void StrafeHUD_DrawAngleIndicator(float angle, vector line_size, float arrow_size, int num_dashes, bool has_top_arrow, bool has_bottom_arrow, vector color, float alpha, float hudangle)
void HUD_Panel_DrawProgressBar(vector theOrigin, vector theSize, string pic, float length_ratio, bool vertical, float baralign, vector theColor, float theAlpha, int drawflag)
vector autocvar_hud_panel_strafehud_bar_overturn_color
float autocvar_hud_panel_strafehud_bar_overturn_alpha
float autocvar_hud_panel_strafehud_direction_width
const int STRAFEHUD_GRADIENT_RIGHT
float autocvar_hud_panel_strafehud_direction_alpha
float autocvar_hud_panel_strafehud_bar_preaccel_alpha
const int STRAFEHUD_GRADIENT_NONE
float autocvar_hud_panel_strafehud_bar_neutral_alpha
const int STRAFEHUD_GRADIENT_BOTH
float autocvar_hud_panel_strafehud_direction_length
const int STRAFEHUD_STYLE_DRAWFILL
const int STRAFEHUD_GRADIENT_LEFT
int autocvar_hud_panel_strafehud_style
vector autocvar_hud_panel_strafehud_bar_neutral_color
bool autocvar_hud_panel_strafehud_bar_preaccel
const int STRAFEHUD_STYLE_PROGRESSBAR
vector autocvar_hud_panel_strafehud_bar_preaccel_color
vector autocvar_hud_panel_strafehud_direction_color
const int STRAFEHUD_DIRECTION_LEFT
float autocvar_hud_panel_strafehud_bar_accel_alpha
const int STRAFEHUD_DIRECTION_NONE
vector autocvar_hud_panel_strafehud_bar_accel_color