Merge branch 'terencehill/newpanelhud' into terencehill/speedpanel
authorterencehill <piuntn@gmail.com>
Sat, 4 Dec 2010 19:09:47 +0000 (20:09 +0100)
committerterencehill <piuntn@gmail.com>
Sat, 4 Dec 2010 19:21:37 +0000 (20:21 +0100)
Conflicts:
qcsrc/client/hud.qc
qcsrc/menu/xonotic/dialog_settings_misc.c

1  2 
_hud_descriptions.cfg
defaultXonotic.cfg
hud_luminos.cfg
hud_nexuiz.cfg
qcsrc/client/hud.qc
qcsrc/common/constants.qh

Simple merge
Simple merge
diff --cc hud_luminos.cfg
Simple merge
diff --cc hud_nexuiz.cfg
Simple merge
@@@ -4942,167 -5046,72 +5062,167 @@@ void HUD_Physics(void
                        break;
        }
  
 -      speed = strcat(ftos(floor( vlen(pmove_vel - pmove_vel_z * '0 0 1') * conversion_factor + 0.5 )), unit);
 -
 -      numsize_x = numsize_y = cvar("cl_showspeed_size");
 -      pos = (vid_conheight - numsize_y) * cvar("cl_showspeed_position");
 +      float max_speed = floor( cvar("hud_panel_physics_speed_max") * conversion_factor + 0.5 );
 +      if (autocvar__hud_configure)
 +              speed = floor( max_speed * 0.65 + 0.5 );
 +      else if(cvar("hud_panel_physics_speed_z"))
 +              speed = floor( vlen(pmove_vel) * conversion_factor + 0.5 );
 +      else
 +              speed = floor( vlen(pmove_vel - pmove_vel_z * '0 0 1') * conversion_factor + 0.5 );
  
 -      drawfont = hud_bigfont;
 -      drawstringcenter(eX + pos * eY, speed, numsize, '1 1 1', autocvar_hud_panel_fg_alpha * hud_fade_alpha, DRAWFLAG_NORMAL);
 +      //compute acceleration
 +      float acceleration, f;
 +      float max_acceleration = cvar("hud_panel_physics_acceleration_max");
 +      if (autocvar__hud_configure)
 +              acceleration = max_acceleration * 0.3;
 +      else
 +      {
 +              f = time - acc_prevtime;
 +              if(cvar("hud_panel_physics_acceleration_z"))
 +                      acceleration = (vlen(pmove_vel) - vlen(acc_prevspeed)) * (1 / f);
 +              else
 +                      acceleration = (vlen(pmove_vel - '0 0 1' * pmove_vel_z) - vlen(acc_prevspeed - '0 0 1' * acc_prevspeed_z)) * (1 / f);
 +              acc_prevspeed = pmove_vel;
 +              acc_prevtime = time;
  
 -      if (cvar("cl_showspeed_z") == 1) {
 -              zspeed = strcat(ftos(fabs(floor( pmove_vel_z * conversion_factor + 0.5 ))), unit);
 -              drawstringcenter(eX + pos * eY + numsize_y * eY, zspeed, numsize * 0.5, '1 1 1', autocvar_hud_panel_fg_alpha * hud_fade_alpha, DRAWFLAG_NORMAL);
 +              f = bound(0, f * 10, 1);
 +              acc_avg = acc_avg * (1 - f) + acceleration * f;
 +              acceleration = acc_avg / getstatf(STAT_MOVEVARS_MAXSPEED);
        }
  
 -      drawfont = hud_font;
 -}
 +      //compute layout
 +      drawfont = hud_bigfont;
 +      float baralign = cvar("hud_panel_physics_baralign");
 +      float progressbar = cvar("hud_panel_physics_progressbar");
 +      float panel_ar = mySize_x/mySize_y;
 +      vector speed_offset, acceleration_offset;
 +      if (panel_ar >= 5)
 +      {
 +              mySize_x *= 0.5;
 +              if (cvar("hud_panel_physics_flip"))
 +                      speed_offset_x = mySize_x;
 +              else
 +                      acceleration_offset_x = mySize_x;
 +      }
 +      else
 +      {
 +              mySize_y *= 0.5;
 +              if (cvar("hud_panel_physics_flip"))
 +                      speed_offset_y = mySize_y;
 +              else
 +                      acceleration_offset_y = mySize_y;
 +      }
 +      float speed_baralign, acceleration_baralign;
 +      if (cvar("hud_panel_physics_flip"))
 +      {
 +              acceleration_baralign = (baralign == 1 || baralign == 2);
 +              speed_baralign = (baralign == 1 || baralign == 3);
 +      }
 +      else
 +      {
 +              speed_baralign = (baralign == 1 || baralign == 2);
 +              acceleration_baralign = (baralign == 1 || baralign == 3);
 +      }
  
 -vector acc_prevspeed;
 -float acc_prevtime;
 -float acc_avg;
 +      //draw speed
 +      if(speed && progressbar)
 +      {
 +              HUD_Panel_GetProgressBarColor(speed);
-               HUD_Panel_DrawProgressBar(pos + speed_offset, mySize, speed/max_speed, 0, speed_baralign, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
++              HUD_Panel_DrawProgressBar(pos + speed_offset, mySize, "progressbar", speed/max_speed, 0, speed_baralign, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
 +      }
  
 -void HUD_ShowAcceleration(void)
 -{
 -      float acceleration, sz, scale, alpha, f;
 -      vector pos, mySize, rgb;
 +      vector tmp_offset, tmp_size;
 +      tmp_size_x = mySize_x * 0.75;
 +      tmp_size_y = mySize_y;
 +      if (speed_baralign)
 +              tmp_offset_x = mySize_x - tmp_size_x;
 +      //else
 +              //tmp_offset_x = 0;
 +      drawstring_aspect(pos + speed_offset + tmp_offset, ftos(speed), tmp_size, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
  
 -      f = time - acc_prevtime;
 -      if(cvar("cl_showacceleration_z"))
 -              acceleration = (vlen(pmove_vel) - vlen(acc_prevspeed)) * (1 / f);
 +      //draw speed unit
 +      if (speed_baralign)
 +              tmp_offset_x = 0;
        else
 -              acceleration = (vlen(pmove_vel - '0 0 1' * pmove_vel_z) - vlen(acc_prevspeed - '0 0 1' * acc_prevspeed_z)) * (1 / f);
 -      acc_prevspeed = pmove_vel;
 -      acc_prevtime = time;
 -
 -      f = bound(0, f * 10, 1);
 -      acc_avg = acc_avg * (1 - f) + acceleration * f;
 -      acceleration = acc_avg / getstatf(STAT_MOVEVARS_MAXSPEED);
 -      if (acceleration == 0)
 -              return;
 -
 -      sz = cvar("cl_showacceleration_size");
 -      scale = cvar("cl_showacceleration_scale");
 -      alpha = cvar("cl_showacceleration_alpha");
 -      if (cvar("cl_showacceleration_color_custom"))
 -              rgb = stov(cvar_string("cl_showacceleration_color"));
 -      else {
 -              if (acceleration < 0)
 -                      rgb = '1 .5 .5' - '0 .5 .5' * bound(0, -acceleration * 0.2, 1);
 -              else
 -                      rgb = '.5 1 .5' - '.5 0 .5' * bound(0, +acceleration * 0.2, 1);
 +              tmp_offset_x = tmp_size_x;
 +      if (cvar("hud_panel_physics_speed_unit_show"))
 +      {
 +              //tmp_offset_y = 0;
 +              tmp_size_x = mySize_x * (1 - 0.75);
 +              tmp_size_y = mySize_y * 0.4;
 +              drawstring_aspect(pos + speed_offset + tmp_offset, unit, tmp_size, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
        }
  
 -      mySize_x = vid_conwidth/2;
 -      mySize_y = sz;
 -      pos_y = cvar("cl_showacceleration_position") * vid_conheight - sz/2;
 -      if (acceleration > 0)
 +      //compute and draw top speed
 +      if (cvar("hud_panel_physics_topspeed"))
        {
 -              pos_x = mySize_x;
 -              HUD_Panel_DrawProgressBar(pos, mySize, "statusbar", acceleration * scale, 0, 0, rgb, alpha * autocvar_hud_panel_fg_alpha * hud_fade_alpha, DRAWFLAG_NORMAL);
 +              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) //hide top speed 0, it would be stupid
 +                              f = 0;
 +                      else
 +                      {
 +                              f = max(1, cvar("hud_panel_physics_topspeed_time"));
 +                              // divide by f to make it start from 1
 +                              f = cos( ((time - top_speed_time) / f) * PI/2 );
 +                      }
 +              }
 +              if (f > 0)
 +              {
 +                      //top speed progressbar peek
 +                      if(progressbar && speed < top_speed)
 +                      {
 +                              float peek_offset_x, peek_size_x;
 +                              if (speed_baralign)
 +                                      peek_offset_x = (1 - min(top_speed, max_speed)/max_speed) * mySize_x;
 +                              else
 +                                      peek_offset_x = min(top_speed, max_speed)/max_speed * mySize_x;
 +                              //if speed is not 0 the speed progressbar already fetched the color
 +                              if (speed == 0)
 +                                      HUD_Panel_GetProgressBarColor(speed);
 +                              peek_size_x = mySize_x * 0.01;
 +                              drawfill(pos + speed_offset + eX * (peek_offset_x - peek_size_x), eX * peek_size_x + eY * mySize_y, progressbar_color, f * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
 +                      }
 +
 +                      //top speed
 +                      tmp_offset_y = mySize_y * 0.4;
 +                      tmp_size_x = mySize_x * (1 - 0.75);
 +                      tmp_size_y = mySize_y - tmp_offset_y;
 +                      drawstring_aspect(pos + speed_offset + tmp_offset, ftos(top_speed), tmp_size, '1 0 0', f * panel_fg_alpha, DRAWFLAG_NORMAL);
 +              }
 +              else
 +                      top_speed = 0;
        }
 -      else
 +
 +      //draw acceleration
 +      if(acceleration && progressbar)
        {
 -              //pos_x = 0;
 -              HUD_Panel_DrawProgressBar(pos, mySize, "statusbar", -acceleration * scale, 0, 1, rgb, alpha * autocvar_hud_panel_fg_alpha * hud_fade_alpha, DRAWFLAG_NORMAL);
 +              if (acceleration < 0)
 +                      HUD_Panel_GetProgressBarColor(acceleration_neg);
 +              else
 +                      HUD_Panel_GetProgressBarColor(acceleration);
-               HUD_Panel_DrawProgressBar(pos + acceleration_offset, mySize, fabs(acceleration)/max_acceleration, 0, acceleration_baralign, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
++              HUD_Panel_DrawProgressBar(pos + acceleration_offset, mySize, "progressbar", fabs(acceleration)/max_acceleration, 0, acceleration_baralign, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
        }
 +      drawstring_aspect(pos + acceleration_offset, ftos_decimals(acceleration, 3), mySize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
 +      drawfont = hud_font;
  }
  
 +/*
 +==================
 +Main HUD system
 +==================
 +*/
 +
  void HUD_Reset (void)
  {
        // reset gametype specific icons
Simple merge