float fadetime = autocvar_hud_panel_weapons_complainbubble_fadetime;
vector weapon_pos, weapon_size;
- vector old_panel_size;
+ local noref vector old_panel_size; // fteqcc sucks
vector color, ammo_color;
// check to see if we want to continue
}
}
for(i = weapon_cnt; i < WEP_MAXCOUNT; ++i)
- weaponorder[i] = NULL;
+ weaponorder[i] = world;
heapsort(weapon_cnt, weaponorder_swap, weaponorder_cmp, world);
weaponorder_cmp_str = string_null;
ammo_size = eX * mySize_x*(1/columns) + eY * mySize_y*(1/rows);
}
- vector offset;
+ local noref vector offset; // fteqcc sucks
float newSize;
if(ammo_size_x/ammo_size_y > 3)
{
HUD_KillNotify_Push(s1, "", 0, DEATH_GENERIC);
if(alsoprint)
{
- if(gentle)
- print (sprintf(_("^1%s^1 ran into a turret\n"), s1));
- else
- {
- switch(type)
- {
- case DEATH_TURRET_EWHEEL:
- print (sprintf(_("^1%s^1 was laserd down by a eWheel turret \n"), s1));
- break;
- case DEATH_TURRET_FLAC:
- print (sprintf(_("^1%s^1 got caught in the flac \n"), s1));
- break;
- case DEATH_TURRET_MACHINEGUN:
- print (sprintf(_("^1%s^1 was riddeld full of riddled by a machinegun turret \n"), s1));
- break;
- case DEATH_TURRET_WALKER_GUN:
- print (sprintf(_("^1%s^1 got served a led enrichment by a walker turret \n"), s1));
- break;
- case DEATH_TURRET_WALKER_MEELE:
- print (sprintf(_("^1%s^1 was impaled by a walker turret \n"), s1));
- break;
- case DEATH_TURRET_WALKER_ROCKET:
- print (sprintf(_("^1%s^1 was rocketed to hell by a walker turret \n"), s1));
- break;
- case DEATH_TURRET_HELLION:
- print (sprintf(_("^1%s^1 was blasted away hellion turret \n"), s1));
- break;
- case DEATH_TURRET_HK:
- print (sprintf(_("^1%s^1 could not hide from the hunter turret \n"), s1));
- break;
- case DEATH_TURRET_MLRS:
- print (sprintf(_("^1%s^1 got turned into smoldering gibs by a mlrs turret \n"), s1));
- break;
- case DEATH_TURRET_PLASMA:
- print (sprintf(_("^1%s^1 got served some superheated plasma from a plasma turret \n"), s1));
- break;
- case DEATH_TURRET_PHASER:
- print (sprintf(_("^1%s^1 was phased out \n"), s1));
- break;
- case DEATH_TURRET_TESLA:
- print (sprintf(_("^1%s^1 was electrocuted by a tesla turret \n"), s1));
- break;
- }
- }
+ if(gentle)
+ print (sprintf(_("^1%s^1 ran into a turret\n"), s1));
+ else
+ {
+ switch(type)
+ {
+ case DEATH_TURRET_EWHEEL:
+ print (sprintf(_("^1%s^1 was laserd down by a eWheel turret \n"), s1));
+ break;
+ case DEATH_TURRET_FLAC:
+ print (sprintf(_("^1%s^1 got caught in the flac \n"), s1));
+ break;
+ case DEATH_TURRET_MACHINEGUN:
+ print (sprintf(_("^1%s^1 was riddeld full of riddled by a machinegun turret \n"), s1));
+ break;
+ case DEATH_TURRET_WALKER_GUN:
+ print (sprintf(_("^1%s^1 got served a led enrichment by a walker turret \n"), s1));
+ break;
+ case DEATH_TURRET_WALKER_MEELE:
+ print (sprintf(_("^1%s^1 was impaled by a walker turret \n"), s1));
+ break;
+ case DEATH_TURRET_WALKER_ROCKET:
+ print (sprintf(_("^1%s^1 was rocketed to hell by a walker turret \n"), s1));
+ break;
+ case DEATH_TURRET_HELLION:
+ print (sprintf(_("^1%s^1 was blasted away hellion turret \n"), s1));
+ break;
+ case DEATH_TURRET_HK:
+ print (sprintf(_("^1%s^1 could not hide from the hunter turret \n"), s1));
+ break;
+ case DEATH_TURRET_MLRS:
+ print (sprintf(_("^1%s^1 got turned into smoldering gibs by a mlrs turret \n"), s1));
+ break;
+ case DEATH_TURRET_PLASMA:
+ print (sprintf(_("^1%s^1 got served some superheated plasma from a plasma turret \n"), s1));
+ break;
+ case DEATH_TURRET_PHASER:
+ print (sprintf(_("^1%s^1 was phased out \n"), s1));
+ break;
+ case DEATH_TURRET_TESLA:
+ print (sprintf(_("^1%s^1 was electrocuted by a tesla turret \n"), s1));
+ break;
+ }
+ }
}
-
} else if (type == DEATH_CUSTOM) {
HUD_KillNotify_Push(s1, "", 0, DEATH_CUSTOM);
if(alsoprint)
gentle = (autocvar_cl_gentle || autocvar_cl_gentle_messages);
if(msg == MSG_SUICIDE) {
if (type == DEATH_TEAMCHANGE) {
- centerprint(sprintf(_("You are now on: %s"), s1));
+ centerprint_hud(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));
+ centerprint_hud(sprintf(_("You have been moved into a different team to improve team balance\nYou are now on: %s"), s1));
} else if (type == DEATH_CAMP) {
if(gentle)
- centerprint(_("^1Reconsider your tactics, camper!"));
+ centerprint_hud(_("^1Reconsider your tactics, camper!"));
else
- centerprint(_("^1Die camper!"));
+ centerprint_hud(_("^1Die camper!"));
} else if (type == DEATH_NOAMMO) {
if(gentle)
- centerprint(_("^1You are reinserted into the game for running out of ammo..."));
+ centerprint_hud(_("^1You are reinserted into the game for running out of ammo..."));
else
- centerprint(_("^1You were killed for running out of ammo..."));
+ centerprint_hud(_("^1You were killed for running out of ammo..."));
} else if (type == DEATH_ROT) {
if(gentle)
- centerprint(_("^1You need to preserve your health"));
+ centerprint_hud(_("^1You need to preserve your health"));
else
- centerprint(_("^1You grew too old without taking your medicine"));
+ centerprint_hud(_("^1You grew too old without taking your medicine"));
} else if (type == KILL_TEAM_RED || type == KILL_TEAM_BLUE) {
if(gentle)
- centerprint(_("^1Don't go against team mates!"));
+ centerprint_hud(_("^1Don't go against team mates!"));
else
- centerprint(_("^1Don't shoot your team mates!"));
+ centerprint_hud(_("^1Don't shoot your team mates!"));
} else if (type == DEATH_QUIET) {
// do nothing
} else { // generic message
if(gentle)
- centerprint(_("^1You need to be more careful!"));
+ centerprint_hud(_("^1You need to be more careful!"));
else
- centerprint(_("^1You killed your own dumb self!"));
+ centerprint_hud(_("^1You killed your own dumb self!"));
}
} else if(msg == MSG_KILL) {
if (type == KILL_TEAM_RED || type == KILL_TEAM_BLUE) {
if(gentle) {
- centerprint(sprintf(_("^1Moron! You went against ^7%s^1, a team mate!"), s1));
+ centerprint_hud(sprintf(_("^1Moron! You went against ^7%s^1, a team mate!"), s1));
} else {
- centerprint(sprintf(_("^1Moron! You fragged ^7%s^1, a team mate!"), s1));
+ centerprint_hud(sprintf(_("^1Moron! You fragged ^7%s^1, a team mate!"), s1));
}
} else if (type == KILL_FIRST_BLOOD) {
if(gentle) {
- centerprint(_("^1First score"));
+ centerprint_hud(_("^1First score"));
} else {
- centerprint(_("^1First blood"));
+ centerprint_hud(_("^1First blood"));
}
} else if (type == KILL_FIRST_VICTIM) {
if(gentle) {
- centerprint(_("^1First casualty"));
+ centerprint_hud(_("^1First casualty"));
} else {
- centerprint(_("^1First victim"));
+ centerprint_hud(_("^1First victim"));
}
} else if (type == KILL_TYPEFRAG) { // s2 contains "advanced kill messages" such as ping, handicap...
if(gentle) {
- centerprint(strcat(sprintf(_("^1You scored against ^7%s^1 who was typing!"), s1), s2));
+ centerprint_hud(strcat(sprintf(_("^1You scored against ^7%s^1 who was typing!"), s1), s2));
} else {
- centerprint(strcat(sprintf(_("^1You typefragged ^7%s"), s1), s2));
+ centerprint_hud(strcat(sprintf(_("^1You typefragged ^7%s"), s1), s2));
}
} else if (type == KILL_TYPEFRAGGED) {
if(gentle) {
- centerprint(strcat(sprintf(_("^1You were scored against by ^7%s^1 while you were typing!"), s1), s2));
+ centerprint_hud(strcat(sprintf(_("^1You were scored against by ^7%s^1 while you were typing!"), s1), s2));
} else {
- centerprint(strcat(sprintf(_("^1You were typefragged by ^7%s"), s1), s2));
+ centerprint_hud(strcat(sprintf(_("^1You were typefragged by ^7%s"), s1), s2));
}
} else if (type == KILL_FRAG) {
if(gentle) {
- centerprint(strcat(sprintf(_("^4You scored against ^7%s"), s1), s2));
+ centerprint_hud(strcat(sprintf(_("^4You scored against ^7%s"), s1), s2));
} else {
- centerprint(strcat(sprintf(_("^4You fragged ^7%s"), s1), s2));
+ centerprint_hud(strcat(sprintf(_("^4You fragged ^7%s"), s1), s2));
}
} else { // generic message
if(gentle) {
- centerprint(strcat(sprintf(_("^1You were scored against by ^7%s"), s1), s2));
+ centerprint_hud(strcat(sprintf(_("^1You were scored against by ^7%s"), s1), s2));
} else {
- centerprint(strcat(sprintf(_("^1You were fragged by ^7%s"), s1), s2));
+ centerprint_hud(strcat(sprintf(_("^1You were fragged by ^7%s"), s1), s2));
}
}
} else if(msg == MSG_KILL_ACTION) {
// TODO: invent more centerprints here?
- centerprint(_("^1Watch your step!"));
+ centerprint_hud(_("^1Watch your step!"));
}
}
c2 = rotate('1 0 0' * mi_min_x + '0 1 0' * mi_max_y, teamradar_angle * DEG2RAD);
c3 = rotate('1 0 0' * mi_max_x + '0 1 0' * mi_min_y, teamradar_angle * DEG2RAD);
span = '0 0 0';
- span_x = max4(c0_x, c1_x, c2_x, c3_x) - min4(c0_x, c1_x, c2_x, c3_x);
- span_y = max4(c0_y, c1_y, c2_y, c3_y) - min4(c0_y, c1_y, c2_y, c3_y);
+ span_x = max(c0_x, c1_x, c2_x, c3_x) - min(c0_x, c1_x, c2_x, c3_x);
+ span_y = max(c0_y, c1_y, c2_y, c3_y) - min(c0_y, c1_y, c2_y, c3_y);
// max-min distance must fit the radar in x=x, y=y
bigsize = min(
drawstring_aspect(pos + eX * 0.75 * mySize_x, distribution_str, eX * 0.25 * mySize_x + eY * (1/3) * mySize_y, distribution_color, panel_fg_alpha, DRAWFLAG_NORMAL);
} else { // teamgames
float scores_count, row, column, rows, columns;
- vector offset;
+ local noref vector offset; // fteqcc sucks
vector score_pos, score_size; //for scores other than myteam
if (spectatee_status == -1 || autocvar_hud_panel_score_rankings)
{
speed_baralign = (autocvar_hud_panel_physics_baralign == 2);
acceleration_baralign = (autocvar_hud_panel_physics_baralign == 3);
}
- if (autocvar_hud_panel_physics_acceleration_progressbar_mode == 0)
+ if (autocvar_hud_panel_physics_acceleration_mode == 0)
acceleration_baralign = 3; //override hud_panel_physics_baralign value for acceleration
//draw speed
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)
if (!centerprint_showing)
centerprint_showing = TRUE;
- centerprint_fadetime = bound(0, autocvar_hud_panel_centerprint_fadetime, 1);
-
for (i=0, j=cpm_index; i<CENTERPRINT_MAX_MSGS; ++i, ++j)
{
if (j == CENTERPRINT_MAX_MSGS)
if (strMessage == "" && centerprint_messages[j] != "" && centerprint_countdown_num[j] == 0)
{
// fade out the current msg (duration and countdown_num are ignored)
- centerprint_time[j] = centerprint_fadetime;
- if (centerprint_expire_time[j] > time + centerprint_fadetime || centerprint_expire_time[j] < time)
- centerprint_expire_time[j] = time + centerprint_fadetime;
+ centerprint_time[j] = min(5, autocvar_hud_panel_centerprint_fade_out);
+ if (centerprint_expire_time[j] > time + min(5, autocvar_hud_panel_centerprint_fade_out) || centerprint_expire_time[j] < time)
+ centerprint_expire_time[j] = time + min(5, autocvar_hud_panel_centerprint_fade_out);
return;
}
break; // found a msg with the same id, at position j
centerprint_countdown_num[j] = countdown_num;
}
-void centerprint(string strMessage)
+void centerprint_hud(string strMessage)
{
centerprint_generic(0, strMessage, autocvar_hud_panel_centerprint_time, 0);
}
else if (r > 0.8)
centerprint_generic(0, sprintf("^1Multiline message at time %s that\n^1lasts longer than normal", seconds_tostring(time)), 20, 0);
else
- centerprint(sprintf("Message at time %s", seconds_tostring(time)));
+ centerprint_hud(sprintf("Message at time %s", seconds_tostring(time)));
hud_configure_cp_generation_time = time + 1 + random()*4;
}
}
if (scoreboard_bottom >= 0.96 * vid_conheight)
return;
vector target_pos;
+
target_pos = eY * scoreboard_bottom + eX * 0.5 * (vid_conwidth - panel_size_x);
- panel_pos = panel_pos + (target_pos - panel_pos) * sqrt(scoreboard_fade_alpha);
- panel_size_y = min(panel_size_y, vid_conheight - scoreboard_bottom);
+
+ if(target_pos_y > panel_pos_y)
+ {
+ panel_pos = panel_pos + (target_pos - panel_pos) * sqrt(scoreboard_fade_alpha);
+ panel_size_y = min(panel_size_y, vid_conheight - scoreboard_bottom);
+ }
}
HUD_Panel_DrawBg(1);
continue;
}
- // fade the centerprint in/out
- if (centerprint_time[j] < 0 || centerprint_expire_time[j] - centerprint_fadetime > time)
- {
- a = bound(0, (time - (centerprint_expire_time[j] - centerprint_time[j])) / centerprint_fadetime, 1);
- }
+ // fade the centerprint_hud in/out
+ if (centerprint_time[j] < 0 || centerprint_expire_time[j] - autocvar_hud_panel_centerprint_fade_out > time)
+ a = bound(0, (time - (centerprint_expire_time[j] - centerprint_time[j])) / max(0.0001, autocvar_hud_panel_centerprint_fade_in), 1);
else if (centerprint_expire_time[j] > time)
- {
- a = (centerprint_expire_time[j] - time) / centerprint_fadetime;
- }
+ a = (centerprint_expire_time[j] - time) / max(0.0001, autocvar_hud_panel_centerprint_fade_out);
+
+ // set the size from fading in/out before subsequent fading
+ sz = autocvar_hud_panel_centerprint_fade_minfontsize + a * (1 - autocvar_hud_panel_centerprint_fade_minfontsize);
// also fade it based on positioning
- a = a * bound(0.5, (1 - (i / 2)), 1); // pass one: all messages after the first have half alpha
- a = a * bound(0.5, (1 - (i / 10)), 1); // pass two: after that, gradually lower alpha even more for each message
+ if(autocvar_hud_panel_centerprint_fade_subsequent)
+ {
+ a = a * bound(autocvar_hud_panel_centerprint_fade_subsequent_passone_minalpha, (1 - (i / max(1, autocvar_hud_panel_centerprint_fade_subsequent_passone))), 1); // pass one: all messages after the first have half alpha
+ a = a * bound(autocvar_hud_panel_centerprint_fade_subsequent_passtwo_minalpha, (1 - (i / max(1, autocvar_hud_panel_centerprint_fade_subsequent_passtwo))), 1); // pass two: after that, gradually lower alpha even more for each message
+ }
- // finally set the size based on the new alpha
- sz = 0.75 + a * (1 - 0.75);
+ // finally set the size based on the new alpha from subsequent fading
+ sz = sz * (autocvar_hud_panel_centerprint_fade_subsequent_minfontsize + a * (1 - autocvar_hud_panel_centerprint_fade_subsequent_minfontsize));
drawfontscale = sz * '1 1 0';
if (centerprint_countdown_num[j])
n = tokenizebyseparator(sprintf(centerprint_messages[j], centerprint_countdown_num[j]), "\n");
else
n = tokenizebyseparator(centerprint_messages[j], "\n");
+
if (autocvar_hud_panel_centerprint_flip)
{
// check if the message can be entirely shown
pos_y -= fontsize_y;
else
pos_y -= fontsize_y * CENTERPRINT_SPACING/2;
- // NOTE: uncommented so as to not reject messages whenever they are "too large" -- This just continues drawing it anyway.
- //if (pos_y < panel_pos_y) // check if the next line can be shown
- //{
- // drawfontscale = '1 1 0';
- // return;
- //}
}
}
current_msg_pos_y = pos_y; // save starting pos (first line) of the current message
}
else
pos_y += fontsize_y * CENTERPRINT_SPACING/2;
- // NOTE: uncommented so as to not reject messages whenever they are "too large" -- This just continues drawing it anyway.
- //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';
- // return;
- //}
}
}
msg_size = pos_y - msg_size;
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 += (msg_size + CENTERPRINT_SPACING * fontsize_y) * (1 - sqrt(sz));
+
+ if (pos_y < panel_pos_y) // check if the next message can be shown
+ {
+ drawfontscale = '1 1 0';
+ return;
+ }
}
else
{
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 -= (msg_size + CENTERPRINT_SPACING * fontsize_y) * (1 - sqrt(sz));
+
+ if(pos_y > panel_pos_y + panel_size_y - fontsize_y) // check if the next message can be shown
+ {
+ drawfontscale = '1 1 0';
+ return;
+ }
}
}
drawfontscale = '1 1 0';
vector color;
float hud_dock_color_team = autocvar_hud_dock_color_team;
if((teamplay) && hud_dock_color_team) {
- f = stof(getplayerkey(current_player - 1, "colors"));
+ f = stof(getplayerkeyvalue(current_player - 1, "colors"));
color = colormapPaletteColor(mod(f, 16), 1) * hud_dock_color_team;
}
else if(autocvar_hud_configure_teamcolorforced && autocvar__hud_configure && hud_dock_color_team) {
{
string hud_dock_color = autocvar_hud_dock_color;
if(hud_dock_color == "shirt") {
- f = stof(getplayerkey(current_player - 1, "colors"));
+ f = stof(getplayerkeyvalue(current_player - 1, "colors"));
color = colormapPaletteColor(floor(f / 16), 0);
}
else if(hud_dock_color == "pants") {
- f = stof(getplayerkey(current_player - 1, "colors"));
+ f = stof(getplayerkeyvalue(current_player - 1, "colors"));
color = colormapPaletteColor(mod(f, 16), 1);
}
else