ts = centerprint_messages[i];
if (ts != "")
{
- dummyfunction(0, 0, 0, 0, 0, 0, 0, 0); // work around DP bug (set OFS_PARAM5 to 0)
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
pos_y = pos_y + centerprint_fontsize_y;
case HUD_PANEL_WEAPONICONS:
fputs(fh, strcat("seta hud_", panel_name, "_complainbubble \"", cvar_string(strcat("hud_", panel_name, "_complainbubble")), "\"", "\n"));
fputs(fh, strcat("seta hud_", panel_name, "_complainbubble_padding \"", cvar_string(strcat("hud_", panel_name, "_complainbubble_padding")), "\"", "\n"));
+ fputs(fh, strcat("seta hud_", panel_name, "_complainbubble_color_outofammo \"", cvar_string(strcat("hud_", panel_name, "_complainbubble_color_outofammo")), "\"", "\n"));
+ fputs(fh, strcat("seta hud_", panel_name, "_complainbubble_color_donthave \"", cvar_string(strcat("hud_", panel_name, "_complainbubble_color_donthave")), "\"", "\n"));
+ fputs(fh, strcat("seta hud_", panel_name, "_complainbubble_color_unavailable \"", cvar_string(strcat("hud_", panel_name, "_complainbubble_color_unavailable")), "\"", "\n"));
+ fputs(fh, strcat("seta hud_", panel_name, "_ammo_color \"", cvar_string(strcat("hud_", panel_name, "_ammo_color")), "\"", "\n"));
+ fputs(fh, strcat("seta hud_", panel_name, "_ammo_alpha \"", cvar_string(strcat("hud_", panel_name, "_ammo_alpha")), "\"", "\n"));
+ fputs(fh, strcat("seta hud_", panel_name, "_aspect \"", cvar_string(strcat("hud_", panel_name, "_ammo_alpha")), "\"", "\n"));
break;
case HUD_PANEL_INVENTORY:
fputs(fh, strcat("seta hud_", panel_name, "_onlycurrent \"", cvar_string(strcat("hud_", panel_name, "_onlycurrent")), "\"", "\n"));
case HUD_PANEL_VOTE:
fputs(fh, strcat("seta hud_", panel_name, "_alreadyvoted_alpha \"", cvar_string(strcat("hud_", panel_name, "_alreadyvoted_alpha")), "\"", "\n"));
break;
+ case HUD_PANEL_PRESSEDKEYS:
+ fputs(fh, strcat("seta hud_", panel_name, "_aspect \"", cvar_string(strcat("hud_", panel_name, "_aspect")), "\"", "\n"));
+ break;
}
fputs(fh, "\n");
}
if(highlightedPanel != -1)
highlightedPanel_prev = highlightedPanel;
- mousepos = mousepos + getmousepos();
+ mousepos = mousepos + getmousepos() * cvar("menu_mouse_speed");
mousepos_x = bound(0, mousepos_x, vid_conwidth);
mousepos_y = bound(0, mousepos_y, vid_conheight);
return aj - ai; // the string is in REVERSE order (higher prio at the right is what we want, but higher prio first is the string)
}
+float GetAmmoStat(float i)
+{
+ switch(i)
+ {
+ case 0: return STAT_SHELLS;
+ case 1: return STAT_NAILS;
+ case 2: return STAT_ROCKETS;
+ case 3: return STAT_CELLS;
+ case 4: return STAT_FUEL;
+ default: return -1;
+ }
+}
+
+float GetAmmoTypeForWep(float i)
+{
+ switch(i)
+ {
+ case WEP_SHOTGUN: return 0;
+ case WEP_UZI: return 1;
+ case WEP_CAMPINGRIFLE: return 1;
+ case WEP_GRENADE_LAUNCHER: return 2;
+ case WEP_ELECTRO: return 3;
+ case WEP_CRYLINK: return 3;
+ case WEP_HLAC: return 3;
+ case WEP_MINSTANEX: return 3;
+ case WEP_NEX: return 3;
+ case WEP_HAGAR: return 2;
+ case WEP_ROCKET_LAUNCHER: return 2;
+ case WEP_SEEKER: return 2;
+ case WEP_FIREBALL: return 4;
+ case WEP_HOOK: return 3;
+ default: return -1;
+ }
+}
+
void HUD_WeaponIcons(void)
{
if(!autocvar_hud_weaponicons && !autocvar__hud_configure)
float rows, columns;
rows = mySize_y/mySize_x;
- rows = bound(1, floor((sqrt(4 * (2/1) * rows * WEP_COUNT + rows * rows) + rows + 0.5) / 2), WEP_COUNT);
- // ^^^ weapon icon aspect goes here
+ rows = bound(1, floor((sqrt(4 * autocvar_hud_weaponicons_aspect * rows * WEP_COUNT + rows * rows) + rows + 0.5) / 2), WEP_COUNT);
columns = ceil(WEP_COUNT/rows);
float row, column;
- float a;
+ float a, type, fullammo;
float when;
when = autocvar_hud_weaponicons_complainbubble_time;
float fadetime;
fadetime = autocvar_hud_weaponicons_complainbubble_fadetime;
vector color;
+ vector wpnpos;
+ vector wpnsize;
for(i = 0; i < weapon_cnt; ++i)
{
+ wpnpos = pos + eX * column * mySize_x*(1/columns) + eY * row * mySize_y*(1/rows);
+ wpnsize = eX * mySize_x*(1/columns) + eY * mySize_y*(1/rows);
+
self = weaponorder[i];
weapid = self.impulse;
// draw background behind currently selected weapon
if(self.weapon == activeweapon)
- drawpic_aspect_skin(pos + eX * column * mySize_x*(1/columns) + eY * row * mySize_y*(1/rows), "weapon_current_bg", eX * mySize_x*(1/columns) + eY * mySize_y*(1/rows), '1 1 1', fade * panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawpic_aspect_skin(wpnpos, "weapon_current_bg", wpnsize, '1 1 1', fade * panel_fg_alpha, DRAWFLAG_NORMAL);
- // draw the weapon accuracy on the HUD
- if(hud_accuracy_hud && !(gametype == GAME_RACE || gametype == GAME_CTS))
+ // draw the weapon accuracy
+ if(autocvar_hud_weaponicons_accuracy && !(gametype == GAME_RACE || gametype == GAME_CTS))
{
if(weapon_damage)
weapon_stats = floor(100 * weapon_hit / weapon_damage);
color_x = 1;
color_y = weapon_stats/autocvar_hud_weaponicons_accuracy_yellow; // green value between 0 -> 1
}
+ color_z = 0;
if(weapon_damage)
- drawpic_aspect_skin(pos + eX * column * mySize_x*(1/columns) + eY * row * mySize_y*(1/rows), "weapon_accuracy", eX * mySize_x*(1/columns) + eY * mySize_y*(1/rows), color, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawpic_aspect_skin(wpnpos, "weapon_accuracy", wpnsize, color, panel_fg_alpha, DRAWFLAG_NORMAL);
}
// draw the weapon icon
if((self.impulse >= 0) && (stat_weapons & self.weapons))
{
- drawpic_aspect_skin(pos + eX * column * mySize_x*(1/columns) + eY * row * mySize_y*(1/rows), strcat("weapon", self.netname), eX * mySize_x*(1/columns) + eY * mySize_y*(1/rows), '1 1 1', fade * panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawpic_aspect_skin(wpnpos, strcat("weapon", self.netname), wpnsize, '1 1 1', fade * panel_fg_alpha, DRAWFLAG_NORMAL);
if(autocvar_hud_weaponicons_number == 1) // weapon number
- drawstring(pos + eX * column * mySize_x*(1/columns) + eY * row * mySize_y*(1/rows), ftos(weapid), '1 1 0' * 0.5 * mySize_y*(1/rows), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawstring(wpnpos, ftos(weapid), '1 1 0' * 0.5 * mySize_y*(1/rows), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
else if(autocvar_hud_weaponicons_number == 2) // bind
- drawstring(pos + eX * column * mySize_x*(1/columns) + eY * row * mySize_y*(1/rows), getcommandkey(ftos(weapid), strcat("impulse ", ftos(weapid))), '1 1 0' * 0.5 * mySize_y*(1/rows), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawstring(wpnpos, getcommandkey(ftos(weapid), strcat("impulse ", ftos(weapid))), '1 1 0' * 0.5 * mySize_y*(1/rows), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+
+ // draw ammo status bar
+ if(autocvar_hud_weaponicons_ammo && weapid != WEP_TUBA && weapid != WEP_LASER && weapid != WEP_PORTO)
+ {
+ a = 0;
+ type = GetAmmoTypeForWep(weapid);
+ if(type != -1)
+ a = getstati(GetAmmoStat(type)); // how much ammo do we have?
+
+ if(a > 0)
+ {
+ switch(type) {
+ case 0: fullammo = autocvar_hud_weaponicons_ammo_full_shells; break;
+ case 1: fullammo = autocvar_hud_weaponicons_ammo_full_nails; break;
+ case 2: fullammo = autocvar_hud_weaponicons_ammo_full_rockets; break;
+ case 3: fullammo = autocvar_hud_weaponicons_ammo_full_cells; break;
+ case 4: fullammo = autocvar_hud_weaponicons_ammo_full_fuel; break;
+ default: fullammo = 60;
+ }
+
+ vector barsize;
+ vector barpos;
+ if(wpnsize_x/wpnsize_y > autocvar_hud_weaponicons_aspect)
+ {
+ barsize_x = autocvar_hud_weaponicons_aspect * wpnsize_y;
+ barsize_y = wpnsize_y;
+
+ barpos_x = wpnpos_x + (wpnsize_x - barsize_x) / 2;
+ barpos_y = wpnpos_y;
+ }
+ else
+ {
+ barsize_y = 1/autocvar_hud_weaponicons_aspect * wpnsize_x;
+ barsize_x = wpnsize_x;
+
+ barpos_y = wpnpos_y + (wpnsize_y - barsize_y) / 2;
+ barpos_x = wpnpos_x;
+ }
+
+ drawsetcliparea(
+ barpos_x,
+ barpos_y,
+ barsize_x * bound(0, a/fullammo, 1),
+ barsize_y);
+ drawpic_aspect_skin(wpnpos, "weapon_ammo", wpnsize, autocvar_hud_weaponicons_ammo_color, panel_fg_alpha * autocvar_hud_weaponicons_ammo_alpha, DRAWFLAG_NORMAL);
+ drawresetcliparea();
+ }
+ }
}
// draw a "ghost weapon icon" if you don't have the weapon
else
{
- drawpic_aspect_skin(pos + eX * column * mySize_x*(1/columns) + eY * row * mySize_y*(1/rows), strcat("weapon", self.netname), eX * mySize_x*(1/columns) + eY * mySize_y*(1/rows), '0 0 0', panel_fg_alpha * 0.5, DRAWFLAG_NORMAL);
+ drawpic_aspect_skin(wpnpos, strcat("weapon", self.netname), wpnsize, '0 0 0', panel_fg_alpha * 0.5, DRAWFLAG_NORMAL);
}
// draw the complain message
string s;
if(complain_weapon_type == 0) {
s = "Out of ammo";
- color = '1 0 0';
+ color = autocvar_hud_weaponicons_complainbubble_color_outofammo;
}
else if(complain_weapon_type == 1) {
s = "Don't have";
- color = '1 1 0';
+ color = autocvar_hud_weaponicons_complainbubble_color_donthave;
}
else {
s = "Unavailable";
- color = '1 1 1';
+ color = autocvar_hud_weaponicons_complainbubble_color_unavailable;
}
- drawpic_aspect_skin(pos + eX * column * mySize_x*(1/columns) + eY * row * mySize_y*(1/rows) + '1 1 0' * autocvar_hud_weaponicons_complainbubble_padding, "weapon_complainbubble", eX * mySize_x*(1/columns) + eY * mySize_y*(1/rows) - '2 2 0' * autocvar_hud_weaponicons_complainbubble_padding, color, a * panel_fg_alpha, DRAWFLAG_NORMAL);
- drawstring_aspect(pos + eX * column * mySize_x*(1/columns) + eY * row * mySize_y*(1/rows) + '1 1 0' * autocvar_hud_weaponicons_complainbubble_padding, s, eX * mySize_x*(1/columns) + eY * mySize_y*(1/rows) - '2 2 0' * autocvar_hud_weaponicons_complainbubble_padding, '1 1 1', panel_fg_alpha * a, DRAWFLAG_NORMAL);
+ drawpic_aspect_skin(wpnpos + '1 1 0' * autocvar_hud_weaponicons_complainbubble_padding, "weapon_complainbubble", wpnsize - '2 2 0' * autocvar_hud_weaponicons_complainbubble_padding, color, a * panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawstring_aspect(wpnpos + '1 1 0' * autocvar_hud_weaponicons_complainbubble_padding, s, wpnsize - '2 2 0' * autocvar_hud_weaponicons_complainbubble_padding, '1 1 1', panel_fg_alpha * a, DRAWFLAG_NORMAL);
}
++row;
// Inventory (#1)
//
// TODO: macro
-float GetAmmoStat(float i)
-{
- switch(i)
- {
- case 0: return STAT_SHELLS;
- case 1: return STAT_NAILS;
- case 2: return STAT_ROCKETS;
- case 3: return STAT_CELLS;
- case 4: return STAT_FUEL;
- default: return -1;
- }
-}
-
float GetAmmoItemCode(float i)
{
switch(i)
{
if(autocvar_hud_healtharmor_baralign == 1 || autocvar_hud_healtharmor_baralign == 3) { // right align
barpos = pos + eX * mySize_x - eX * mySize_x * min(1, leftcnt/200);
- barsize = eX * mySize_x * min(1, rightcnt/200) + eY * 0.5 * mySize_y;
+ barsize = eX * mySize_x * min(1, leftcnt/200) + eY * 0.5 * mySize_y;
} else { // left align
barpos = pos;
- barsize = eX * mySize_x * min(1, rightcnt/200) + eY * 0.5 * mySize_y;
+ barsize = eX * mySize_x * min(1, leftcnt/200) + eY * 0.5 * mySize_y;
}
HUD_Panel_GetProgressBarColor(leftname)
gentle = (autocvar_cl_gentle || autocvar_cl_gentle_messages);
if(msg == MSG_SUICIDE) {
- // TODO: cl_gentle
w = DEATH_WEAPONOF(type);
if(WEP_VALID(w)) {
HUD_KillNotify_Push(s1, "", 0, DEATH_GENERIC);
} else if(type == INFO_RETURNFLAG) {
HUD_KillNotify_Push(s1, s2, 0, INFO_RETURNFLAG);
print(s1, "^7 returned the ", s2, "\n");
+ } else if(type == INFO_CAPTUREFLAG) {
+ HUD_KillNotify_Push(s1, s2, 0, INFO_CAPTUREFLAG);
+ print(s1, "^7 captured the ", s2, s3, "\n");
}
}
}
fadetime = autocvar_hud_notify_fadetime;
string s;
- vector color;
vector pos_attacker, pos_victim;
vector weap_pos;
if(killnotify_deathtype[j] == DEATH_GENERIC)
{
s = "notify_death";
- color = '1 1 1';
}
else if(killnotify_deathtype[j] == DEATH_NOAMMO)
{
s = "notify_outofammo";
- color = '1 1 1';
}
else if(killnotify_deathtype[j] == DEATH_KILL)
{
s = "notify_selfkill";
- color = '1 1 1';
}
else if(killnotify_deathtype[j] == DEATH_CAMP)
{
s = "notify_camping";
- color = '1 1 1';
}
else if(killnotify_deathtype[j] == KILL_TEAM_RED)
{
- s = "notify_teamkill";
- color = '1 0 0';
+ s = "notify_teamkill_red";
}
else if(killnotify_deathtype[j] == KILL_TEAM_BLUE)
{
- s = "notify_teamkill";
- color = '0 0 1';
+ s = "notify_teamkill_blue";
}
else if(killnotify_deathtype[j] == DEATH_DROWN)
{
- s = "notify_";
- color = '1 1 1';
+ s = "notify_water";
}
else if(killnotify_deathtype[j] == DEATH_SLIME)
{
- s = "notify_";
- color = '1 1 1';
+ s = "notify_slime";
}
else if(killnotify_deathtype[j] == DEATH_LAVA)
{
- s = "notify_";
- color = '1 1 1';
+ s = "notify_lava";
}
else if(killnotify_deathtype[j] == DEATH_FALL)
{
- s = "notify_";
- color = '1 1 1';
+ s = "notify_fall";
}
else if(killnotify_deathtype[j] == DEATH_SHOOTING_STAR)
{
- s = "notify_";
- color = '1 1 1';
+ s = "notify_shootingstar";
}
else if(killnotify_deathtype[j] == DEATH_HURTTRIGGER || killnotify_deathtype[j] == DEATH_CUSTOM)
{
- s = "notify_";
- color = '1 1 1';
+ s = "notify_death";
}
else if(killnotify_deathtype[j] == INFO_GOTFLAG)
{
if(killnotify_victims[j] == "^1RED^7 flag")
{
- s = "flag_red_carrying";
- color = '1 0 0';
+ s = "notify_red_taken";
}
else
{
- s = "flag_blue_carrying";
- color = '0 0 1';
+ s = "notify_blue_taken";
}
}
else if(killnotify_deathtype[j] == INFO_RETURNFLAG)
{
if(killnotify_victims[j] == "^1RED^7 flag")
{
- s = "flag_red_taken";
- color = '1 0 0';
+ s = "notify_red_returned";
}
else
{
- s = "flag_blue_taken";
- color = '0 0 1';
+ s = "notify_blue_returned";
}
}
else if(killnotify_deathtype[j] == INFO_LOSTFLAG)
{
if(killnotify_victims[j] == "^1RED^7 flag")
{
- s = "flag_red_lost";
- color = '1 0 0';
+ s = "notify_red_lost";
+ }
+ else
+ {
+ s = "notify_blue_lost";
+ }
+ }
+ else if(killnotify_deathtype[j] == INFO_CAPTUREFLAG)
+ {
+ if(killnotify_victims[j] == "^1RED^7 flag")
+ {
+ s = "notify_red_captured";
}
else
{
- s = "flag_blue_lost";
- color = '0 0 1';
+ s = "notify_blue_captured";
}
}
if(s != "" && a)
{
- drawpic_aspect_skin(weap_pos, s, '2 1 0' * height, color, panel_fg_alpha * a, DRAWFLAG_NORMAL);
+ drawpic_aspect_skin(weap_pos, s, '2 1 0' * height, '1 1 1', panel_fg_alpha * a, DRAWFLAG_NORMAL);
drawcolorcodedstring(pos_attacker, attacker, fontsize, panel_fg_alpha * a, DRAWFLAG_NORMAL);
}
}
if(autocvar__hud_configure) // example actions for config mode
{
s = "weaponelectro";
- color = '1 1 1';
}
else if(WEP_VALID(killnotify_deathtype[j]))
{
self = get_weaponinfo(killnotify_deathtype[j]);
s = strcat("weapon", self.netname);
- color = '1 1 1';
}
else if(killnotify_deathtype[j] == KILL_TEAM_RED)
{
- s = "notify_teamkill";
- color = '1 0 0';
+ s = "notify_teamkill_red";
}
else if(killnotify_deathtype[j] == KILL_TEAM_BLUE)
{
- s = "notify_teamkill";
- color = '0 0 1';
+ s = "notify_teamkill_red";
}
else if(killnotify_deathtype[j] == DEATH_DROWN)
{
s = "notify_water";
- color = '1 1 1';
}
else if(killnotify_deathtype[j] == DEATH_SLIME)
{
s = "notify_slime";
- color = '1 1 1';
}
else if(killnotify_deathtype[j] == DEATH_LAVA)
{
s = "notify_lava";
- color = '1 1 1';
}
else if(killnotify_deathtype[j] == DEATH_FALL)
{
s = "notify_fall";
- color = '1 1 1';
}
else if(killnotify_deathtype[j] == DEATH_SHOOTING_STAR)
{
s = "notify_shootingstar";
- color = '1 1 1';
}
else if(killnotify_deathtype[j] == DEATH_HURTTRIGGER || killnotify_deathtype[j] == DEATH_CUSTOM) // DEATH_CUSTOM is also void, right?
{
s = "notify_void";
- color = '1 1 1';
}
if(s != "" && a)
{
- drawpic_aspect_skin(weap_pos, s, '2 1 0' * height, color, panel_fg_alpha * a, DRAWFLAG_NORMAL);
+ drawpic_aspect_skin(weap_pos, s, '2 1 0' * height, '1 1 1', panel_fg_alpha * a, DRAWFLAG_NORMAL);
drawcolorcodedstring(pos_attacker, attacker, fontsize, panel_fg_alpha * a, DRAWFLAG_NORMAL);
drawcolorcodedstring(pos_victim, victim, fontsize, panel_fg_alpha * a, DRAWFLAG_NORMAL);
}
//
void HUD_Radar(void)
{
- if (!(autocvar_hud_radar != 0 && (autocvar_hud_radar == 2 || teamplay || autocvar__hud_configure)))
+ if ((autocvar_hud_radar == 0 || (autocvar_hud_radar != 2 && !teamplay)) && !autocvar__hud_configure)
return;
float id = HUD_PANEL_RADAR;
}
float score, distribution, leader;
- float score_len;
vector distribution_color;
entity tm, pl, me;
me = (spectatee_status > 0) ? playerslots[spectatee_status - 1] : playerslots[player_localentnum - 1];
- // TODO... this (race part) still uses constant coordinates :/
if((scores_flags[ps_primary] & SFL_TIME) && !teamplay) { // race/cts record display on HUD
- /*pl = players.sort_next;
+ string timer, distrtimer;
+
+ pl = players.sort_next;
if(pl == me)
pl = pl.sort_next;
if(scores_flags[ps_primary] & SFL_ZERO_IS_WORST)
pl = world;
score = me.(scores[ps_primary]);
-
- float racemin, racesec, racemsec;
- float distsec, distmsec, minusplus;
-
- racemin = floor(score/(60 * TIME_FACTOR));
- racesec = floor((score - racemin*(60 * TIME_FACTOR))/TIME_FACTOR);
- racemsec = score - racemin*60*TIME_FACTOR - racesec*TIME_FACTOR;
+ timer = TIME_ENCODED_TOSTRING(score);
if (pl && ((!(scores_flags[ps_primary] & SFL_ZERO_IS_WORST)) || score)) {
// distribution display
distribution = me.(scores[ps_primary]) - pl.(scores[ps_primary]);
- if (distribution < TIME_FACTOR && distribution > -TIME_FACTOR)
- distmsec = fabs(distribution);
- else {
- distsec = floor(fabs(distribution)/TIME_FACTOR);
- distmsec = fabs(distribution) - distsec*TIME_FACTOR;
- if (distribution < 0)
- distsec = -distsec;
- }
+ distrtimer = ftos(distribution/pow(10, TIME_DECIMALS));
if (distribution <= 0) {
- distribution_color = eY;
- minusplus = 1; // minusplus 1: always prefix with minus sign
+ distribution_color = '0 1 0';
}
else {
- distribution_color = eX;
- minusplus = 2; // minusplus 1: always prefix with plus sign
+ distribution_color = '1 0 0';
}
- //HUD_DrawXNum(bottomright - '0 48 0' - '16 0 0' * TIME_DECIMALS, distmsec, -TIME_DECIMALS, 0, 16, distribution_color, 0, 0, panel_fg_alpha, DRAWFLAG_NORMAL);
- //HUD_DrawXNum(bottomright - '68 48 0' - '16 0 0' * TIME_DECIMALS, distsec, 4, minusplus, 16, distribution_color, 0, 0, panel_fg_alpha, DRAWFLAG_NORMAL);
- drawpic_aspect_skin(bottomright - '10 48 0' - '16 0 0' * TIME_DECIMALS, "num_dot", '16 16 0', distribution_color, panel_fg_alpha, DRAWFLAG_ADDITIVE);
+ drawstring_aspect(pos + eX * 0.75 * mySize_x, distrtimer, eX * 0.25 * mySize_x + eY * (1/3) * mySize_y, distribution_color, panel_fg_alpha, DRAWFLAG_NORMAL);
}
// race record display
- if (distribution <= 0 || distribution == score) // draw the highlight background behind the timer if we have the lead
- drawpic_aspect_skin(bottomright - '0 32 0' - '32 0 0' * (4 + TIME_DECIMALS), "num_leading_4", '0 28 0' + '32 0 0' * (4 + TIME_DECIMALS), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
-
- //HUD_DrawXNum(bottomright - '0 32 0' - TIME_DECIMALS * '30 0 0', racemsec, -TIME_DECIMALS, 0, 30, '1 1 1', 0, 0, panel_fg_alpha, DRAWFLAG_NORMAL);
- //HUD_DrawXNum(bottomright - '0 32 0' - TIME_DECIMALS * '30 0 0' - '66 0 0', racesec, -2, 0, 30, '1 1 1', 0, 0, panel_fg_alpha, DRAWFLAG_NORMAL);
- drawpic_aspect_skin(bottomright - '0 32 0' - TIME_DECIMALS * '30 0 0' - '18 0 0', "num_dot", '30 30 0', '1 1 1', panel_fg_alpha, DRAWFLAG_ADDITIVE);
-
- //HUD_DrawXNum(bottomright - '0 32 0' - TIME_DECIMALS * '30 0 0' - '132 0 0', racemin, -2, 0, 30, '1 1 1', 0, 0, panel_fg_alpha, DRAWFLAG_NORMAL);
- drawpic_aspect_skin(bottomright - '0 32 0' - TIME_DECIMALS * '30 0 0' - '84 0 0', "num_colon", '30 30 0', '1 1 1', panel_fg_alpha, DRAWFLAG_ADDITIVE);
- */
+ if (distribution <= 0)
+ HUD_Panel_DrawHighlight(pos, eX * 0.75 * mySize_x + eY * mySize_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawfont = hud_bigfont;
+ drawstring_aspect(pos, timer, eX * 0.75 * mySize_x + eY * mySize_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawfont = hud_font;
} else if (!teamplay) { // non-teamgames
// me vector := [team/connected frags id]
pl = players.sort_next;
else
distribution_color = eX;
- score_len = strlen(ftos(score));
-
drawstring_aspect(pos + eX * 0.75 * mySize_x, ftos(distribution), eX * 0.25 * mySize_x + eY * (1/3) * mySize_y, distribution_color, panel_fg_alpha, DRAWFLAG_NORMAL);
if (leader)
HUD_Panel_DrawHighlight(pos, eX * 0.75 * mySize_x + eY * mySize_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
score = 123;
leader = 0;
- score_len = strlen(ftos(score));
-
if (score > max_fragcount)
max_fragcount = score;
if(s != "" && a > 0)
{
- dummyfunction(0, 0, 0, 0, 0, 0, 0, 0); // work around DP bug (set OFS_PARAM5 to 0)
drawcolorcodedstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, TRUE, '1 1 0' * 0.2 * mySize_y) + eY * 0.6 * mySize_y, s, '1 1 0' * 0.2 * mySize_y, panel_fg_alpha * a, DRAWFLAG_NORMAL);
}
if(a > 0)
{
s = strcat("^1PENALTY: ", ftos_decimals(race_penaltytime * 0.1, 1), " (", race_penaltyreason, ")");
- dummyfunction(0, 0, 0, 0, 0, 0, 0, 0); // work around DP bug (set OFS_PARAM5 to 0)
drawcolorcodedstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, TRUE, '1 1 0' * 0.2 * mySize_y) + eY * 0.8 * mySize_y, s, '1 1 0' * 0.2 * mySize_y, panel_fg_alpha * a, DRAWFLAG_NORMAL);
}
}
{
a = bound(0, 2 - (time - race_mycheckpointtime), 1);
s = MakeRaceString(race_mycheckpoint, TIME_DECODE(race_mycheckpointdelta), -!race_mycheckpointenemy, race_mycheckpointlapsdelta, race_mycheckpointenemy);
- dummyfunction(0, 0, 0, 0, 0, 0, 0, 0); // work around DP bug (set OFS_PARAM5 to 0)
drawcolorcodedstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, TRUE, '1 1 0' * 0.2 * mySize_y) + eY * 0.6 * mySize_y, s, '1 1 0' * 0.2 * mySize_y, panel_fg_alpha * a, DRAWFLAG_NORMAL);
}
if(race_othercheckpointtime && race_othercheckpointenemy != "")
{
a = bound(0, 2 - (time - race_othercheckpointtime), 1);
s = MakeRaceString(race_othercheckpoint, -TIME_DECODE(race_othercheckpointdelta), -!race_othercheckpointenemy, race_othercheckpointlapsdelta, race_othercheckpointenemy);
- dummyfunction(0, 0, 0, 0, 0, 0, 0, 0); // work around DP bug (set OFS_PARAM5 to 0)
drawcolorcodedstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, TRUE, '1 1 0' * 0.2 * mySize_y) + eY * 0.6 * mySize_y, s, '1 1 0' * 0.2 * mySize_y, panel_fg_alpha * a, DRAWFLAG_NORMAL);
}
s = strcat("^1PENALTY: ", ftos_decimals(t - time, 1), " (", race_penaltyreason, ")");
else
s = strcat("^2PENALTY: 0.0 (", race_penaltyreason, ")");
- dummyfunction(0, 0, 0, 0, 0, 0, 0, 0); // work around DP bug (set OFS_PARAM5 to 0)
drawcolorcodedstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, TRUE, '1 1 0' * 0.2 * mySize_y) + eY * 0.6 * mySize_y, s, '1 1 0' * 0.2 * mySize_y, panel_fg_alpha * a, DRAWFLAG_NORMAL);
}
}
mySize -= '2 2 0' * panel_bg_padding;
}
- // always force 2:1 aspect
- vector newSize;
- if(mySize_x/mySize_y > 2)
+ // force custom aspect
+ if(autocvar_hud_pressedkeys_aspect)
{
- newSize_x = 2 * mySize_y;
- newSize_y = mySize_y;
+ vector newSize;
+ if(mySize_x/mySize_y > autocvar_hud_pressedkeys_aspect)
+ {
+ newSize_x = autocvar_hud_pressedkeys_aspect * mySize_y;
+ newSize_y = mySize_y;
- pos_x = pos_x + (mySize_x - newSize_x) / 2;
- }
- else
- {
- newSize_y = 1/2 * mySize_x;
- newSize_x = mySize_x;
+ pos_x = pos_x + (mySize_x - newSize_x) / 2;
+ }
+ else
+ {
+ newSize_y = 1/autocvar_hud_pressedkeys_aspect * mySize_x;
+ newSize_x = mySize_x;
- pos_y = pos_y + (mySize_y - newSize_y) / 2;
+ pos_y = pos_y + (mySize_y - newSize_y) / 2;
+ }
+ mySize = newSize;
}
- mySize = newSize;
vector keysize;
keysize = eX * mySize_x * (1/3) + eY * mySize_y * 0.5;
float f;
vector color;
- if(teamplay && autocvar_hud_dock_color_team) {
+ if((teamplay) && autocvar_hud_dock_color_team) {
f = stof(getplayerkey(player_localentnum - 1, "colors"));
color = colormapPaletteColor(mod(f, 16), 1) * autocvar_hud_dock_color_team;
}
+ else if(autocvar_hud_configure_teamcolorforced && autocvar__hud_configure && autocvar_hud_dock_color_team) {
+ color = '1 0 0' * autocvar_hud_dock_color_team;
+ }
else if(autocvar_hud_dock_color == "shirt") {
f = stof(getplayerkey(player_localentnum - 1, "colors"));
color = colormapPaletteColor(floor(f / 16), 0);