]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/hud/panel/physics.qc
take3: format 903 files
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / hud / panel / physics.qc
index f58b442bcf8e7f34dd65e010dc2c7c7841484a8a..400249eb5473b8fc67403d04ae74ca62abdb6340 100644 (file)
@@ -14,71 +14,72 @@ float acc_prevtime, acc_avg, top_speed, top_speed_time;
 float physics_update_time, discrete_speed, discrete_acceleration;
 void HUD_Physics()
 {
-       if(!autocvar__hud_configure)
-       {
-               if(!autocvar_hud_panel_physics) return;
-               if(spectatee_status == -1 && (autocvar_hud_panel_physics == 1 || autocvar_hud_panel_physics == 3)) return;
-               if(autocvar_hud_panel_physics == 3 && !(gametype == MAPINFO_TYPE_RACE || gametype == MAPINFO_TYPE_CTS)) return;
+       if (!autocvar__hud_configure) {
+               if (!autocvar_hud_panel_physics) { return; }
+               if (spectatee_status == -1 && (autocvar_hud_panel_physics == 1 || autocvar_hud_panel_physics == 3)) { return; }
+               if (autocvar_hud_panel_physics == 3 && !(gametype == MAPINFO_TYPE_RACE || gametype == MAPINFO_TYPE_CTS)) { return; }
        }
 
        HUD_Panel_LoadCvars();
 
        draw_beginBoldFont();
 
-       if (autocvar_hud_panel_physics_dynamichud)
+       if (autocvar_hud_panel_physics_dynamichud) {
                HUD_Scale_Enable();
-       else
+       } else {
                HUD_Scale_Disable();
+       }
        HUD_Panel_DrawBg();
-       if(panel_bg_padding)
-       {
+       if (panel_bg_padding) {
                panel_pos += '1 1 0' * panel_bg_padding;
                panel_size -= '2 2 0' * panel_bg_padding;
        }
 
        float acceleration_progressbar_scale = 0;
-       if(autocvar_hud_panel_physics_progressbar && autocvar_hud_panel_physics_acceleration_progressbar_scale > 1)
+       if (autocvar_hud_panel_physics_progressbar && autocvar_hud_panel_physics_acceleration_progressbar_scale > 1) {
                acceleration_progressbar_scale = autocvar_hud_panel_physics_acceleration_progressbar_scale;
+       }
 
        float text_scale;
-       if (autocvar_hud_panel_physics_text_scale <= 0)
+       if (autocvar_hud_panel_physics_text_scale <= 0) {
                text_scale = 1;
-       else
+       } else {
                text_scale = min(autocvar_hud_panel_physics_text_scale, 1);
+       }
 
-       //compute speed
+       // compute speed
        float speed, conversion_factor = GetSpeedUnitFactor(autocvar_hud_panel_physics_speed_unit);
        string unit = GetSpeedUnit(autocvar_hud_panel_physics_speed_unit);
        vector vel = (csqcplayer ? csqcplayer.velocity : pmove_vel);
 
-       float max_speed = floor( autocvar_hud_panel_physics_speed_max * conversion_factor + 0.5 );
-       if (autocvar__hud_configure)
-               speed = floor( max_speed * 0.65 + 0.5 );
-       else if(autocvar_hud_panel_physics_speed_vertical)
-               speed = floor( vlen(vel) * conversion_factor + 0.5 );
-       else
-               speed = floor( vlen(vel - vel.z * '0 0 1') * conversion_factor + 0.5 );
+       float max_speed = floor(autocvar_hud_panel_physics_speed_max * conversion_factor + 0.5);
+       if (autocvar__hud_configure) {
+               speed = floor(max_speed * 0.65 + 0.5);
+       } else if (autocvar_hud_panel_physics_speed_vertical) {
+               speed = floor(vlen(vel) * conversion_factor + 0.5);
+       } else {
+               speed = floor(vlen(vel - vel.z * '0 0 1') * conversion_factor + 0.5);
+       }
 
-       //compute acceleration
+       // compute acceleration
        float acceleration, f;
-       if (autocvar__hud_configure)
+       if (autocvar__hud_configure) {
                acceleration = autocvar_hud_panel_physics_acceleration_max * 0.3;
-       else
-       {
+       } else {
                // 1 m/s = 0.0254 qu/s; 1 g = 9.80665 m/s^2
                f = time - acc_prevtime;
-               if(autocvar_hud_panel_physics_acceleration_vertical)
+               if (autocvar_hud_panel_physics_acceleration_vertical) {
                        acceleration = (vlen(vel) - vlen(acc_prevspeed));
-               else
+               } else {
                        acceleration = (vlen(vel - '0 0 1' * vel.z) - vlen(acc_prevspeed - '0 0 1' * acc_prevspeed.z));
+               }
 
                acceleration = acceleration * (1 / max(0.0001, f)) * (0.0254 / 9.80665);
 
                acc_prevspeed = vel;
                acc_prevtime = time;
 
-               if(autocvar_hud_panel_physics_acceleration_movingaverage)
-               {
+               if (autocvar_hud_panel_physics_acceleration_movingaverage) {
                        f = bound(0, f * 10, 1);
                        acc_avg = acc_avg * (1 - f) + acceleration * f;
                        acceleration = acc_avg;
@@ -86,79 +87,78 @@ void HUD_Physics()
        }
 
        const int acc_decimals = 2;
-       if(time > physics_update_time)
-       {
+       if (time > physics_update_time) {
                // workaround for ftos_decimals returning a negative 0
-               if(discrete_acceleration > -1 / POW(10, acc_decimals) && discrete_acceleration < 0)
+               if (discrete_acceleration > -1 / POW(10, acc_decimals) && discrete_acceleration < 0) {
                        discrete_acceleration = 0;
+               }
                discrete_acceleration = acceleration;
                discrete_speed = speed;
                physics_update_time += autocvar_hud_panel_physics_update_interval;
-               if(physics_update_time < time)
+               if (physics_update_time < time) {
                        physics_update_time = time + autocvar_hud_panel_physics_update_interval;
+               }
        }
 
-       //compute layout
-       float panel_ar = panel_size.x/panel_size.y;
+       // compute layout
+       float panel_ar = panel_size.x / panel_size.y;
        vector speed_offset = '0 0 0', acceleration_offset = '0 0 0';
-       if (panel_ar >= 5 && !acceleration_progressbar_scale)
-       {
+       if (panel_ar >= 5 && !acceleration_progressbar_scale) {
                panel_size.x *= 0.5;
-               if (autocvar_hud_panel_physics_flip)
+               if (autocvar_hud_panel_physics_flip) {
                        speed_offset.x = panel_size.x;
-               else
+               } else {
                        acceleration_offset.x = panel_size.x;
-       }
-       else
-       {
+               }
+       } else {
                panel_size.y *= 0.5;
-               if (autocvar_hud_panel_physics_flip)
+               if (autocvar_hud_panel_physics_flip) {
                        speed_offset.y = panel_size.y;
-               else
+               } else {
                        acceleration_offset.y = panel_size.y;
+               }
        }
        int speed_baralign, acceleration_baralign;
-       if (autocvar_hud_panel_physics_baralign == 1)
+       if (autocvar_hud_panel_physics_baralign == 1) {
                acceleration_baralign = speed_baralign = 1;
-    else if(autocvar_hud_panel_physics_baralign == 4)
+       } else if (autocvar_hud_panel_physics_baralign == 4) {
                acceleration_baralign = speed_baralign = 2;
-       else if (autocvar_hud_panel_physics_flip)
-       {
+       } else if (autocvar_hud_panel_physics_flip) {
                acceleration_baralign = (autocvar_hud_panel_physics_baralign == 2);
                speed_baralign = (autocvar_hud_panel_physics_baralign == 3);
-       }
-       else
-       {
+       } else {
                speed_baralign = (autocvar_hud_panel_physics_baralign == 2);
                acceleration_baralign = (autocvar_hud_panel_physics_baralign == 3);
        }
-       if (autocvar_hud_panel_physics_acceleration_progressbar_mode == 0)
-               acceleration_baralign = 3; //override hud_panel_physics_baralign value for acceleration
-
-       //draw speed
-       if(speed)
-       if(autocvar_hud_panel_physics_progressbar == 1 || autocvar_hud_panel_physics_progressbar == 2)
-               HUD_Panel_DrawProgressBar(panel_pos + speed_offset, panel_size, "progressbar", speed/max_speed, 0, speed_baralign, autocvar_hud_progressbar_speed_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+       if (autocvar_hud_panel_physics_acceleration_progressbar_mode == 0) {
+               acceleration_baralign = 3; // override hud_panel_physics_baralign value for acceleration
+       }
+       // draw speed
+       if (speed) {
+               if (autocvar_hud_panel_physics_progressbar == 1 || autocvar_hud_panel_physics_progressbar == 2) {
+                       HUD_Panel_DrawProgressBar(panel_pos + speed_offset, panel_size, "progressbar", speed / max_speed, 0, speed_baralign, autocvar_hud_progressbar_speed_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+               }
+       }
        vector tmp_offset = '0 0 0', tmp_size = '0 0 0';
-       if (autocvar_hud_panel_physics_text == 1 || autocvar_hud_panel_physics_text == 2)
-       {
+       if (autocvar_hud_panel_physics_text == 1 || autocvar_hud_panel_physics_text == 2) {
                tmp_size.x = panel_size.x * 0.75;
                tmp_size.y = panel_size.y * text_scale;
-               if (speed_baralign)
+               if (speed_baralign) {
                        tmp_offset.x = panel_size.x - tmp_size.x;
-               //else
-                       //tmp_offset_x = 0;
+               }
+               // else
+               // tmp_offset_x = 0;
                tmp_offset.y = (panel_size.y - tmp_size.y) / 2;
                drawstring_aspect(panel_pos + speed_offset + tmp_offset, ftos(discrete_speed), tmp_size, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
 
-               //draw speed unit
-               if (speed_baralign)
+               // draw speed unit
+               if (speed_baralign) {
                        tmp_offset.x = 0;
-               else
+               } else {
                        tmp_offset.x = tmp_size.x;
-               if (autocvar_hud_panel_physics_speed_unit_show)
-               {
-                       //tmp_offset_y = 0;
+               }
+               if (autocvar_hud_panel_physics_speed_unit_show) {
+                       // tmp_offset_y = 0;
                        tmp_size.x = panel_size.x * (1 - 0.75);
                        tmp_size.y = panel_size.y * 0.4 * text_scale;
                        tmp_offset.y = (panel_size.y * 0.4 - tmp_size.y) / 2;
@@ -166,104 +166,97 @@ void HUD_Physics()
                }
        }
 
-       //compute and draw top speed
-       if (autocvar_hud_panel_physics_topspeed)
-       if (autocvar_hud_panel_physics_text == 1 || autocvar_hud_panel_physics_text == 2)
-       {
-               if (autocvar__hud_configure)
-               {
-                       top_speed = floor( max_speed * 0.75 + 0.5 );
-                       f = 1;
-               }
-               else
-               {
-                       if (speed >= top_speed)
-                       {
-                               top_speed = speed;
-                               top_speed_time = time;
-                       }
-                       if (top_speed != 0)
-                       {
-                               f = max(1, autocvar_hud_panel_physics_topspeed_time);
-                               // divide by f to make it start from 1
-                               f = cos( ((time - top_speed_time) / f) * PI/2 );
-                       }
-            else //hide top speed 0, it would be stupid
-                               f = 0;
-               }
-               if (f > 0)
-               {
-                       //top speed progressbar peak
-                       if(speed < top_speed)
-                       if(autocvar_hud_panel_physics_progressbar == 1 || autocvar_hud_panel_physics_progressbar == 2)
-                       {
-                               float peak_offsetX;
-                               vector peak_size = '0 0 0';
-                               if (speed_baralign == 0)
-                                       peak_offsetX = min(top_speed, max_speed)/max_speed * panel_size.x;
-                else if (speed_baralign == 1)
-                                       peak_offsetX = (1 - min(top_speed, max_speed)/max_speed) * panel_size.x;
-                else // if (speed_baralign == 2)
-                    peak_offsetX = min(top_speed, max_speed)/max_speed * panel_size.x * 0.5;
-                               peak_size.x = floor(panel_size.x * 0.01 + 1.5);
-                peak_size.y = panel_size.y;
-                if (speed_baralign == 2) // draw two peaks, on both sides
-                {
-                    drawfill(panel_pos + speed_offset + eX * (0.5 * panel_size.x + peak_offsetX - peak_size.x), peak_size, autocvar_hud_progressbar_speed_color, f * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
-                    drawfill(panel_pos + speed_offset + eX * (0.5 * panel_size.x - peak_offsetX + peak_size.x), peak_size, autocvar_hud_progressbar_speed_color, f * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
-                }
-                else
-                    drawfill(panel_pos + speed_offset + eX * (peak_offsetX - peak_size.x), peak_size, autocvar_hud_progressbar_speed_color, f * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+       // compute and draw top speed
+       if (autocvar_hud_panel_physics_topspeed) {
+               if (autocvar_hud_panel_physics_text == 1 || autocvar_hud_panel_physics_text == 2) {
+                       if (autocvar__hud_configure) {
+                               top_speed = floor(max_speed * 0.75 + 0.5);
+                               f = 1;
+                       } else {
+                               if (speed >= top_speed) {
+                                       top_speed = speed;
+                                       top_speed_time = time;
+                               }
+                               if (top_speed != 0) {
+                                       f = max(1, autocvar_hud_panel_physics_topspeed_time);
+                                       // divide by f to make it start from 1
+                                       f = cos(((time - top_speed_time) / f) * PI / 2);
+                               } else { // hide top speed 0, it would be stupid
+                                       f = 0;
+                               }
                        }
+                       if (f > 0) {
+                               // top speed progressbar peak
+                               if (speed < top_speed) {
+                                       if (autocvar_hud_panel_physics_progressbar == 1 || autocvar_hud_panel_physics_progressbar == 2) {
+                                               float peak_offsetX;
+                                               vector peak_size = '0 0 0';
+                                               if (speed_baralign == 0) {
+                                                       peak_offsetX = min(top_speed, max_speed) / max_speed * panel_size.x;
+                                               } else if (speed_baralign == 1) {
+                                                       peak_offsetX = (1 - min(top_speed, max_speed) / max_speed) * panel_size.x;
+                                               } else { // if (speed_baralign == 2)
+                                                       peak_offsetX = min(top_speed, max_speed) / max_speed * panel_size.x * 0.5;
+                                               }
+                                               peak_size.x = floor(panel_size.x * 0.01 + 1.5);
+                                               peak_size.y = panel_size.y;
+                                               if (speed_baralign == 2) { // draw two peaks, on both sides
+                                                       drawfill(panel_pos + speed_offset + eX * (0.5 * panel_size.x + peak_offsetX - peak_size.x), peak_size, autocvar_hud_progressbar_speed_color, f * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                                                       drawfill(panel_pos + speed_offset + eX * (0.5 * panel_size.x - peak_offsetX + peak_size.x), peak_size, autocvar_hud_progressbar_speed_color, f * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                                               } else {
+                                                       drawfill(panel_pos + speed_offset + eX * (peak_offsetX - peak_size.x), peak_size, autocvar_hud_progressbar_speed_color, f * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                                               }
+                                       }
+                               }
 
-                       //top speed
-                       tmp_offset.y = panel_size.y * 0.4;
-                       tmp_size.x = panel_size.x * (1 - 0.75);
-                       tmp_size.y = (panel_size.y - tmp_offset.y) * text_scale;
-                       tmp_offset.y += (panel_size.y - tmp_offset.y - tmp_size.y) / 2;
-                       drawstring_aspect(panel_pos + speed_offset + tmp_offset, ftos(top_speed), tmp_size, '1 0 0', f * panel_fg_alpha, DRAWFLAG_NORMAL);
+                               // top speed
+                               tmp_offset.y = panel_size.y * 0.4;
+                               tmp_size.x = panel_size.x * (1 - 0.75);
+                               tmp_size.y = (panel_size.y - tmp_offset.y) * text_scale;
+                               tmp_offset.y += (panel_size.y - tmp_offset.y - tmp_size.y) / 2;
+                               drawstring_aspect(panel_pos + speed_offset + tmp_offset, ftos(top_speed), tmp_size, '1 0 0', f * panel_fg_alpha, DRAWFLAG_NORMAL);
+                       } else {
+                               top_speed = 0;
+                       }
                }
-               else
-                       top_speed = 0;
        }
 
-       //draw acceleration
-       if(acceleration)
-       if(autocvar_hud_panel_physics_progressbar == 1 || autocvar_hud_panel_physics_progressbar == 3)
-       {
-               vector progressbar_color;
-               if(acceleration < 0)
-                       progressbar_color = autocvar_hud_progressbar_acceleration_neg_color;
-               else
-                       progressbar_color = autocvar_hud_progressbar_acceleration_color;
+       // draw acceleration
+       if (acceleration) {
+               if (autocvar_hud_panel_physics_progressbar == 1 || autocvar_hud_panel_physics_progressbar == 3) {
+                       vector progressbar_color;
+                       if (acceleration < 0) {
+                               progressbar_color = autocvar_hud_progressbar_acceleration_neg_color;
+                       } else {
+                               progressbar_color = autocvar_hud_progressbar_acceleration_color;
+                       }
 
-               f = acceleration/autocvar_hud_panel_physics_acceleration_max;
-               if (autocvar_hud_panel_physics_acceleration_progressbar_nonlinear)
-                       f = (f >= 0 ? sqrt(f) : -sqrt(-f));
+                       f = acceleration / autocvar_hud_panel_physics_acceleration_max;
+                       if (autocvar_hud_panel_physics_acceleration_progressbar_nonlinear) {
+                               f = (f >= 0 ? sqrt(f) : -sqrt(-f));
+                       }
 
-               if (acceleration_progressbar_scale) // allow progressbar to go out of panel bounds
-               {
-                       tmp_size = acceleration_progressbar_scale * panel_size.x * eX + panel_size.y * eY;
+                       if (acceleration_progressbar_scale) { // allow progressbar to go out of panel bounds
+                               tmp_size = acceleration_progressbar_scale * panel_size.x * eX + panel_size.y * eY;
 
-                       if (acceleration_baralign == 1)
-                               tmp_offset.x = panel_size.x - tmp_size.x;
-                       else if (acceleration_baralign == 2 || acceleration_baralign == 3)
-                               tmp_offset.x = (panel_size.x - tmp_size.x) / 2;
-                       else
-                               tmp_offset.x = 0;
-                       tmp_offset.y = 0;
-               }
-               else
-               {
-                       tmp_size = panel_size;
-                       tmp_offset = '0 0 0';
-               }
+                               if (acceleration_baralign == 1) {
+                                       tmp_offset.x = panel_size.x - tmp_size.x;
+                               } else if (acceleration_baralign == 2 || acceleration_baralign == 3) {
+                                       tmp_offset.x = (panel_size.x - tmp_size.x) / 2;
+                               } else {
+                                       tmp_offset.x = 0;
+                               }
+                               tmp_offset.y = 0;
+                       } else {
+                               tmp_size = panel_size;
+                               tmp_offset = '0 0 0';
+                       }
 
-               HUD_Panel_DrawProgressBar(panel_pos + acceleration_offset + tmp_offset, tmp_size, "accelbar", f, 0, acceleration_baralign, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                       HUD_Panel_DrawProgressBar(panel_pos + acceleration_offset + tmp_offset, tmp_size, "accelbar", f, 0, acceleration_baralign, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+               }
        }
 
-       if(autocvar_hud_panel_physics_text == 1 || autocvar_hud_panel_physics_text == 3)
-       {
+       if (autocvar_hud_panel_physics_text == 1 || autocvar_hud_panel_physics_text == 3) {
                tmp_size.x = panel_size.x;
                tmp_size.y = panel_size.y * text_scale;
                tmp_offset.x = 0;