HUD_Write_PanelCvar_q("_ammo_color");
HUD_Write_PanelCvar_q("_ammo_alpha");
HUD_Write_PanelCvar_q("_aspect");
+ HUD_Write_PanelCvar_q("_timeout");
+ HUD_Write_PanelCvar_q("_timeout_effect");
break;
case HUD_PANEL_AMMO:
HUD_Write_PanelCvar_q("_onlycurrent");
#define HUD_Panel_DrawBg(alpha)\
if(panel_bg != "0")\
draw_BorderPicture(panel_pos - '1 1 0' * panel_bg_border, panel_bg, panel_size + '1 1 0' * 2 * panel_bg_border, panel_bg_color, panel_bg_alpha * alpha, '1 1 0' * (panel_bg_border/BORDER_MULTIPLIER));\
-if(highlightedPanel_prev == hud_configure_active_panel && autocvar__hud_configure)\
+if(highlightedPanel == hud_configure_active_panel && autocvar__hud_configure)\
{\
HUD_Panel_HlBorder(panel_bg_border + 1.5 * hlBorderSize, '0 0.5 1', 0.25 * (1 - autocvar__menu_alpha) * alpha);\
} ENDS_WITH_CURLY_BRACE
//basically the same code of draw_ButtonPicture and draw_VertButtonPicture for the menu
- void HUD_Panel_DrawProgressBar(vector theOrigin, vector theSize, string pic, float lenght_ratio, float vertical, float right_align, vector theColor, float theAlpha, float drawflag)
+ void HUD_Panel_DrawProgressBar(vector theOrigin, vector theSize, string pic, float length_ratio, float vertical, float baralign, vector theColor, float theAlpha, float drawflag)
{
- if(lenght_ratio <= 0 || !theAlpha)
+ if(length_ratio <= 0 || !theAlpha)
return;
- if(lenght_ratio > 1)
- lenght_ratio = 1;
+ if(length_ratio > 1)
+ length_ratio = 1;
vector square;
vector width, height;
pic = "gfx/hud/default/statusbar_vertical";
}
- if (right_align)
- theOrigin_y += (1 - lenght_ratio) * theSize_y;
- theSize_y *= lenght_ratio;
+ if (baralign == 1) // bottom align
+ theOrigin_y += (1 - length_ratio) * theSize_y;
+ else if (baralign == 2) // center align
+ theOrigin_y += 0.5 * (1 - length_ratio) * theSize_y;
+ theSize_y *= length_ratio;
vector bH;
width = eX * theSize_x;
pic = "gfx/hud/default/statusbar";
}
- if (right_align)
- theOrigin_x += (1 - lenght_ratio) * theSize_x;
- theSize_x *= lenght_ratio;
+ if (baralign == 1) // right align
+ theOrigin_x += (1 - length_ratio) * theSize_x;
+ else if (baralign == 2) // center align
+ theOrigin_x += 0.5 * (1 - length_ratio) * theSize_x;
+ theSize_x *= length_ratio;
vector bW;
width = eX * theSize_x;
cvar_set(strcat("hud_panel_", panel_name, "_pos"), s);
}
-float mouseClicked;
-float prevMouseClicked; // previous state
-float prevMouseClickedTime; // time during previous mouse click, to check for doubleclicks
-vector prevMouseClickedPos; // pos during previous mouse click, to check for doubleclicks
-
float pressed_key_time;
+vector highlightedPanel_initial_pos, highlightedPanel_initial_size;
void HUD_Panel_Arrow_Action(float nPrimary)
{
- if (highlightedPanel_prev == -1 || mouseClicked)
+ if (highlightedPanel == -1)
return;
hud_configure_checkcollisions = (!(hudShiftState & S_CTRL) && autocvar_hud_configure_checkcollisions);
step = (step / 64) * (1 + 2 * (time - pressed_key_time));
}
- highlightedPanel = highlightedPanel_prev;
-
HUD_Panel_UpdatePosSizeForId(highlightedPanel);
- vector prev_pos, prev_size;
- prev_pos = panel_pos;
- prev_size = panel_size;
+ highlightedPanel_initial_pos = panel_pos;
+ highlightedPanel_initial_size = panel_size;
if (hudShiftState & S_ALT) // resize
{
HUD_Panel_UpdatePosSizeForId(highlightedPanel);
- if (prev_pos != panel_pos || prev_size != panel_size)
+ if (highlightedPanel_initial_pos != panel_pos || highlightedPanel_initial_size != panel_size)
{
// backup!
- panel_pos_backup = prev_pos;
- panel_size_backup = prev_size;
+ panel_pos_backup = highlightedPanel_initial_pos;
+ panel_size_backup = highlightedPanel_initial_size;
highlightedPanel_backup = highlightedPanel;
}
}
+float mouseClicked;
+float prevMouseClicked; // previous state
+float prevMouseClickedTime; // time during previous mouse click, to check for doubleclicks
+vector prevMouseClickedPos; // pos during previous mouse click, to check for doubleclicks
+
void HUD_Panel_EnableMenu();
float tab_panels[HUD_PANEL_NUM];
float tab_panel, tab_backward;
{
//switch to selected panel
highlightedPanel = tab_panel;
- highlightedPanel_prev = tab_panel;
- HUD_Panel_FirstInDrawQ(highlightedPanel_prev);
+ highlightedAction = 0;
+ HUD_Panel_FirstInDrawQ(highlightedPanel);
}
tab_panel = -1;
reset_tab_panels();
float old_tab_panel = tab_panel;
if (tab_panel == -1) //first press of TAB
{
- if (highlightedPanel_prev != -1)
- HUD_Panel_UpdatePosSizeForId(highlightedPanel_prev)
+ if (highlightedPanel != -1)
+ HUD_Panel_UpdatePosSizeForId(highlightedPanel)
else
panel_pos = '0 0 0';
- starting_panel = highlightedPanel_prev; //can be -1, it means no starting panel
+ starting_panel = highlightedPanel; //can be -1, it means no starting panel
tab_panel_pos = panel_pos; //to compute level
}
else
if (bInputType == 1 || mouseClicked)
return true;
- if (highlightedPanel_prev != -1)
+ if (highlightedPanel != -1)
{
- HUD_Panel_GetName(highlightedPanel_prev);
+ HUD_Panel_GetName(highlightedPanel);
cvar_set(strcat("hud_panel_", panel_name), ftos(!(panel_enabled)));
}
else
if (bInputType == 1 || mouseClicked)
return true;
- if (highlightedPanel_prev != -1)
+ if (highlightedPanel != -1)
{
- HUD_Panel_UpdatePosSizeForId(highlightedPanel_prev);
+ HUD_Panel_UpdatePosSizeForId(highlightedPanel);
panel_size_copied = panel_size;
- highlightedPanel_copied = highlightedPanel_prev;
+ highlightedPanel_copied = highlightedPanel;
}
}
else if(nPrimary == 'v' && hudShiftState & S_CTRL) // past copied size on the highlighted panel
if (bInputType == 1 || mouseClicked)
return true;
- if (highlightedPanel_copied == -1 || highlightedPanel_prev == -1)
+ if (highlightedPanel_copied == -1 || highlightedPanel == -1)
return true;
- HUD_Panel_UpdatePosSizeForId(highlightedPanel_prev);
+ HUD_Panel_UpdatePosSizeForId(highlightedPanel);
// reduce size if it'd go beyond screen boundaries
vector tmp_size = panel_size_copied;
// backup first!
panel_pos_backup = panel_pos;
panel_size_backup = panel_size;
- highlightedPanel_backup = highlightedPanel_prev;
+ highlightedPanel_backup = highlightedPanel;
s = strcat(ftos(tmp_size_x/vid_conwidth), " ", ftos(tmp_size_y/vid_conheight));
- HUD_Panel_GetName(highlightedPanel_prev);
+ HUD_Panel_GetName(highlightedPanel);
cvar_set(strcat("hud_panel_", panel_name, "_size"), s);
}
else if(nPrimary == 'z' && hudShiftState & S_CTRL) // undo last action
else if (pressed_key_time == 0)
pressed_key_time = time;
- HUD_Panel_Arrow_Action(nPrimary); //move or resize panel
+ if (!mouseClicked)
+ HUD_Panel_Arrow_Action(nPrimary); //move or resize panel
}
else if(nPrimary == K_ENTER || nPrimary == K_SPACE || nPrimary == K_KP_ENTER)
{
if (bInputType == 1)
return true;
- if (highlightedPanel_prev != -1)
- {
- highlightedPanel = highlightedPanel_prev;
+ if (highlightedPanel != -1)
HUD_Panel_EnableMenu();
- }
}
else if(hit_con_bind)
return false;
return true;
}
-float HUD_Panel_HighlightCheck()
+float HUD_Panel_Check_Mouse_Pos()
{
float i, j, border;
panel_click_resizeorigin = panel_pos;
return;
}
- else
- {
- highlightedPanel_prev = -1;
- }
}
+ highlightedPanel = -1;
+ highlightedAction = 0;
}
void HUD_Panel_EnableMenu()
HUD_Panel_GetName(highlightedPanel);
localcmd("menu_showhudoptions ", panel_name, "\n");
}
-float highlightcheck;
-vector prev_pos, prev_size;
+float mouse_over_panel;
void HUD_Panel_Mouse()
{
// TODO: needs better check... is there any float that contains the current state of the menu? _menu_alpha isn't apparently updated the frame the menu gets enabled
if(menu_enabled == 1 || (menu_enabled == 2 && !hud_fade_alpha))
return;
- if(mouseClicked == 0 && menu_enabled != 2 && highlightedPanel >= 0) { // don't reset these variables in menu_enabled mode 2!
- highlightedPanel = -1;
- highlightedAction = 0;
- }
- if(highlightedPanel != -1)
- highlightedPanel_prev = highlightedPanel;
-
mousepos = mousepos + getmousepos() * autocvar_menu_mouse_speed;
mousepos_x = bound(0, mousepos_x, vid_conwidth);
if(mouseClicked)
{
- if (tab_panel != -1)
- {
- //stop ctrl-tab selection
- tab_panel = -1;
- reset_tab_panels();
- }
if(prevMouseClicked == 0)
{
+ if (tab_panel != -1)
+ {
+ //stop ctrl-tab selection
+ tab_panel = -1;
+ reset_tab_panels();
+ }
HUD_Panel_Highlight(); // sets highlightedPanel, highlightedAction, panel_click_distance, panel_click_resizeorigin
// and calls HUD_Panel_UpdatePosSizeForId() for the highlighted panel
- prev_pos = panel_pos;
- prev_size = panel_size;
+ if (highlightedPanel != -1)
+ {
+ highlightedPanel_initial_pos = panel_pos;
+ highlightedPanel_initial_size = panel_size;
+ }
+ // doubleclick check
+ if (time - prevMouseClickedTime < 0.4 && highlightedPanel != -1 && prevMouseClickedPos == mousepos)
+ {
+ mouseClicked = 0; // to prevent spam, I guess.
+ HUD_Panel_EnableMenu();
+ }
+ else
+ {
+ prevMouseClickedTime = time;
+ prevMouseClickedPos = mousepos;
+ }
}
else
HUD_Panel_UpdatePosSizeForId(highlightedPanel);
- if (prev_pos != panel_pos || prev_size != panel_size)
+ if (highlightedPanel != -1)
{
- hud_configure_checkcollisions = (!(hudShiftState & S_CTRL) && autocvar_hud_configure_checkcollisions);
- // backup!
- panel_pos_backup = prev_pos;
- panel_size_backup = prev_size;
- highlightedPanel_backup = highlightedPanel;
+ drawfill(panel_pos - '1 1 0' * panel_bg_border, panel_size + '2 2 0' * panel_bg_border, '1 1 1', .1, DRAWFLAG_NORMAL);
+ if (highlightedPanel_initial_pos != panel_pos || highlightedPanel_initial_size != panel_size)
+ {
+ hud_configure_checkcollisions = (!(hudShiftState & S_CTRL) && autocvar_hud_configure_checkcollisions);
+ // backup!
+ panel_pos_backup = highlightedPanel_initial_pos;
+ panel_size_backup = highlightedPanel_initial_size;
+ highlightedPanel_backup = highlightedPanel;
+ }
+ else
+ // in case the clicked panel is inside another panel and we aren't
+ // moving it, avoid the immediate "fix" of its position/size
+ // (often unwanted and hateful) by disabling collisions check
+ hud_configure_checkcollisions = false;
}
- else
- // in case the clicked panel is inside another panel and we aren't
- // moving it, avoid the immediate "fix" of its position/size
- // (often unwanted and hateful) by disabling collisions check
- hud_configure_checkcollisions = false;
if(highlightedAction == 1)
HUD_Panel_SetPos(mousepos - panel_click_distance);
}
HUD_Panel_SetPosSize(mySize);
}
-
- // doubleclick check
- if(time - prevMouseClickedTime < 0.4 && prevMouseClicked == 0 && prevMouseClickedPos == mousepos && highlightedPanel >= 0)
- {
- mouseClicked = 0; // to prevent spam, I guess.
- HUD_Panel_EnableMenu();
- return;
- }
- if(prevMouseClicked == 0)
- {
- prevMouseClickedTime = time;
- prevMouseClickedPos = mousepos;
- }
}
else
{
- highlightcheck = HUD_Panel_HighlightCheck();
+ mouse_over_panel = HUD_Panel_Check_Mouse_Pos();
+ if (mouse_over_panel && tab_panel == -1)
+ drawfill(panel_pos - '1 1 0' * panel_bg_border, panel_size + '2 2 0' * panel_bg_border, '1 1 1', .1, DRAWFLAG_NORMAL);
}
- // draw cursor after performing move/resize to have the panel pos/size updated before highlightcheck
- vector cursorsize;
- cursorsize = '32 32 0';
+ // draw cursor after performing move/resize to have the panel pos/size updated before mouse_over_panel
+ const vector cursorsize = '32 32 0';
- if(highlightcheck == 0)
+ if(!mouse_over_panel)
drawpic(mousepos, strcat("gfx/menu/", autocvar_menu_skin, "/cursor.tga"), cursorsize, '1 1 1', hud_fade_alpha, DRAWFLAG_NORMAL);
- else if(highlightcheck == 1)
+ else if(mouse_over_panel == 1)
drawpic(mousepos - cursorsize * 0.5, strcat("gfx/menu/", autocvar_menu_skin, "/cursor_move.tga"), cursorsize, '1 1 1', hud_fade_alpha, DRAWFLAG_NORMAL);
- else if(highlightcheck == 2)
+ else if(mouse_over_panel == 2)
drawpic(mousepos - cursorsize * 0.5, strcat("gfx/menu/", autocvar_menu_skin, "/cursor_resize.tga"), cursorsize, '1 1 1', hud_fade_alpha, DRAWFLAG_NORMAL);
else
drawpic(mousepos - cursorsize * 0.5, strcat("gfx/menu/", autocvar_menu_skin, "/cursor_resize2.tga"), cursorsize, '1 1 1', hud_fade_alpha, DRAWFLAG_NORMAL);
if(!autocvar_hud_panel_weapons) return;
if(spectatee_status == -1) return;
}
- else
- hud_configure_active_panel = HUD_PANEL_WEAPONS;
+
+ hud_configure_active_panel = HUD_PANEL_WEAPONS;
float timeout = autocvar_hud_panel_weapons_timeout;
float timeout_effect_length, timein_effect_length;
if(!autocvar_hud_panel_ammo) return;
if(spectatee_status == -1) return;
}
- else
- hud_configure_active_panel = HUD_PANEL_AMMO;
+
+ hud_configure_active_panel = HUD_PANEL_AMMO;
HUD_Panel_UpdateCvars(ammo);
vector pos, mySize;
}
else
{
- hud_configure_active_panel = HUD_PANEL_POWERUPS;
-
strength_time = 15;
shield_time = 27;
}
+ hud_configure_active_panel = HUD_PANEL_POWERUPS;
+
HUD_Panel_UpdateCvars(powerups);
vector pos, mySize;
pos = panel_pos;
}
else
{
- hud_configure_active_panel = HUD_PANEL_HEALTHARMOR;
-
health = 150;
armor = 75;
fuel = 20;
}
+ hud_configure_active_panel = HUD_PANEL_HEALTHARMOR;
+
HUD_Panel_UpdateCvars(healtharmor);
vector pos, mySize;
pos = panel_pos;
{
if(!autocvar_hud_panel_notify) return;
}
- else
- hud_configure_active_panel = HUD_PANEL_NOTIFY;
+
+ hud_configure_active_panel = HUD_PANEL_NOTIFY;
HUD_Panel_UpdateCvars(notify);
vector pos, mySize;
{
if(!autocvar_hud_panel_timer) return;
}
- else
- hud_configure_active_panel = HUD_PANEL_TIMER;
+
+ hud_configure_active_panel = HUD_PANEL_TIMER;
HUD_Panel_UpdateCvars(timer);
vector pos, mySize;
if (autocvar_hud_panel_radar == 0) return;
if (autocvar_hud_panel_radar != 2 && !teamplay) return;
}
- else
- hud_configure_active_panel = HUD_PANEL_RADAR;
+
+ hud_configure_active_panel = HUD_PANEL_RADAR;
HUD_Panel_UpdateCvars(radar);
vector pos, mySize;
if(!autocvar__hud_configure)
{
if(!autocvar_hud_panel_score) return;
+ if(spectatee_status == -1 && (gametype == GAME_RACE || gametype == GAME_CTS)) return;
}
- else
- hud_configure_active_panel = HUD_PANEL_SCORE;
+
+ hud_configure_active_panel = HUD_PANEL_SCORE;
HUD_Panel_UpdateCvars(score);
vector pos, mySize;
{
#define SCOREPANEL_MAX_ENTRIES 6
#define SCOREPANEL_ASPECTRATIO 2
- float entries = bound(1, floor(SCOREPANEL_MAX_ENTRIES * mySize_y/mySize_x * SCOREPANEL_ASPECTRATIO), SCOREPANEL_MAX_ENTRIES);
- float height = mySize_y/entries;
- vector fontsize = '0.9 0.9 0' * height;
+ const float entries = bound(1, floor(SCOREPANEL_MAX_ENTRIES * mySize_y/mySize_x * SCOREPANEL_ASPECTRATIO), SCOREPANEL_MAX_ENTRIES);
+ const float height = mySize_y/entries;
+ const vector fontsize = '0.9 0.9 0' * height;
pos_y += height * (1 - 0.9) / 2;
vector rgb;
rgb = '1 1 1';
- float name_size = mySize_x*0.75;
+ const float name_size = mySize_x*0.75;
+ const float highlight_alpha = 0.2;
float i, me_printed;
string s;
if (autocvar__hud_configure)
if (i == entries-1 && autocvar_hud_panel_score_rankings == 1)
{
rgb = '1 1 0';
- drawfill(pos - eY * (height * (1 - 0.9) / 2), eX * mySize_x + eY * height, rgb, 0.3 * panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawfill(pos - eY * (height * (1 - 0.9) / 2), eX * mySize_x + eY * height, rgb, highlight_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
s = GetPlayerName(pl.sv_entnum);
score = 7;
}
if (i == 0)
rgb = '0 1 0'; //first: green
me_printed = 1;
- drawfill(pos - eY * (height * (1 - 0.9) / 2), eX * mySize_x + eY * height, rgb, 0.3 * panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawfill(pos - eY * (height * (1 - 0.9) / 2), eX * mySize_x + eY * height, rgb, highlight_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
}
s = textShortenToWidth(GetPlayerName(pl.sv_entnum), name_size, fontsize, stringwidth_colors);
drawcolorcodedstring(pos + eX * (name_size - stringwidth(s, TRUE, fontsize)), s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
if(!(gametype == GAME_RACE || gametype == GAME_CTS)) return;
if(spectatee_status == -1) return;
}
- else
- hud_configure_active_panel = HUD_PANEL_RACETIMER;
+
+ hud_configure_active_panel = HUD_PANEL_RACETIMER;
HUD_Panel_UpdateCvars(racetimer);
vector pos, mySize;
}
else
{
- hud_configure_active_panel = HUD_PANEL_VOTE;
-
vote_yescount = 3;
vote_nocount = 2;
vote_needed = 4;
}
+ hud_configure_active_panel = HUD_PANEL_VOTE;
+
string s;
float a;
if(vote_active != vote_prev) {
drawfont = hud_font;
}
+ void DrawDomItem(vector myPos, vector mySize, float aspect_ratio, float layout, float i)
+ {
+ float stat, pps_ratio;
+ string pic;
+ vector color;
+ switch(i)
+ {
+ case 0:
+ stat = getstatf(STAT_DOM_PPS_RED);
+ pic = "dom_icon_red";
+ color = '1 0 0';
+ break;
+ case 1:
+ stat = getstatf(STAT_DOM_PPS_BLUE);
+ pic = "dom_icon_blue";
+ color = '0 0 1';
+ break;
+ case 2:
+ stat = getstatf(STAT_DOM_PPS_YELLOW);
+ pic = "dom_icon_yellow";
+ color = '1 1 0';
+ break;
+ case 3:
+ stat = getstatf(STAT_DOM_PPS_PINK);
+ pic = "dom_icon_pink";
+ color = '1 0 1';
+ }
+ pps_ratio = stat / getstatf(STAT_DOM_TOTAL_PPS);
+
+ if(mySize_x/mySize_y > aspect_ratio)
+ {
+ i = aspect_ratio * mySize_y;
+ myPos_x = myPos_x + (mySize_x - i) / 2;
+ mySize_x = i;
+ }
+ else
+ {
+ i = 1/aspect_ratio * mySize_x;
+ myPos_y = myPos_y + (mySize_y - i) / 2;
+ mySize_y = i;
+ }
+
+ if (layout) // show text too
+ {
+ //draw the text
+ color *= 0.5 + pps_ratio * (1 - 0.5); // half saturated color at min, full saturated at max
+ if (layout == 2) // average pps
+ drawstring_aspect(myPos + eX * mySize_y, ftos_decimals(stat, 2), eX * (2/3) * mySize_x + eY * mySize_y, color, panel_fg_alpha, DRAWFLAG_NORMAL);
+ else // percentage of average pps
+ drawstring_aspect(myPos + eX * mySize_y, strcat( ftos(floor(pps_ratio*100 + 0.5)), "%" ), eX * (2/3) * mySize_x + eY * mySize_y, color, panel_fg_alpha, DRAWFLAG_NORMAL);
+ }
+
+ //draw the icon
+ drawpic_aspect_skin(myPos, pic, '1 1 0' * mySize_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+ if (stat > 0)
+ {
+ drawsetcliparea(myPos_x, myPos_y + mySize_y * (1 - pps_ratio), mySize_y, mySize_y * pps_ratio);
+ drawpic_aspect_skin(myPos, strcat(pic, "-highlighted"), '1 1 0' * mySize_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawresetcliparea();
+ }
+ }
+
+ void HUD_Mod_Dom(vector myPos, vector mySize)
+ {
+ mod_active = 1; // required in each mod function that always shows something
+ entity tm;
+ float teams_count;
+ for(tm = teams.sort_next; tm; tm = tm.sort_next)
+ if(tm.team != COLOR_SPECTATOR)
+ ++teams_count;
+
+ float layout = autocvar_hud_panel_modicons_dom_layout;
+ float rows, columns, aspect_ratio;
+ rows = mySize_y/mySize_x;
+ aspect_ratio = (layout) ? 3 : 1;
+ rows = bound(1, floor((sqrt((4 * aspect_ratio * teams_count + rows) * rows) + rows + 0.5) / 2), teams_count);
+ columns = ceil(teams_count/rows);
+
+ drawfont = hud_bigfont;
+ int i;
+ float row, column;
+ for(i=0; i<teams_count; ++i)
+ {
+ vector pos, itemSize;
+ pos = myPos + eX * column * mySize_x*(1/columns) + eY * row * mySize_y*(1/rows);
+ itemSize = eX * mySize_x*(1/columns) + eY * mySize_y*(1/rows);
+
+ DrawDomItem(pos, itemSize, aspect_ratio, layout, i);
+
+ ++row;
+ if(row >= rows)
+ {
+ row = 0;
+ ++column;
+ }
+ }
+ drawfont = hud_font;
+ }
+
float mod_prev; // previous state of mod_active to check for a change
float mod_alpha;
float mod_change; // "time" when mod_active changed
if(!autocvar__hud_configure)
{
if(!autocvar_hud_panel_modicons) return;
- if (gametype != GAME_CTF && gametype != GAME_KEYHUNT && gametype != GAME_NEXBALL && gametype != GAME_CTS && gametype != GAME_RACE && gametype != GAME_CA && gametype != GAME_FREEZETAG && gametype != GAME_KEEPAWAY) return;
+ if (gametype != GAME_CTF && gametype != GAME_KEYHUNT && gametype != GAME_NEXBALL && gametype != GAME_CTS && gametype != GAME_RACE && gametype != GAME_CA && gametype != GAME_FREEZETAG && gametype != GAME_KEEPAWAY && gametype != GAME_DOMINATION) return;
}
- else
- hud_configure_active_panel = HUD_PANEL_MODICONS;
+
+ hud_configure_active_panel = HUD_PANEL_MODICONS;
HUD_Panel_UpdateCvars(modicons);
vector pos, mySize;
HUD_Mod_Race(pos, mySize);
else if(gametype == GAME_CA || gametype == GAME_FREEZETAG)
HUD_Mod_CA(pos, mySize);
+ else if(gametype == GAME_DOMINATION)
+ HUD_Mod_Dom(pos, mySize);
else if(gametype == GAME_KEEPAWAY)
HUD_Mod_Keepaway(pos, mySize);
}
if(!autocvar_hud_panel_pressedkeys) return;
if(spectatee_status <= 0 && autocvar_hud_panel_pressedkeys < 2) return;
}
- else
- hud_configure_active_panel = HUD_PANEL_PRESSEDKEYS;
+ hud_configure_active_panel = HUD_PANEL_PRESSEDKEYS;
HUD_Panel_UpdateCvars(pressedkeys);
vector pos, mySize;
return;
}
}
- else
- hud_configure_active_panel = HUD_PANEL_CHAT;
+
+ hud_configure_active_panel = HUD_PANEL_CHAT;
HUD_Panel_UpdateCvars(chat);
{
if(!autocvar_hud_panel_engineinfo) return;
}
- else
- hud_configure_active_panel = HUD_PANEL_ENGINEINFO;
+
+ hud_configure_active_panel = HUD_PANEL_ENGINEINFO;
HUD_Panel_UpdateCvars(engineinfo);
vector pos, mySize;
{
if(!autocvar_hud_panel_infomessages) return;
}
- else
- hud_configure_active_panel = HUD_PANEL_INFOMESSAGES;
+
+ hud_configure_active_panel = HUD_PANEL_INFOMESSAGES;
HUD_Panel_UpdateCvars(infomessages);
vector pos, mySize;
if(!autocvar_hud_panel_physics)
{
if(!autocvar__hud_configure) return;
+ if(spectatee_status <= 0 && autocvar_hud_panel_physics < 2) return;
}
- else
- hud_configure_active_panel = HUD_PANEL_PHYSICS;
+
+ hud_configure_active_panel = HUD_PANEL_PHYSICS;
HUD_Panel_UpdateCvars(physics);
float speed, conversion_factor;
string unit;
- switch(autocvar_cl_showspeed_unit)
+ switch(autocvar_hud_panel_physics_speed_unit)
{
default:
case 1:
float speed_baralign, acceleration_baralign;
if (autocvar_hud_panel_physics_baralign == 1)
acceleration_baralign = speed_baralign = 1;
+ else if(autocvar_hud_panel_physics_baralign == 4)
+ acceleration_baralign = speed_baralign = 2;
else if (autocvar_hud_panel_physics_flip)
{
acceleration_baralign = (autocvar_hud_panel_physics_baralign == 2);
{
top_speed = speed;
top_speed_time = time;
+ f = 1;
}
- if (top_speed == 0) //hide top speed 0, it would be stupid
- f = 0;
- else
+ else 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 peek
+ //top speed progressbar peak
if(autocvar_hud_panel_physics_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) * panel_size_x;
- else
- peek_offset_x = min(top_speed, max_speed)/max_speed * panel_size_x;
+ float peak_offset_x;
+ vector peak_size
+ if (speed_baralign == 0)
+ peak_offset_x = min(top_speed, max_speed)/max_speed * panel_size_x;
+ else if (speed_baralign == 1)
+ peak_offset_x = (1 - min(top_speed, max_speed)/max_speed) * panel_size_x;
+ else if (speed_baralign == 2)
+ peak_offset_x = min(top_speed, max_speed)/max_speed * panel_size_x * 0.5;
//if speed is not 0 the speed progressbar already fetched the color
if (speed == 0)
HUD_Panel_GetProgressBarColor(speed);
- peek_size_x = panel_size_x * 0.01;
- drawfill(panel_pos + speed_offset + eX * (peek_offset_x - peek_size_x), eX * peek_size_x + eY * panel_size_y, progressbar_color, f * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+ 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_offset_x - peak_size_x), peak_size, progressbar_color, f * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawfill(panel_pos + speed_offset + eX * (0.5 * panel_size_x - peak_offset_x + peak_size_x), peak_size, progressbar_color, f * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+ }
+ else
+ drawfill(panel_pos + speed_offset + eX * (peak_offset_x - peak_size_x), peak_size, progressbar_color, f * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
}
//top speed