X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fhud.qc;h=57f098383db97dad24c62431889daae3fb1048fe;hb=b5a593d8425521092f05949c4143d86a25d49f4c;hp=9c5f993669060fec15d12bcd5b22e91250d3ebbe;hpb=73406cea479bf391c611c4c4688d498537797e27;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/hud.qc b/qcsrc/client/hud.qc index 9c5f99366..57f098383 100644 --- a/qcsrc/client/hud.qc +++ b/qcsrc/client/hud.qc @@ -1839,7 +1839,7 @@ void HUD_Centerprint(string s1, string s2, float type, float msg) gentle = (autocvar_cl_gentle || autocvar_cl_gentle_messages); if(msg == MSG_SUICIDE) { if (type == DEATH_TEAMCHANGE) { - centerprint(strcat(sprintf(_("You are now on: %s"), s1))); + centerprint(sprintf(_("You are now on: %s"), s1)); } else if (type == DEATH_AUTOTEAMCHANGE) { centerprint(sprintf(_("You have been moved into a different team to improve team balance\nYou are now on: %s"), s1)); } else if (type == DEATH_CAMP) { @@ -1873,9 +1873,9 @@ void HUD_Centerprint(string s1, string s2, float type, float msg) } else if(msg == MSG_KILL) { if (type == KILL_TEAM_RED || type == KILL_TEAM_BLUE) { if(gentle) { - centerprint(strcat(sprintf(_("^1Moron! You went against ^7%s^1, a team mate!"), s1))); + centerprint(sprintf(_("^1Moron! You went against ^7%s^1, a team mate!"), s1)); } else { - centerprint(strcat(sprintf(_("^1Moron! You fragged ^7%s^1, a team mate!"), s1))); + centerprint(sprintf(_("^1Moron! You fragged ^7%s^1, a team mate!"), s1)); } } else if (type == KILL_FIRST_BLOOD) { if(gentle) { @@ -2948,7 +2948,7 @@ void HUD_VoteWindow(void) pos = panel_pos; mySize = panel_size; - a = vote_alpha * bound(autocvar_hud_panel_vote_alreadyvoted_alpha, 1 - vote_highlighted, 1); + a = vote_alpha * (vote_highlighted ? autocvar_hud_panel_vote_alreadyvoted_alpha : 1); HUD_Panel_DrawBg(a); a = panel_fg_alpha * a; @@ -2999,7 +2999,7 @@ void HUD_VoteWindow(void) drawsetcliparea(pos_x, pos_y, mySize_x * 0.5, mySize_y); drawpic_skin(pos + eY * (5/8) * mySize_y, "voteprogress_voted", eX * mySize_x + eY * (3/8) * mySize_y, '1 1 1', a, DRAWFLAG_NORMAL); } - else if(vote_highlighted == 2) { + else if(vote_highlighted == -1) { drawsetcliparea(pos_x + 0.5 * mySize_x, pos_y, mySize_x * 0.5, mySize_y); drawpic_skin(pos + eY * (5/8) * mySize_y, "voteprogress_voted", eX * mySize_x + eY * (3/8) * mySize_y, '1 1 1', a, DRAWFLAG_NORMAL); } @@ -3018,10 +3018,6 @@ void HUD_VoteWindow(void) } drawresetcliparea(); - - if(!vote_active) { - vote_highlighted = 0; - } } // Mod icons panel (#10) @@ -4130,7 +4126,8 @@ void HUD_Physics(void) if(!autocvar__hud_configure) { if(!autocvar_hud_panel_physics) return; - if(spectatee_status == -1 && autocvar_hud_panel_physics < 2) return; + if(spectatee_status == -1 && (autocvar_hud_panel_physics == 1 || autocvar_hud_panel_physics == 3)) return; + if(autocvar_hud_panel_physics == 3 && !(gametype == GAME_RACE || gametype == GAME_CTS)) return; } else hud_configure_active_panel = HUD_PANEL_PHYSICS; @@ -4347,14 +4344,18 @@ void HUD_Physics(void) drawstring_aspect(panel_pos + acceleration_offset, strcat(ftos_decimals(acceleration, 2), "g"), panel_size, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); } +// CenterPrint (#16) +// #define CENTERPRINT_MAX_MSGS 10 #define CENTERPRINT_MAX_ENTRIES 50 +#define CENTERPRINT_SPACING 0.7 float cpm_index; string centerprint_messages[CENTERPRINT_MAX_MSGS]; float centerprint_msgID[CENTERPRINT_MAX_MSGS]; float centerprint_time[CENTERPRINT_MAX_MSGS]; float centerprint_expire_time[CENTERPRINT_MAX_MSGS]; float centerprint_countdown_num[CENTERPRINT_MAX_MSGS]; +float centerprint_fadetime; float centerprint_showing; void centerprint_generic(float new_id, string strMessage, float duration, float countdown_num) @@ -4387,15 +4388,24 @@ void centerprint_generic(float new_id, string strMessage, float duration, float if (!centerprint_showing) centerprint_showing = TRUE; - if(duration == 0) - duration = max(1, autocvar_hud_panel_centerprint_time); + centerprint_fadetime = bound(0, autocvar_hud_panel_centerprint_fadetime, 1); for (i=0, j=cpm_index; i time + centerprint_fadetime || centerprint_expire_time[j] < time) + centerprint_expire_time[j] = time + centerprint_fadetime; + return; + } break; // found a msg with the same id, at position j + } } if (i == CENTERPRINT_MAX_MSGS) @@ -4414,6 +4424,8 @@ void centerprint_generic(float new_id, string strMessage, float duration, float centerprint_time[j] = -1; else { + if(duration == 0) + duration = max(1, autocvar_hud_panel_centerprint_time); centerprint_time[j] = duration; centerprint_expire_time[j] = time + duration; } @@ -4425,9 +4437,6 @@ void centerprint(string strMessage) centerprint_generic(0, strMessage, autocvar_hud_panel_centerprint_time, 0); } -// CenterPrint (#16) -// -float hud_configure_cp_generation_time; void reset_centerprint_messages(void) { float i; @@ -4438,16 +4447,17 @@ void reset_centerprint_messages(void) centerprint_msgID[i] = 0; if(centerprint_messages[i]) strunzone(centerprint_messages[i]); - centerprint_messages[i] = strzone(""); + centerprint_messages[i] = string_null; } } +float hud_configure_cp_generation_time; void HUD_CenterPrint (void) { if(!autocvar__hud_configure) { if(!autocvar_hud_panel_centerprint) return; - if (hud_configure_prev) + if (hud_configure_prev && hud_configure_prev != -1) reset_centerprint_messages(); } else @@ -4508,7 +4518,7 @@ void HUD_CenterPrint (void) entries = bound(1, floor(panel_size_y/height), CENTERPRINT_MAX_ENTRIES); float i, j, k, n; - float a, sz, fade, align, current_msg_pos_y; + float a, sz, align, current_msg_pos_y, msg_size; vector pos; string ts; @@ -4517,15 +4527,14 @@ void HUD_CenterPrint (void) pos = panel_pos; if (autocvar_hud_panel_centerprint_flip) pos_y += panel_size_y; - fade = min(autocvar_hud_panel_centerprint_time/8, 0.25); align = bound(0, autocvar_hud_panel_centerprint_align, 1); for (i=0, j=cpm_index; i 0 && centerprint_expire_time[j] < time) + if (centerprint_expire_time[j] < time) { - if (centerprint_countdown_num[j]) + if (centerprint_countdown_num[j] && centerprint_time[j] > 0) { centerprint_countdown_num[j] = centerprint_countdown_num[j] - 1; if (centerprint_countdown_num[j] == 0) @@ -4535,14 +4544,14 @@ void HUD_CenterPrint (void) else continue; } - if (centerprint_time[j] < 0 || centerprint_expire_time[j] - fade > time) + if (centerprint_time[j] < 0 || centerprint_expire_time[j] - centerprint_fadetime > time) { a = 1; sz = 1; } else if (centerprint_expire_time[j] > time) { - a = (centerprint_expire_time[j] - time) / fade; + a = (centerprint_expire_time[j] - time) / centerprint_fadetime; sz = 0.8 + a * (1 - 0.8); } @@ -4563,7 +4572,7 @@ void HUD_CenterPrint (void) if (ts != "") pos_y -= fontsize_y; else - pos_y -= fontsize_y * 0.35; + pos_y -= fontsize_y * CENTERPRINT_SPACING/2; if (pos_y < panel_pos_y) // check if the next line can be shown { drawfontscale = '1 1 0'; @@ -4574,6 +4583,7 @@ void HUD_CenterPrint (void) current_msg_pos_y = pos_y; // save starting pos (first line) of the current message } + msg_size = pos_y; for(k = 0; k < n; ++k) { getWrappedLine_remaining = argv(k); @@ -4584,11 +4594,11 @@ void HUD_CenterPrint (void) { if (align) pos_x = panel_pos_x + (panel_size_x - stringwidth(ts, TRUE, fontsize)) * align; - drawcolorcodedstring(pos + '0 1 0' * 1.5 * (1 - sz) * fontsize_y, ts, fontsize, a * panel_fg_alpha, DRAWFLAG_NORMAL); + drawcolorcodedstring(pos + eY * 0.5 * (1 - sz) * fontsize_y, ts, fontsize, a * panel_fg_alpha, DRAWFLAG_NORMAL); pos_y += fontsize_y; } else - pos_y += fontsize_y * 0.35; + pos_y += fontsize_y * CENTERPRINT_SPACING/2; if (!autocvar_hud_panel_centerprint_flip && pos_y > panel_pos_y + panel_size_y - fontsize_y) // check if the next line can be shown { drawfontscale = '1 1 0'; @@ -4596,17 +4606,18 @@ void HUD_CenterPrint (void) } } } + msg_size = pos_y - msg_size; if (autocvar_hud_panel_centerprint_flip) { - pos_y = current_msg_pos_y - 0.7 * fontsize_y; + pos_y = current_msg_pos_y - CENTERPRINT_SPACING * fontsize_y; if (a < 1 && centerprint_msgID[j] == 0) // messages with id can be replaced just after they are faded out, so never move over them the next messages - pos_y += 1.5 * fontsize_y * (1 - a*a); + pos_y += (msg_size + CENTERPRINT_SPACING * fontsize_y) * (1 - sqrt(a)); } else { - pos_y += 0.7 * fontsize_y; + pos_y += CENTERPRINT_SPACING * fontsize_y; if (a < 1 && centerprint_msgID[j] == 0) // messages with id can be replaced just after they are faded out, so never move over them the next messages - pos_y -= 1.5 * fontsize_y * (1 - a*a); + pos_y -= (msg_size + CENTERPRINT_SPACING * fontsize_y) * (1 - sqrt(a)); } } drawfontscale = '1 1 0';