seta hud_configure_grid_xsize "" "snap to X * vid_conwidth"
seta hud_configure_grid_ysize "" "snap to Y * vid_conheight"
+seta scr_centerpos "" "Y position of the centerprint"
+
seta hud_panel_weapons "" "enable/disable this panel"
seta hud_panel_weapons_pos "" "position of this panel"
seta hud_panel_weapons_size "" "size of this panel"
seta scoreboard_highlight 1 "enable highlighting for rows and columns in the scoreboard"
seta scoreboard_highlight_alpha 0.10 "highlight alpha value (depends on hud_scoreboard_highlight 1)"
seta scoreboard_highlight_alpha_self 0.25 "self highlight alpha value"
+seta scoreboard_offset_left 0.04 "how many pixels the scoreboard is offset from the left screen edge"
+seta scoreboard_offset_right 0.148 "how many pixels the scoreboard is offset from the right screen edge"
// for menu server list (eventually make them have engine support?)
seta menu_slist_showfull 1 "show servers even if they are full and have no slots to join"
// hud: font size
seta hud_fontsize 11
seta hud_fontsize_spec 16
-seta scr_centersize 11
+seta scr_centersize 12
seta hud_width 560
// alias hud_font "loadfont user1 ${1},gfx/fallback ${2-}; loadfont user2 ${1}-big ${2-}; scoreboard_columns_set"
alias sbar_font "set _requested_sbar_font \"${*}\""
seta hud_progressbar_fuel_color "0.6 0.6 0"
seta hud_progressbar_nexball_color "0.7 0.1 0"
-seta _hud_panelorder "11 0 9 2 10 14 12 6 3 13 4 8 7 1 5 "
+seta _hud_panelorder "2 14 13 9 1 3 11 0 10 12 6 4 8 7 5 "
seta hud_configure_grid "1"
seta hud_configure_grid_xsize "0.005000"
seta hud_configure_grid_ysize "0.005000"
+seta scr_centerpos "0.25"
+
seta hud_panel_weapons 1
seta hud_panel_weapons_pos "0.915000 0.085000"
seta hud_panel_weapons_size "0.060000 0.635000"
seta hud_panel_ammo 1
seta hud_panel_ammo_pos "0.190000 0.925000"
-seta hud_panel_ammo_size "0.095000 0.060000"
+seta hud_panel_ammo_size "0.110000 0.060000"
seta hud_panel_ammo_bg ""
seta hud_panel_ammo_bg_color ""
seta hud_panel_ammo_bg_color_team ""
seta hud_panel_ammo_bg_alpha ""
seta hud_panel_ammo_bg_border ""
seta hud_panel_ammo_bg_padding ""
-seta hud_panel_ammo_onlycurrent "1"
+seta hud_panel_ammo_onlycurrent "0"
seta hud_panel_ammo_iconalign "0"
seta hud_panel_powerups 1
-seta hud_panel_powerups_pos "0.365000 0.015000"
+seta hud_panel_powerups_pos "0.365000 0.105000"
seta hud_panel_powerups_size "0.262500 0.048047"
seta hud_panel_powerups_bg ""
seta hud_panel_powerups_bg_color ""
seta hud_panel_powerups_progressbar "1"
seta hud_panel_healtharmor 1
-seta hud_panel_healtharmor_pos "0.305000 0.925000"
-seta hud_panel_healtharmor_size "0.315000 0.060000"
+seta hud_panel_healtharmor_pos "0.320000 0.925000"
+seta hud_panel_healtharmor_size "0.300000 0.060000"
seta hud_panel_healtharmor_bg ""
seta hud_panel_healtharmor_bg_color ""
seta hud_panel_healtharmor_bg_color_team "1"
seta hud_panel_notify_bg_border ""
seta hud_panel_notify_bg_padding ""
seta hud_panel_notify_flip "0"
-seta hud_panel_notify_print "0"
+seta hud_panel_notify_print "1"
seta hud_panel_timer 1
seta hud_panel_timer_pos "0.880000 0.012070"
seta hud_panel_racetimer_bg_padding ""
seta hud_panel_vote 1
-seta hud_panel_vote_pos "0.025000 0.660000"
+seta hud_panel_vote_pos "0.025000 0.655000"
seta hud_panel_vote_size "0.264218 0.102462"
seta hud_panel_vote_bg ""
seta hud_panel_vote_bg_color ""
seta hud_panel_chat_bg_padding ""
seta hud_panel_engineinfo 1
-seta hud_panel_engineinfo_pos "0.860000 0.954667"
-seta hud_panel_engineinfo_size "0.125000 0.035000"
+seta hud_panel_engineinfo_pos "0.890000 0.955000"
+seta hud_panel_engineinfo_size "0.110000 0.035000"
seta hud_panel_engineinfo_bg ""
seta hud_panel_engineinfo_bg_color ""
seta hud_panel_engineinfo_bg_color_team ""
seta hud_panel_engineinfo_bg_padding ""
seta hud_panel_infomessages 1
-seta hud_panel_infomessages_pos "0.340000 0.350000"
-seta hud_panel_infomessages_size "0.320000 0.085000"
+seta hud_panel_infomessages_pos "0.515000 0"
+seta hud_panel_infomessages_size "0.340000 0.090000"
seta hud_panel_infomessages_bg ""
seta hud_panel_infomessages_bg_color ""
seta hud_panel_infomessages_bg_color_team ""
seta hud_panel_infomessages_bg_alpha "0"
seta hud_panel_infomessages_bg_border ""
-seta hud_panel_infomessages_bg_padding ""
+seta hud_panel_infomessages_bg_padding "0"
+seta hud_panel_infomessages_flip "1"
seta hud_progressbar_fuel_color "0.6 0.6 0"
seta hud_progressbar_nexball_color "0.7 0.1 0"
-seta _hud_panelorder "11 0 9 2 10 14 12 6 3 13 4 8 7 1 5 "
+seta _hud_panelorder "2 14 13 9 1 3 11 0 10 12 6 4 8 7 5 "
seta hud_configure_grid "1"
seta hud_configure_grid_xsize "0.005000"
seta hud_configure_grid_ysize "0.005000"
+seta scr_centerpos "0.25"
+
seta hud_panel_weapons 1
seta hud_panel_weapons_pos "0.915000 0.085000"
seta hud_panel_weapons_size "0.060000 0.635000"
seta hud_panel_ammo 1
seta hud_panel_ammo_pos "0.190000 0.925000"
-seta hud_panel_ammo_size "0.095000 0.060000"
+seta hud_panel_ammo_size "0.110000 0.060000"
seta hud_panel_ammo_bg ""
seta hud_panel_ammo_bg_color ""
seta hud_panel_ammo_bg_color_team ""
seta hud_panel_ammo_bg_alpha ""
seta hud_panel_ammo_bg_border ""
seta hud_panel_ammo_bg_padding ""
-seta hud_panel_ammo_onlycurrent "1"
+seta hud_panel_ammo_onlycurrent "0"
seta hud_panel_ammo_iconalign "0"
seta hud_panel_powerups 1
-seta hud_panel_powerups_pos "0.365000 0.015000"
+seta hud_panel_powerups_pos "0.365000 0.105000"
seta hud_panel_powerups_size "0.262500 0.048047"
seta hud_panel_powerups_bg ""
seta hud_panel_powerups_bg_color ""
seta hud_panel_powerups_progressbar "1"
seta hud_panel_healtharmor 1
-seta hud_panel_healtharmor_pos "0.305000 0.925000"
-seta hud_panel_healtharmor_size "0.315000 0.060000"
+seta hud_panel_healtharmor_pos "0.320000 0.925000"
+seta hud_panel_healtharmor_size "0.300000 0.060000"
seta hud_panel_healtharmor_bg ""
seta hud_panel_healtharmor_bg_color ""
seta hud_panel_healtharmor_bg_color_team "1"
seta hud_panel_notify_bg_border ""
seta hud_panel_notify_bg_padding ""
seta hud_panel_notify_flip "0"
-seta hud_panel_notify_print "0"
+seta hud_panel_notify_print "1"
seta hud_panel_timer 1
seta hud_panel_timer_pos "0.880000 0.012070"
seta hud_panel_racetimer_bg_padding ""
seta hud_panel_vote 1
-seta hud_panel_vote_pos "0.025000 0.660000"
+seta hud_panel_vote_pos "0.025000 0.655000"
seta hud_panel_vote_size "0.264218 0.102462"
seta hud_panel_vote_bg ""
seta hud_panel_vote_bg_color ""
seta hud_panel_chat_bg_padding ""
seta hud_panel_engineinfo 1
-seta hud_panel_engineinfo_pos "0.860000 0.954667"
-seta hud_panel_engineinfo_size "0.125000 0.035000"
+seta hud_panel_engineinfo_pos "0.890000 0.955000"
+seta hud_panel_engineinfo_size "0.110000 0.035000"
seta hud_panel_engineinfo_bg ""
seta hud_panel_engineinfo_bg_color ""
seta hud_panel_engineinfo_bg_color_team ""
seta hud_panel_engineinfo_bg_padding ""
seta hud_panel_infomessages 1
-seta hud_panel_infomessages_pos "0.340000 0.350000"
-seta hud_panel_infomessages_size "0.320000 0.085000"
+seta hud_panel_infomessages_pos "0.515000 0"
+seta hud_panel_infomessages_size "0.340000 0.090000"
seta hud_panel_infomessages_bg ""
seta hud_panel_infomessages_bg_color ""
seta hud_panel_infomessages_bg_color_team ""
seta hud_panel_infomessages_bg_alpha "0"
seta hud_panel_infomessages_bg_border ""
-seta hud_panel_infomessages_bg_padding ""
+seta hud_panel_infomessages_bg_padding "0"
+seta hud_panel_infomessages_flip "1"
menu_restart
seta hud_configure_grid_xsize "0.01"
seta hud_configure_grid_ysize "0.01"
+seta scr_centerpos 0.25
+
seta hud_panel_weapons 1
seta hud_panel_weapons_pos "0.370000 0.870000"
seta hud_panel_weapons_size "0.330000 0.060000"
seta hud_panel_notify_bg_border ""
seta hud_panel_notify_bg_padding ""
seta hud_panel_notify_flip "0"
-seta hud_panel_notify_print "0"
+seta hud_panel_notify_print "1"
seta hud_panel_timer 1
seta hud_panel_timer_pos "0.860000 0"
self.draw2d();
self = e;
- // draw hud
- if(cvar("r_letterbox") == 0) {
- HUD_DrawCenterPrint(); // draw centerprint messages even if viewsize >= 120
- }
-
float hud;
hud = getstati(STAT_HUD);
if(hud == HUD_SPIDERBOT)
CSQC_common_hud();
// crosshair goes VERY LAST
- if(!scoreboard_active && !camera_active) {
+ if(!scoreboard_active && !camera_active && intermission != 2) {
// TrueAim check
float shottype;
float bullets, ring_scale;
acc_lev[i] = stof(argv(i));
}
- // hud first
- HUD_Main();
+ HUD_Main(); // always run these functions for alpha checks
+ HUD_DrawScoreboard();
- // scoreboard/accuracy
- if (intermission == 2 && !scoreboard_showaccuracy && !scoreboard_showscores) // map voting screen
+ if (scoreboard_showscores || scoreboard_showscores_force || getstati(STAT_HEALTH) <= 0 || intermission == 1) // scoreboard/accuracy
+ {
+ HUD_Reset();
+ // HUD_DrawScoreboard takes care of centerprint_start
+ }
+ else if (intermission == 2) // map voting screen
{
HUD_FinaleOverlay();
HUD_Reset();
- }
- else if(scoreboard_showaccuracy && spectatee_status != -1)
- HUD_DrawAccuracyStats();
- else
- HUD_DrawScoreboard();
- if (scoreboard_showscores || scoreboard_showaccuracy || scoreboard_showscores_force || getstati(STAT_HEALTH) <= 0 || intermission == 1)
- HUD_Reset();
+ centerprint_start_x = 0;
+ centerprint_start_y = cvar("scr_centerpos") * vid_conheight;
+ }
+ else // hud
+ {
+ centerprint_start_x = 0;
+ centerprint_start_y = cvar("scr_centerpos") * vid_conheight;
+ }
+ HUD_DrawCenterPrint();
break;
case HUD_SPIDERBOT:
#define CENTERPRINT_MAX_LINES 30
string centerprint_messages[CENTERPRINT_MAX_LINES];
float centerprint_width[CENTERPRINT_MAX_LINES];
-vector centerprint_start;
+float centerprint_time;
float centerprint_expire;
float centerprint_num;
float centerprint_offset_hint;
while(getWrappedLine_remaining)
{
s = getWrappedLine(vid_conwidth * 0.75, centerprint_fontsize, stringwidth_colors);
+ if(centerprint_messages[i] != s) // don't fade the same message in, looks stupid
+ centerprint_time = time;
if(centerprint_messages[i])
strunzone(centerprint_messages[i]);
centerprint_messages[i] = strzone(s);
if(havail > vid_conheight - 70)
havail = vid_conheight - 70; // avoid overlapping HUD
- centerprint_start_x = 0;
-
#if 0
float forbiddenmin, forbiddenmax, allowedmin, allowedmax, preferred;
centerprint_start_y = bound(forbiddenmax, preferred, allowedmax);
}
#else
- centerprint_start_y =
- min(
- max(
- max(scoreboard_bottom, vid_conheight * 0.5 + 16),
- (havail - h)/2
- ),
- havail - h
- );
#endif
centerprint_num = i;
+
centerprint_expire = time + cvar("scr_centertime");
}
float i;
vector pos;
string ts;
- float a;
+ float a, sz;
- //if(time > centerprint_expire)
- // return;
-
- //a = bound(0, 1 - 2 * (time - centerprint_expire), 1);
- a = bound(0, 1 - 4 * (time - centerprint_expire), 1);
- //sz = 1.2 / (a + 0.2);
+ if(time - centerprint_time < 0.25)
+ a = (time - centerprint_time) / 0.25;
+ else
+ a = bound(0, 1 - 4 * (time - centerprint_expire), 1);
if(a <= 0)
return;
+ sz = 0.8 + (a / 5);
+
+ if(centerprint_num * cvar("scr_centersize") > 24 && HUD_WouldDrawScoreboard()) // 24 = height of Scoreboard text
+ {
+ centerprint_start_y = scoreboard_bottom + centerprint_fontsize_y;
+ }
pos = centerprint_start;
for (i=0; i<centerprint_num; i = i + 1)
{
- pos_x = (vid_conwidth - centerprint_width[i]) * 0.5;
ts = centerprint_messages[i];
+ drawfontscale = sz * '1 1 0';
+ drawfont = hud_bigfont;
+ pos_x = (vid_conwidth - stringwidth(ts, TRUE, centerprint_fontsize)) * 0.5;
if (ts != "")
{
- drawcolorcodedstring(pos, ts, centerprint_fontsize, a, DRAWFLAG_NORMAL);
- // - '0 0.5 0' * (sz - 1) * centerprint_fontsize_x - '0.5 0 0' * (sz - 1) * centerprint_width[i] * centerprint_fontsize_y, centerprint_fontsize * sz
+ drawcolorcodedstring(pos + '0 1 0' * (1 - sz) * 0.5 *centerprint_fontsize_y, ts, centerprint_fontsize, a, DRAWFLAG_NORMAL);
pos_y = pos_y + centerprint_fontsize_y;
}
else
// half height for empty lines looks better
- pos_y = pos_y + centerprint_fontsize_y * 0.5;
+ pos_y = pos_y + sz * centerprint_fontsize_y * 0.5;
+ drawfontscale = '1 1 0';
+ drawfont = hud_font;
}
}
fputs(fh, strcat("seta hud_configure_grid_ysize \"", cvar_string("hud_configure_grid_ysize"), "\"", "\n"));
fputs(fh, "\n");
+ fputs(fh, strcat("seta scr_centerpos \"", cvar_string("scr_centerpos"), "\"", "\n"));
+ fputs(fh, "\n");
+
// common cvars for all panels
float i;
for (i = 0; i < HUD_PANEL_NUM; ++i)
case HUD_PANEL_PRESSEDKEYS:
fputs(fh, strcat("seta hud_panel_", panel_name, "_aspect \"", cvar_string(strcat("hud_panel_", panel_name, "_aspect")), "\"", "\n"));
break;
+ case HUD_PANEL_INFOMESSAGES:
+ fputs(fh, strcat("seta hud_panel_", panel_name, "_flip \"", cvar_string(strcat("hud_panel_", panel_name, "_flip")), "\"", "\n"));
+ break;
}
fputs(fh, "\n");
}
else if(type == KILL_FIRST_BLOOD)
print("^1",s1, "^1 drew first blood", "\n");
// TODO: icon!
- else if (type == DEATH_TELEFRAG)
- print ("^1",s1, "^1 was telefragged by ", s2, "\n");
+ else if (type == DEATH_TELEFRAG) {
+ HUD_KillNotify_Push(s2, s1, 1, DEATH_TELEFRAG);
+ if(gentle)
+ print ("^1",s1, "^1 tried to occupy ", s2, "^1's teleport destination space\n");
+ else
+ print ("^1",s1, "^1 was telefragged by ", s2, "\n");
+ }
else if (type == DEATH_DROWN) {
HUD_KillNotify_Push(s2, s1, 1, DEATH_DROWN);
if(alsoprint)
centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1Don't shoot your team mates!"));
} else if (type == DEATH_QUIET) {
// do nothing
- } else if (type == DEATH_KILL) {
+ } else { // generic message
if(gentle)
centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1You need to be more careful!"));
else
} else {
centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^4You fragged ^7", s1, s2));
}
- } else if (type == KILL_FRAGGED) {
+ } else { // generic message
if(gentle) {
centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1You were scored against by ^7", s1, s2));
} else {
float width_attacker;
string attacker, victim;
- float i, j;
+ float i, j, w;
for(j = 0; j < entries; ++j)
{
s = "";
a = 0;
}
- float w;
+ w = -1;
w = DEATH_WEAPONOF(killnotify_deathtype[j]);
// TODO: maybe print in team colors?
{
s = "notify_teamkill_red";
}
+ else if(killnotify_deathtype[j] == DEATH_TELEFRAG)
+ {
+ s = "notify_telefrag";
+ }
else if(killnotify_deathtype[j] == DEATH_DROWN)
{
s = "notify_water";
vector fontsize;
fontsize = '0.20 0.20 0' * mySize_y;
+ float a;
+ if(spectatee_status != 0)
+ a = 1;
+ else
+ a = panel_fg_alpha;
+
string s;
if(!autocvar__hud_configure)
{
if(autocvar_hud_panel_infomessages_flip)
o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize);
- drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
o += eY * fontsize_y;
if(spectatee_status == -1)
s = strcat("^1Press ^3", getcommandkey("primary fire", "+attack"), "^1 for another player");
if(autocvar_hud_panel_infomessages_flip)
o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize);
- drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
o += eY * fontsize_y;
if(spectatee_status == -1)
s = strcat("^1Press ^3", getcommandkey("secondary fire", "+attack2"), "^1 to observe");
if(autocvar_hud_panel_infomessages_flip)
o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize);
- drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
o += eY * fontsize_y;
s = strcat("^1Press ^3", getcommandkey("server info", "+show_info"), "^1 for gamemode info");
if(autocvar_hud_panel_infomessages_flip)
o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize);
- drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
o += eY * fontsize_y;
if(gametype == GAME_ARENA)
s = strcat("^1Press ^3", getcommandkey("jump", "+jump"), "^1 to join");
if(autocvar_hud_panel_infomessages_flip)
o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize);
- drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
o += eY * fontsize_y;
//show restart countdown:
//we need to ceil, otherwise the countdown would be off by .5 when using round()
countdown = ceil(getstatf(STAT_GAMESTARTTIME) - time);
s = strcat("^1Game starts in ^3", ftos(countdown), "^1 seconds");
- drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
o += eY * fontsize_y;
}
}
s = "^2Currently in ^1warmup^2 stage!";
if(autocvar_hud_panel_infomessages_flip)
o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize);
- drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
o += eY * fontsize_y;
}
}
if(autocvar_hud_panel_infomessages_flip)
o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize);
- drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
o += eY * fontsize_y;
}
else if(warmup_stage && !intermission && !spectatee_status)
s = strcat("^2Press ^3", getcommandkey("ready", "ready"), "^2 to end warmup");
if(autocvar_hud_panel_infomessages_flip)
o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize);
- drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
o += eY * fontsize_y;
}
if(autocvar_hud_panel_infomessages_flip)
o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize);
- drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
o += eY * fontsize_y;
}
}
s = "^7Press ^3ESC ^7to show HUD options.";
if(autocvar_hud_panel_infomessages_flip)
o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize);
- drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
o += eY * fontsize_y;
s = "^3Doubleclick ^7a panel for panel-specific options.";
if(autocvar_hud_panel_infomessages_flip)
o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize);
- drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
o += eY * fontsize_y;
s = "^3CTRL ^7to disable collision testing, ^3SHIFT ^7and";
if(autocvar_hud_panel_infomessages_flip)
o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize);
- drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
o += eY * fontsize_y;
s = "^3ALT ^7+ ^3ARROW KEYS ^7for fine adjustments.";
if(autocvar_hud_panel_infomessages_flip)
o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize);
- drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
o += eY * fontsize_y;
}
}
{
hud_skin_path = strcat("gfx/hud/", autocvar_hud_skin);
+ // global hud alpha fade
if(disable_menu_alphacheck == 1)
- menu_fade_alpha = 1;
+ hud_fade_alpha = 1;
else
- menu_fade_alpha = (1 - autocvar__menu_alpha);
+ hud_fade_alpha = (1 - autocvar__menu_alpha);
+
+ if(scoreboard_fade_alpha)
+ hud_fade_alpha = (1 - scoreboard_fade_alpha);
+
+ if(intermission == 2) // no hud during mapvote
+ hud_fade_alpha = 0;
+ else if(autocvar__menu_alpha == 0 && scoreboard_fade_alpha == 0)
+ hud_fade_alpha = 1;
hud_border_thickness = bound(0, cvar("hud_border_thickness"), 5);
hud_accuracy_border_thickness = bound(0, cvar_or("hud_accuracy_border_thickness", 1), 5);
if(precache_pic(pic) == "") {
pic = "gfx/hud/default/dock";
}
- drawpic('0 0 0', pic, eX * vid_conwidth + eY * vid_conheight, color, autocvar_hud_dock_alpha * menu_fade_alpha, DRAWFLAG_NORMAL); // no aspect ratio forcing on dock...
+ drawpic('0 0 0', pic, eX * vid_conwidth + eY * vid_conheight, color, autocvar_hud_dock_alpha * hud_fade_alpha, DRAWFLAG_NORMAL); // no aspect ratio forcing on dock...
}
// cache the panel order into the panel_order array
float log(float f);
+vector centerprint_start;
+
float panel_order[HUD_PANEL_NUM];
string hud_panelorder_prev;
const float S_ALT = 4;
float disable_menu_alphacheck; // 0 = enable alpha check, 1 = disable for entire hud, 2 = disable for one panel
-float menu_fade_alpha;
+float hud_fade_alpha;
string hud_skin_path;
} if(autocvar__hud_configure && !panel_enabled) {\
panel_bg_alpha = 0.25;\
} if(!(disable_menu_alphacheck == 2 && highlightedPanel == active_panel)) {\
- panel_bg_alpha *= menu_fade_alpha;\
+ panel_bg_alpha *= hud_fade_alpha;\
}
// Get value for panel_fg_alpha. Also do various minalpha checks
if(autocvar__hud_configure && !panel_enabled)\
panel_fg_alpha = 0.25;\
if(!(disable_menu_alphacheck == 2 && highlightedPanel == active_panel))\
- panel_fg_alpha *= menu_fade_alpha;
+ panel_fg_alpha *= hud_fade_alpha;
// Get border. See comments above, it's similar.
#define HUD_Panel_GetBorder()\
return v;
}
-float HUD_GetWidth(float teamcolumnwidth)
-{
- float f;
- f = cvar("hud_width");
- if(f == 0)
- f = 640;
- if(f < 320)
- f = 320;
- if(f > vid_conwidth - 2 * teamcolumnwidth)
- f = vid_conwidth - 2 * teamcolumnwidth;
- return f;
-}
-
float PreviewExists(string name)
{
float f;
interpolate.qh
teamradar.qh
hud.qh
+scoreboard.qh
waypointsprites.qh
movetypes.qh
prandom.qh
return 1;
else if (intermission == 1)
return 1;
- else if (intermission == 2)
+ else if (intermission == 2 && scoreboard_showscores)
return 1;
else if (getstati(STAT_HEALTH) <= 0 && cvar("cl_deathscoreboard"))
return 1;
}
drawstring(pos, strcat("Accuracy stats (average ", ftos(average_accuracy), "%)"), hud_fontsize, '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL);
- pos_y += 18;
+ pos_y += 1.25 * hud_fontsize_y;
vector tmp;
tmp_x = sbwidth;
tmp_y = height * rows;
pos_x -= sbwidth/weapon_cnt / 2;
pos_x -= sbwidth;
pos_y += height;
+
+ pos_y += 1.25 * hud_fontsize_y;
return pos;
}
drawstring(pos, p, hud_fontsize, '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL);
drawstring(pos + '3 0 0' * hud_fontsize_x, TIME_ENCODED_TOSTRING(t), hud_fontsize, '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL);
drawcolorcodedstring(pos + '8 0 0' * hud_fontsize_x, n, hud_fontsize, scoreboard_alpha_fg, DRAWFLAG_NORMAL);
- pos += '0 1 0' * hud_fontsize_y;
+ pos_y += 1.25 * hud_fontsize_y;
}
return pos;
}
-float scoreboard_fade_alpha;
float hud_woulddrawscoreboard_prev;
float hud_woulddrawscoreboard_change; // "time" at which HUD_WouldDrawScoreboard() changed
void HUD_DrawScoreboard()
vector rgb, pos, tmp;
entity pl, tm;
- sbwidth = HUD_GetWidth(6.5 * hud_fontsize_y);
+ xmin = cvar("scoreboard_offset_left") * vid_conwidth;
+ ymin = cvar("con_notify") * cvar("con_notifysize");
- xmin = 0.5 * (vid_conwidth - sbwidth);
- ymin = SCOREBOARD_OFFSET;
-
- xmax = vid_conwidth - xmin;
- ymax = vid_conheight - 0.2*vid_conheight;
+ sbwidth = xmax = vid_conwidth - xmin - cvar("scoreboard_offset_right") * vid_conwidth;
+ ymax = vid_conheight - ymin;
// Initializes position
pos_x = xmin;
// Heading
drawfont = hud_bigfont;
- drawstringcenter('0 1 0' * ymin, "Scoreboard", '24 24 0', '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL);
+ drawstring(pos, "Scoreboard", '24 24 0', '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL);
+
+ centerprint_start_x = vid_conwidth - 0.5 * (pos_x + stringwidth("Scoreboard", FALSE, '24 24 0'));
+ centerprint_start_y = pos_y;
- pos_y += 24 + 4;
- pos_y += hud_fontsize_y;
+ pos_y += 24;
drawfont = hud_font;
continue;
rgb = GetTeamRGB(tm.team);
- drawstring(pos - '9.5 0 0' * hud_fontsize_y + '0 1 0' * hud_fontsize_y, ftos(tm.(teamscores[ts_primary])), '1 1 0' * hud_fontsize_y * 1.5, rgb, scoreboard_alpha_fg, DRAWFLAG_NORMAL);
+ drawstring(pos - '2 0 0' * hud_fontsize_x + '0 1 0' * hud_fontsize_y, ftos(tm.(teamscores[ts_primary])), '1 1 0' * hud_fontsize_y * 1.5, rgb, scoreboard_alpha_fg, DRAWFLAG_NORMAL);
if(ts_primary != ts_secondary)
- drawstring(pos - '7.5 0 0' * hud_fontsize_y + '0 2.5 0' * hud_fontsize_y, ftos(tm.(teamscores[ts_secondary])), '1 1 0' * hud_fontsize_y * 1, rgb, scoreboard_alpha_fg, DRAWFLAG_NORMAL);
+ drawstring(pos - '2 0 0' * hud_fontsize_x + '0 2.5 0' * hud_fontsize_y, ftos(tm.(teamscores[ts_secondary])), '1 1 0' * hud_fontsize_y * 1, rgb, scoreboard_alpha_fg, DRAWFLAG_NORMAL);
pos = HUD_Scoreboard_MakeTable(pos, tm, rgb, bg_size);
}
pos = HUD_DrawScoreboardAccuracyStats(pos, rgb, bg_size);
}
- tmp = pos + '0 1.5 0' * hud_fontsize_y;
- pos_y += 3 * hud_fontsize_y;
-
// List spectators
float specs;
specs = 0;
+ tmp = pos;
for(pl = players.sort_next; pl; pl = pl.sort_next)
{
if(pl.team != COLOR_SPECTATOR)
continue;
- HUD_PrintScoreboardItem(pos, pl, (pl.sv_entnum == player_localentnum - 1), specs);
pos_y += 1.25 * hud_fontsize_y;
+ HUD_PrintScoreboardItem(pos, pl, (pl.sv_entnum == player_localentnum - 1), specs);
++specs;
}
if(specs)
+ {
drawstring(tmp, "Spectators", hud_fontsize, '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL);
+ pos_y += 1.25 * hud_fontsize_y;
+ }
// Print info string
string str;
--- /dev/null
+float HUD_WouldDrawScoreboard(void);
+float scoreboard_fade_alpha;
if(cvar("sv_fragmessage_information_ping")) {
if(clienttype(enPlayer) == CLIENTTYPE_BOT) // Bots have no ping
- strMessage = strcat(strMessage, "\n^7(^2Bot");
+ strMessage = strcat(strMessage, " ^7(^2Bot");
else
- strMessage = strcat(strMessage, "\n^7(Ping ", strPlayerPingColor, ftos(nPlayerPing), "ms");
+ strMessage = strcat(strMessage, " ^7(Ping ", strPlayerPingColor, ftos(nPlayerPing), "ms");
if(cvar("sv_fragmessage_information_handicap"))
if(cvar("sv_fragmessage_information_handicap") == 2)
if(nPlayerHandicap <= 1)