From: terencehill Date: Sat, 4 Dec 2010 19:09:47 +0000 (+0100) Subject: Merge branch 'terencehill/newpanelhud' into terencehill/speedpanel X-Git-Tag: xonotic-v0.5.0~362^2~4 X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=2fb4172213439edb17c1d116747c75f9540f2017 Merge branch 'terencehill/newpanelhud' into terencehill/speedpanel Conflicts: qcsrc/client/hud.qc qcsrc/menu/xonotic/dialog_settings_misc.c --- 2fb4172213439edb17c1d116747c75f9540f2017 diff --cc qcsrc/client/hud.qc index 4a65b2c17,ff2837841..b43e6268b --- a/qcsrc/client/hud.qc +++ b/qcsrc/client/hud.qc @@@ -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