X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fhud.qc;h=2fcab695adbd44d90e0975a44e6fa20d4b7890d3;hb=d1524439b1521ce2fcea1359c2ed7501fa5550dd;hp=7acfacb8c428b99d8246db0b10b8f9a3c2db8335;hpb=409ea2630e52902d32a6dab3b3558682a2721146;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/hud.qc b/qcsrc/client/hud.qc index 7acfacb8c..2fcab695a 100644 --- a/qcsrc/client/hud.qc +++ b/qcsrc/client/hud.qc @@ -142,16 +142,16 @@ float stringwidth_nocolors(string s, vector theSize) return stringwidth(s, FALSE, theSize); } -void drawstringright(vector position, string text, vector scale, vector rgb, float alpha, float flag) +void drawstringright(vector position, string text, vector scale, vector rgb, float theAlpha, float flag) { position_x -= 2 / 3 * strlen(text) * scale_x; - drawstring(position, text, scale, rgb, alpha, flag); + drawstring(position, text, scale, rgb, theAlpha, flag); } -void drawstringcenter(vector position, string text, vector scale, vector rgb, float alpha, float flag) +void drawstringcenter(vector position, string text, vector scale, vector rgb, float theAlpha, float flag) { position_x = 0.5 * (vid_conwidth - 0.6025 * strlen(text) * scale_x); - drawstring(position, text, scale, rgb, alpha, flag); + drawstring(position, text, scale, rgb, theAlpha, flag); } // return the string of the given race place @@ -248,9 +248,9 @@ HUD panels */ // draw the background/borders -#define HUD_Panel_DrawBg(alpha)\ +#define HUD_Panel_DrawBg(theAlpha)\ 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)) + 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 * theAlpha, '1 1 0' * (panel_bg_border/BORDER_MULTIPLIER)) //basically the same code of draw_ButtonPicture and draw_VertButtonPicture for the menu void HUD_Panel_DrawProgressBar(vector theOrigin, vector theSize, string pic, float length_ratio, float vertical, float baralign, vector theColor, float theAlpha, float drawflag) @@ -356,9 +356,9 @@ void HUD_Panel_DrawProgressBar(vector theOrigin, vector theSize, string pic, flo } } -void HUD_Panel_DrawHighlight(vector pos, vector mySize, vector color, float alpha, float drawflag) +void HUD_Panel_DrawHighlight(vector pos, vector mySize, vector color, float theAlpha, float drawflag) { - if(!alpha) + if(!theAlpha) return; string pic; @@ -367,10 +367,10 @@ void HUD_Panel_DrawHighlight(vector pos, vector mySize, vector color, float alph pic = "gfx/hud/default/num_leading"; } - drawsubpic(pos, eX * min(mySize_x * 0.5, mySize_y) + eY * mySize_y, pic, '0 0 0', '0.25 1 0', color, alpha, drawflag); + drawsubpic(pos, eX * min(mySize_x * 0.5, mySize_y) + eY * mySize_y, pic, '0 0 0', '0.25 1 0', color, theAlpha, drawflag); if(mySize_x/mySize_y > 2) - drawsubpic(pos + eX * mySize_y, eX * (mySize_x - 2 * mySize_y) + eY * mySize_y, pic, '0.25 0 0', '0.5 1 0', color, alpha, drawflag); - drawsubpic(pos + eX * mySize_x - eX * min(mySize_x * 0.5, mySize_y), eX * min(mySize_x * 0.5, mySize_y) + eY * mySize_y, pic, '0.75 0 0', '0.25 1 0', color, alpha, drawflag); + drawsubpic(pos + eX * mySize_y, eX * (mySize_x - 2 * mySize_y) + eY * mySize_y, pic, '0.25 0 0', '0.5 1 0', color, theAlpha, drawflag); + drawsubpic(pos + eX * mySize_x - eX * min(mySize_x * 0.5, mySize_y), eX * min(mySize_x * 0.5, mySize_y) + eY * mySize_y, pic, '0.75 0 0', '0.25 1 0', color, theAlpha, drawflag); } // Weapon icons (#0) @@ -432,33 +432,34 @@ float GetAmmoTypeForWep(float i) void HUD_Weapons(void) { // declarations - float weapons_stat = getstati(STAT_WEAPONS); + float weapons_stat = getstati(STAT_WEAPONS); float i, f, a, j, factor; - float screen_ar, center_x, center_y; - float weapon_count, weapon_id, weapon_alpha; - float row, column, rows, columns; + float screen_ar, center_x, center_y; + float weapon_count, weapon_id, weapon_alpha; + float row, column, rows, columns; float aspect = autocvar_hud_panel_weapons_aspect; - + float show_accuracy, panel_weapon_accuracy; - + float timeout = autocvar_hud_panel_weapons_timeout; float timein_effect_length = (autocvar_hud_panel_weapons_timeout_effect ? 0.375 : 0); float timeout_effect_length = (autocvar_hud_panel_weapons_timeout_effect ? 0.75 : 0); - + float ammo_type, ammo_full, ammo_alpha; float barsize_x, barsize_y, baroffset_x, baroffset_y; - + float when = autocvar_hud_panel_weapons_complainbubble_time; 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 - if(hud != HUD_NORMAL) { return; } - + if(hud != HUD_NORMAL) { return; } + if(!autocvar__hud_configure) + { if((!autocvar_hud_panel_weapons) || (spectatee_status == -1)) return; else if(timeout && time >= weapontime + timeout + timeout_effect_length) @@ -466,13 +467,14 @@ void HUD_Weapons(void) weaponprevtime = time; return; } + } else hud_configure_active_panel = HUD_PANEL_WEAPONS; // update generic hud functions HUD_Panel_UpdateCvars(weapons); HUD_Panel_ApplyFadeAlpha(); - + // calculate fading effect to weapon images for when the panel is idle if(autocvar_hud_panel_weapons_fade) { @@ -506,12 +508,12 @@ void HUD_Weapons(void) } } 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; } - + // determine which weapons are going to be shown if (autocvar_hud_panel_weapons_onlyowned) { @@ -520,25 +522,25 @@ void HUD_Weapons(void) if (weapons_stat == 0) // create some fake weapons anyway for(i = 0; i <= WEP_LAST-WEP_FIRST; i += floor((WEP_LAST-WEP_FIRST)/5)) weapons_stat |= power2of(i); - + if(menu_enabled != 2) HUD_Panel_DrawBg(1); // also draw the bg of the entire panel } - + // do we own this weapon? for(i = 0; i <= WEP_LAST-WEP_FIRST; ++i) if(weapons_stat & weaponorder[i].weapons) ++weapon_count; - + // add it anyway if weaponcomplain is shown if((!autocvar__hud_configure) && (autocvar_hud_panel_weapons_complainbubble && time - complain_weapon_time < when + fadetime)) ++weapon_count; - + // might as well commit suicide now, no reason to live ;) if (weapon_count == 0) { return; } - + // reduce size of the panel if (panel_size_y > panel_size_x) { @@ -623,12 +625,12 @@ void HUD_Weapons(void) } } - // draw the background, then change the virtual size of it to better fit other items inside + // draw the background, then change the virtual size of it to better fit other items inside HUD_Panel_DrawBg(1); if(panel_bg_padding) { panel_pos += '1 1 0' * panel_bg_padding; - panel_size -= '1 1 0' * panel_bg_padding; + panel_size -= '2 2 0' * panel_bg_padding; } // after the sizing and animations are done, update the other values @@ -636,7 +638,7 @@ void HUD_Weapons(void) rows = bound(1, floor((sqrt(4 * aspect * rows * weapon_count + rows * rows) + rows + 0.5) / 2), weapon_count); columns = ceil(weapon_count/rows); weapon_size = eX * panel_size_x*(1/columns) + eY * panel_size_y*(1/rows); - + // calculate position/size for visual bar displaying ammount of ammo status if (autocvar_hud_panel_weapons_ammo) { @@ -670,10 +672,10 @@ void HUD_Weapons(void) // retrieve information about the current weapon to be drawn self = weaponorder[i]; weapon_id = self.impulse; - + // skip if this weapon doesn't exist if (!self || self.impulse < 0) { continue; } - + // skip this weapon if we don't own it (and onlyowned is enabled)-- or if weapons_complainbubble is showing for this weapon if (autocvar_hud_panel_weapons_onlyowned && !((weapons_stat & self.weapons) @@ -681,7 +683,7 @@ void HUD_Weapons(void) && time - complain_weapon_time < when + fadetime && autocvar_hud_panel_weapons_complainbubble))) continue; - + // figure out the drawing position of weapon weapon_pos = (panel_pos + eX * column * weapon_size_x @@ -723,19 +725,19 @@ void HUD_Weapons(void) case 1: // weapon number drawstring(weapon_pos, ftos(weapon_id), '1 1 0' * 0.5 * weapon_size_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); break; - + case 2: // bind drawstring(weapon_pos, getcommandkey(ftos(weapon_id), strcat("impulse ", ftos(weapon_id))), '1 1 0' * 0.5 * weapon_size_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); break; - + case 3: // weapon name drawstring(weapon_pos, self.netname, '1 1 0' * 0.5 * weapon_size_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); break; - + default: // nothing break; } - + // draw ammo status bar if(autocvar_hud_panel_weapons_ammo && self.weapon != WEP_TUBA && self.weapon != WEP_LASER && self.weapon != WEP_PORTO) { @@ -769,7 +771,7 @@ void HUD_Weapons(void) { drawpic_aspect_skin(weapon_pos, strcat("weapon", self.netname), weapon_size, '0 0 0', panel_fg_alpha * 0.5, DRAWFLAG_NORMAL); } - + // draw the complain message if(time - complain_weapon_time < when + fadetime && self.weapon == complain_weapon && autocvar_hud_panel_weapons_complainbubble) { @@ -855,11 +857,11 @@ void DrawAmmoItem(vector myPos, vector mySize, float itemcode, float currently_s else color = '1 1 1'; - float alpha; + float theAlpha; if(currently_selected) - alpha = 1; + theAlpha = 1; else - alpha = 0.7; + theAlpha = 0.7; vector picpos, numpos; if(autocvar_hud_panel_ammo_iconalign) @@ -877,19 +879,19 @@ void DrawAmmoItem(vector myPos, vector mySize, float itemcode, float currently_s drawpic_aspect_skin(myPos, "ammo_current_bg", mySize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); if(a > 0 && autocvar_hud_panel_ammo_progressbar) - HUD_Panel_DrawProgressBar(myPos + eX * autocvar_hud_panel_ammo_progressbar_xoffset * mySize_x, mySize - eX * autocvar_hud_panel_ammo_progressbar_xoffset * mySize_x, autocvar_hud_panel_ammo_progressbar_name, a/autocvar_hud_panel_ammo_maxammo, 0, 0, color, autocvar_hud_progressbar_alpha * panel_fg_alpha * alpha, DRAWFLAG_NORMAL); + HUD_Panel_DrawProgressBar(myPos + eX * autocvar_hud_panel_ammo_progressbar_xoffset * mySize_x, mySize - eX * autocvar_hud_panel_ammo_progressbar_xoffset * mySize_x, autocvar_hud_panel_ammo_progressbar_name, a/autocvar_hud_panel_ammo_maxammo, 0, 0, color, autocvar_hud_progressbar_alpha * panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL); if(autocvar_hud_panel_ammo_text) { if(a > 0 || infinite_ammo) - drawstring_aspect(numpos, ftos(a), eX * (2/3) * mySize_x + eY * mySize_y, color, panel_fg_alpha * alpha, DRAWFLAG_NORMAL); + drawstring_aspect(numpos, ftos(a), eX * (2/3) * mySize_x + eY * mySize_y, color, panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL); else // "ghost" ammo count - drawstring_aspect(numpos, ftos(a), eX * (2/3) * mySize_x + eY * mySize_y, '0 0 0', panel_fg_alpha * alpha * 0.5, DRAWFLAG_NORMAL); + drawstring_aspect(numpos, ftos(a), eX * (2/3) * mySize_x + eY * mySize_y, '0 0 0', panel_fg_alpha * theAlpha * 0.5, DRAWFLAG_NORMAL); } if(a > 0 || infinite_ammo) - drawpic_aspect_skin(picpos, GetAmmoPicture(itemcode), '1 1 0' * mySize_y, '1 1 1', panel_fg_alpha * alpha, DRAWFLAG_NORMAL); + drawpic_aspect_skin(picpos, GetAmmoPicture(itemcode), '1 1 0' * mySize_y, '1 1 1', panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL); else // "ghost" ammo icon - drawpic_aspect_skin(picpos, GetAmmoPicture(itemcode), '1 1 0' * mySize_y, '0 0 0', panel_fg_alpha * alpha * 0.5, DRAWFLAG_NORMAL); + drawpic_aspect_skin(picpos, GetAmmoPicture(itemcode), '1 1 0' * mySize_y, '0 0 0', panel_fg_alpha * theAlpha * 0.5, DRAWFLAG_NORMAL); } void HUD_Ammo(void) @@ -931,7 +933,7 @@ void HUD_Ammo(void) 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) { @@ -957,7 +959,7 @@ void HUD_Ammo(void) DrawAmmoItem(pos, ammo_size, 2, true, FALSE); //show rockets return; } - stat_items = getstati(STAT_ITEMS); + stat_items = getstati(STAT_ITEMS, 0, 24); if (stat_items & IT_UNLIMITED_WEAPON_AMMO) infinite_ammo = TRUE; for (i = 0; i < AMMO_COUNT; ++i) { @@ -971,7 +973,7 @@ void HUD_Ammo(void) return; // nothing to display } - stat_items = getstati(STAT_ITEMS); + stat_items = getstati(STAT_ITEMS, 0, 24); if (stat_items & IT_UNLIMITED_WEAPON_AMMO) infinite_ammo = TRUE; for (i = 0; i < AMMO_COUNT; ++i) { @@ -986,7 +988,7 @@ void HUD_Ammo(void) } } -void DrawNumIcon(vector myPos, vector mySize, float x, string icon, float vertical, float icon_right_align, vector color, float alpha) +void DrawNumIcon(vector myPos, vector mySize, float x, string icon, float vertical, float icon_right_align, vector color, float theAlpha) { vector newPos, newSize; vector picpos, numpos; @@ -1022,12 +1024,12 @@ void DrawNumIcon(vector myPos, vector mySize, float x, string icon, float vertic } newSize_y /= 2; - drawpic_aspect_skin(picpos, icon, newSize, '1 1 1', panel_fg_alpha * alpha, DRAWFLAG_NORMAL); + drawpic_aspect_skin(picpos, icon, newSize, '1 1 1', panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL); // make number smaller than icon, it looks better // reduce only y to draw numbers with different number of digits with the same y size numpos_y += newSize_y * ((1 - 0.7) / 2); newSize_y *= 0.7; - drawstring_aspect(numpos, ftos(x), newSize, color, panel_fg_alpha * alpha, DRAWFLAG_NORMAL); + drawstring_aspect(numpos, ftos(x), newSize, color, panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL); return; } @@ -1059,8 +1061,8 @@ void DrawNumIcon(vector myPos, vector mySize, float x, string icon, float vertic picpos = newPos; } - drawstring_aspect(numpos, ftos(x), '2 1 0' * newSize_y, color, panel_fg_alpha * alpha, DRAWFLAG_NORMAL); - drawpic_aspect_skin(picpos, icon, '1 1 0' * newSize_y, '1 1 1', panel_fg_alpha * alpha, DRAWFLAG_NORMAL); + drawstring_aspect(numpos, ftos(x), '2 1 0' * newSize_y, color, panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL); + drawpic_aspect_skin(picpos, icon, '1 1 0' * newSize_y, '1 1 1', panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL); } void DrawNumIcon_expanding(vector myPos, vector mySize, float x, string icon, float vertical, float icon_right_align, vector color, float fadelerp) @@ -1080,7 +1082,7 @@ void HUD_Powerups(void) { if(!autocvar_hud_panel_powerups) return; if(spectatee_status == -1) return; - if not(getstati(STAT_ITEMS) & (IT_STRENGTH | IT_INVINCIBLE)) return; + if not(getstati(STAT_ITEMS, 0, 24) & (IT_STRENGTH | IT_INVINCIBLE)) return; if (getstati(STAT_HEALTH) <= 0) return; strength_time = bound(0, getstatf(STAT_STRENGTH_FINISHED) - time, 99); @@ -1517,7 +1519,7 @@ void HUD_KillNotify(string s1, string s2, string s3, float type, float msg) // s alsoprint = (autocvar_hud_panel_notify_print || !panel_enabled); // print message to console if: notify panel disabled, or cvar to do so enabled gentle = (autocvar_cl_gentle || autocvar_cl_gentle_messages); - if ((msg == MSG_SUICIDE || msg == MSG_KILL || msg == MSG_KILL_ACTION) && gametype == GAME_CTS) // selfkill isn't interesting in CTS and only spams up the notify panel + if ((msg == MSG_SUICIDE || msg == MSG_KILL || msg == MSG_KILL_ACTION) && gametype == MAPINFO_TYPE_CTS) // selfkill isn't interesting in CTS and only spams up the notify panel return; if(msg == MSG_SUICIDE) { @@ -1940,84 +1942,84 @@ void HUD_KillCenterprint(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(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!")); } } @@ -2494,8 +2496,8 @@ void HUD_Radar(void) 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( @@ -2670,7 +2672,7 @@ void HUD_Score(void) if(!autocvar__hud_configure) { if(!autocvar_hud_panel_score) return; - if(spectatee_status == -1 && (gametype == GAME_RACE || gametype == GAME_CTS)) return; + if(spectatee_status == -1 && (gametype == MAPINFO_TYPE_RACE || gametype == MAPINFO_TYPE_CTS)) return; } else hud_configure_active_panel = HUD_PANEL_SCORE; @@ -2692,7 +2694,11 @@ void HUD_Score(void) string sign; vector distribution_color; entity tm, pl, me; +#ifdef COMPAT_XON050_ENGINE me = (spectatee_status > 0) ? playerslots[spectatee_status - 1] : playerslots[player_localentnum - 1]; +#else + me = playerslots[player_localentnum - 1]; +#endif if((scores_flags[ps_primary] & SFL_TIME) && !teamplay) { // race/cts record display on HUD string timer, distrtimer; @@ -2770,7 +2776,7 @@ void HUD_Score(void) 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) { @@ -2854,7 +2860,7 @@ void HUD_RaceTimer (void) if(!autocvar__hud_configure) { if(!autocvar_hud_panel_racetimer) return; - if(!(gametype == GAME_RACE || gametype == GAME_CTS)) return; + if(!(gametype == MAPINFO_TYPE_RACE || gametype == MAPINFO_TYPE_CTS)) return; if(spectatee_status == -1) return; } else @@ -3006,7 +3012,7 @@ float vote_change; // "time" when vote_active changed void HUD_VoteWindow(void) { - if(autocvar_cl_allow_uid2name == -1 && (gametype == GAME_CTS || gametype == GAME_RACE || (serverflags & SERVERFLAG_PLAYERSTATS))) + if(autocvar_cl_allow_uid2name == -1 && (gametype == MAPINFO_TYPE_CTS || gametype == MAPINFO_TYPE_RACE || (serverflags & SERVERFLAG_PLAYERSTATS))) { vote_active = 1; if (autocvar__hud_configure) @@ -3198,7 +3204,7 @@ void HUD_Mod_CTF(vector pos, vector mySize) float redflag_statuschange_elapsedtime, blueflag_statuschange_elapsedtime; // time since the status changed float stat_items; - stat_items = getstati(STAT_ITEMS); + stat_items = getstati(STAT_ITEMS, 0, 24); redflag = (stat_items/IT_RED_FLAG_TAKEN) & 3; blueflag = (stat_items/IT_BLUE_FLAG_TAKEN) & 3; @@ -3421,16 +3427,16 @@ void HUD_Mod_KH(vector pos, vector mySize) switch(keyteam) { case COLOR_TEAM1: - drawpic_aspect_skin(pa, "kh_redarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL); // show 30% alpha key + drawpic_aspect_skin(pa, "kh_redarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL); // show 30% theAlpha key break; case COLOR_TEAM2: - drawpic_aspect_skin(pa, "kh_bluearrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL); // show 30% alpha key + drawpic_aspect_skin(pa, "kh_bluearrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL); // show 30% theAlpha key break; case COLOR_TEAM3: - drawpic_aspect_skin(pa, "kh_yellowarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL); // show 30% alpha key + drawpic_aspect_skin(pa, "kh_yellowarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL); // show 30% theAlpha key break; case COLOR_TEAM4: - drawpic_aspect_skin(pa, "kh_pinkarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL); // show 30% alpha key + drawpic_aspect_skin(pa, "kh_pinkarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL); // show 30% theAlpha key break; default: break; @@ -3438,16 +3444,16 @@ void HUD_Mod_KH(vector pos, vector mySize) switch(i) // YAY! switch(i) inside a for loop for i. DailyWTF, here we come! { case 0: - drawpic_aspect_skin(p, "kh_red", kh_size, '1 1 1', a, DRAWFLAG_NORMAL); // show 30% alpha key + drawpic_aspect_skin(p, "kh_red", kh_size, '1 1 1', a, DRAWFLAG_NORMAL); // show 30% theAlpha key break; case 1: - drawpic_aspect_skin(p, "kh_blue", kh_size, '1 1 1', a, DRAWFLAG_NORMAL); // show 30% alpha key + drawpic_aspect_skin(p, "kh_blue", kh_size, '1 1 1', a, DRAWFLAG_NORMAL); // show 30% theAlpha key break; case 2: - drawpic_aspect_skin(p, "kh_yellow", kh_size, '1 1 1', a, DRAWFLAG_NORMAL); // show 30% alpha key + drawpic_aspect_skin(p, "kh_yellow", kh_size, '1 1 1', a, DRAWFLAG_NORMAL); // show 30% theAlpha key break; case 3: - drawpic_aspect_skin(p, "kh_pink", kh_size, '1 1 1', a, DRAWFLAG_NORMAL); // show 30% alpha key + drawpic_aspect_skin(p, "kh_pink", kh_size, '1 1 1', a, DRAWFLAG_NORMAL); // show 30% theAlpha key break; } } @@ -3490,7 +3496,7 @@ void HUD_Mod_Keepaway(vector pos, vector mySize) float BLINK_FREQ = 5; float kaball_alpha = BLINK_BASE + BLINK_FACTOR * cos(time * BLINK_FREQ); - float stat_items = getstati(STAT_ITEMS); + float stat_items = getstati(STAT_ITEMS, 0, 24); float kaball = (stat_items/IT_KEY1) & 1; if(kaball != kaball_prevstatus) @@ -3525,7 +3531,7 @@ void HUD_Mod_NexBall(vector pos, vector mySize) { float stat_items, nb_pb_starttime, dt, p; - stat_items = getstati(STAT_ITEMS); + stat_items = getstati(STAT_ITEMS, 0, 24); nb_pb_starttime = getstatf(STAT_NB_METERSTART); if (stat_items & IT_KEY1) @@ -3567,7 +3573,7 @@ void HUD_Mod_Race(vector pos, vector mySize) { mod_active = 1; // race should never hide the mod icons panel entity me; - me = playerslots[player_localentnum - 1]; + me = playerslots[player_localnum]; float t, score; float f; // yet another function has this score = me.(scores[ps_primary]); @@ -3577,7 +3583,7 @@ void HUD_Mod_Race(vector pos, vector mySize) // clientside personal record string rr; - if(gametype == GAME_CTS) + if(gametype == MAPINFO_TYPE_CTS) rr = CTS_RECORD; else rr = RACE_RECORD; @@ -3675,7 +3681,7 @@ void HUD_Mod_Race(vector pos, vector mySize) drawcolorcodedstring_aspect(namepos, s, '1 0.2 0' * squareSize, panel_fg_alpha * a, DRAWFLAG_NORMAL); drawstring_aspect(rankpos, rankname, '1 0.15 0' * squareSize, '1 1 1', panel_fg_alpha * a, DRAWFLAG_NORMAL); } else if(race_status == 2) { - if(race_status_name == GetPlayerName(player_localentnum -1) || !race_myrank || race_myrank < rank) + if(race_status_name == GetPlayerName(player_localnum) || !race_myrank || race_myrank < rank) drawpic_aspect_skin(medalPos + '0.1 0 0' * squareSize, "race_newrankgreen", '1 1 0' * 0.8 * squareSize, '1 1 1', panel_fg_alpha * a, DRAWFLAG_NORMAL); else drawpic_aspect_skin(medalPos + '0.1 0 0' * squareSize, "race_newrankyellow", '1 1 0' * 0.8 * squareSize, '1 1 1', panel_fg_alpha * a, DRAWFLAG_NORMAL); @@ -3805,7 +3811,7 @@ void HUD_ModIcons(void) 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 && gametype != GAME_DOMINATION) return; + if (gametype != MAPINFO_TYPE_CTF && gametype != MAPINFO_TYPE_KEYHUNT && gametype != MAPINFO_TYPE_NEXBALL && gametype != MAPINFO_TYPE_CTS && gametype != MAPINFO_TYPE_RACE && gametype != MAPINFO_TYPE_CA && gametype != MAPINFO_TYPE_FREEZETAG && gametype != MAPINFO_TYPE_KEEPAWAY && gametype != MAPINFO_TYPE_DOMINATION) return; } else hud_configure_active_panel = HUD_PANEL_MODICONS; @@ -3836,19 +3842,19 @@ void HUD_ModIcons(void) } // these MUST be ran in order to update mod_active - if(gametype == GAME_KEYHUNT) + if(gametype == MAPINFO_TYPE_KEYHUNT) HUD_Mod_KH(pos, mySize); - else if(gametype == GAME_CTF || autocvar__hud_configure) + else if(gametype == MAPINFO_TYPE_CTF || autocvar__hud_configure) HUD_Mod_CTF(pos, mySize); // forcealpha only needed for ctf icons, as only they are shown in config mode - else if(gametype == GAME_NEXBALL) + else if(gametype == MAPINFO_TYPE_NEXBALL) HUD_Mod_NexBall(pos, mySize); - else if(gametype == GAME_CTS || gametype == GAME_RACE) + else if(gametype == MAPINFO_TYPE_CTS || gametype == MAPINFO_TYPE_RACE) HUD_Mod_Race(pos, mySize); - else if(gametype == GAME_CA || gametype == GAME_FREEZETAG) + else if(gametype == MAPINFO_TYPE_CA || gametype == MAPINFO_TYPE_FREEZETAG) HUD_Mod_CA(pos, mySize); - else if(gametype == GAME_DOMINATION) + else if(gametype == MAPINFO_TYPE_DOMINATION) HUD_Mod_Dom(pos, mySize); - else if(gametype == GAME_KEEPAWAY) + else if(gametype == MAPINFO_TYPE_KEEPAWAY) HUD_Mod_Keepaway(pos, mySize); } @@ -3948,7 +3954,7 @@ void HUD_Chat(void) } } } - panel_bg_alpha = max(0.75, panel_bg_alpha); // force an alpha of at least 0.75 + panel_bg_alpha = max(0.75, panel_bg_alpha); // force an theAlpha of at least 0.75 } vector pos, mySize; @@ -3976,7 +3982,7 @@ void HUD_Chat(void) { vector chatsize; chatsize = '1 1 0' * autocvar_con_chatsize; - cvar_set("con_chatrect_x", "9001"); // over 9000, we'll fake it instead for more control over alpha and such + cvar_set("con_chatrect_x", "9001"); // over 9000, we'll fake it instead for more control over theAlpha and such float i, a; for(i = 0; i < autocvar_con_chat; ++i) { @@ -4121,7 +4127,11 @@ void HUD_InfoMessages(void) if(spectatee_status == -1) s = _("^1Observing"); else +#ifdef COMPAT_XON050_ENGINE s = sprintf(_("^1Spectating: ^7%s"), GetPlayerName(spectatee_status - 1)); +#else + s = sprintf(_("^1Spectating: ^7%s"), GetPlayerName(player_localentnum - 1)); +#endif drawInfoMessage(s) if(spectatee_status == -1) @@ -4139,12 +4149,12 @@ void HUD_InfoMessages(void) s = sprintf(_("^1Press ^3%s^1 for gamemode info"), getcommandkey("server info", "+show_info")); drawInfoMessage(s) - if(gametype == GAME_ARENA) + if(gametype == MAPINFO_TYPE_ARENA) s = _("^1Wait for your turn to join"); - else if(gametype == GAME_LMS) + else if(gametype == MAPINFO_TYPE_LMS) { entity sk; - sk = playerslots[player_localentnum - 1]; + sk = playerslots[player_localnum]; if(sk.(scores[ps_primary]) >= 666) s = _("^1Match has already begun"); else if(sk.(scores[ps_primary]) > 0) @@ -4202,7 +4212,7 @@ void HUD_InfoMessages(void) drawInfoMessage(s) } - if(teamplay && !intermission && !spectatee_status && gametype != GAME_CA && teamnagger) + if(teamplay && !intermission && !spectatee_status && gametype != MAPINFO_TYPE_CA && teamnagger) { float ts_min, ts_max; tm = teams.sort_next; @@ -4253,7 +4263,7 @@ void HUD_Physics(void) { if(!autocvar_hud_panel_physics) 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; + if(autocvar_hud_panel_physics == 3 && !(gametype == MAPINFO_TYPE_RACE || gametype == MAPINFO_TYPE_CTS)) return; } else hud_configure_active_panel = HUD_PANEL_PHYSICS; @@ -4555,7 +4565,7 @@ void centerprint_generic(float new_id, string strMessage, float duration, float 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); } @@ -4598,7 +4608,7 @@ void HUD_CenterPrint (void) 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; } } @@ -4673,7 +4683,7 @@ void HUD_CenterPrint (void) continue; } - // fade the centerprint in/out + // 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) @@ -4685,11 +4695,11 @@ void HUD_CenterPrint (void) // also fade it based on positioning 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 + 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 theAlpha + 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 theAlpha even more for each message } - // finally set the size based on the new alpha from subsequent fading + // finally set the size based on the new theAlpha 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'; @@ -4768,6 +4778,185 @@ void HUD_CenterPrint (void) } } + +// ItemsTime (#17) +// +const float ITEMSTIME_MAXITEMS = 9; +float ItemsTime_time[ITEMSTIME_MAXITEMS]; +string GetItemsTimePicture(float i) +{ + switch(i) + { + case 0: return "armor"; + case 1: return "health"; + case 2: return "strength"; + case 3: return "shield"; + case 4: return "health"; + case 5: return "strength"; + case 6: return "shield"; + case 7: return "fuelregen"; + case 8: return "jetpack"; + default: return ""; + } +} + +void DrawItemsTimeItem(vector myPos, vector mySize, float ar, float itemcode) +{ + float t; + vector color; + float picalpha; + if(ItemsTime_time[itemcode] <= time) + { + float BLINK_FACTOR = 0.15; + float BLINK_BASE = 0.85; + float BLINK_FREQ = 5; + picalpha = BLINK_BASE + BLINK_FACTOR * cos(time * BLINK_FREQ); + } + else + { + picalpha = 1; + t = floor(ItemsTime_time[itemcode] - time + 0.999); + if(t < 5) + color = '0.7 0 0'; + else if(t < 10) + color = '0.7 0.7 0'; + else + color = '1 1 1'; + } + + vector picpos, numpos; + if(autocvar_hud_panel_itemstime_iconalign) + { + numpos = myPos; + picpos = myPos + eX * (ar - 1) * mySize_y; + } + else + { + numpos = myPos + eX * mySize_y; + picpos = myPos; + } + + if(t > 0 && autocvar_hud_panel_itemstime_progressbar) + { + vector p_pos, p_size; + if(autocvar_hud_panel_itemstime_progressbar_reduced) + { + p_pos = numpos; + p_size = eX * ((ar - 1)/ar) * mySize_x + eY * mySize_y; + } + else + { + p_pos = myPos; + p_size = mySize; + } + HUD_Panel_DrawProgressBar(p_pos, p_size, autocvar_hud_panel_itemstime_progressbar_name, t/autocvar_hud_panel_itemstime_progressbar_maxtime, 0, autocvar_hud_panel_itemstime_iconalign, color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); + } + + if(t > 0 && autocvar_hud_panel_itemstime_text) + drawstring_aspect(numpos, ftos(t), eX * ((ar - 1)/ar) * mySize_x + eY * mySize_y, color, panel_fg_alpha, DRAWFLAG_NORMAL); + drawpic_aspect_skin(picpos, GetItemsTimePicture(itemcode), '1 1 0' * mySize_y, '1 1 1', panel_fg_alpha * picalpha, DRAWFLAG_NORMAL); +} + +void HUD_ItemsTime(void) +{ + if(!autocvar__hud_configure) + { + if(!autocvar_hud_panel_itemstime) return; + if(spectatee_status == 0) return; + + ItemsTime_time[0] = getstatf(STAT_ARMOR_LARGE_TIME); + ItemsTime_time[1] = getstatf(STAT_HEALTH_MEGA_TIME); + ItemsTime_time[2] = getstatf(STAT_INVISIBLE_TIME); + ItemsTime_time[3] = getstatf(STAT_SPEED_TIME); + ItemsTime_time[4] = getstatf(STAT_EXTRALIFE_TIME); + ItemsTime_time[5] = getstatf(STAT_STRENGTH_TIME); + ItemsTime_time[6] = getstatf(STAT_SHIELD_TIME); + ItemsTime_time[7] = getstatf(STAT_FUELREGEN_TIME); + ItemsTime_time[8] = getstatf(STAT_JETPACK_TIME); + } + else + { + hud_configure_active_panel = HUD_PANEL_ITEMSTIME; + + // do not show here mutators-dependent items + ItemsTime_time[0] = time + 25; + ItemsTime_time[1] = time + 8; + ItemsTime_time[2] = -1; + ItemsTime_time[3] = -1; + ItemsTime_time[4] = -1; + ItemsTime_time[5] = time + 0; + ItemsTime_time[6] = time + 4; + ItemsTime_time[7] = time + 19; + ItemsTime_time[8] = time + 46; + } + + float i; + float count; + if (autocvar_hud_panel_itemstime_showspawned) + for (i = 0; i < ITEMSTIME_MAXITEMS; ++i) + count += (ItemsTime_time[i] > time || (ItemsTime_time[i] != -1 && ItemsTime_time[i] <= time)); + else + for (i = 0; i < ITEMSTIME_MAXITEMS; ++i) + count += (ItemsTime_time[i] > time); + if (count == 0) + return; + + HUD_Panel_UpdateCvars(itemstime); + HUD_Panel_ApplyFadeAlpha(); + vector pos, mySize; + pos = panel_pos; + mySize = panel_size; + + HUD_Panel_DrawBg(1); + if(panel_bg_padding) + { + pos += '1 1 0' * panel_bg_padding; + mySize -= '2 2 0' * panel_bg_padding; + } + + float rows, columns, row, column; + float ar = max(2, autocvar_hud_panel_itemstime_ratio) + 1; + rows = mySize_y/mySize_x; + rows = bound(1, floor((sqrt(4 * ar * rows * count + rows * rows) + rows + 0.5) / 2), count); + + columns = ceil(count/rows); + + vector itemstime_size; + itemstime_size = eX * mySize_x*(1/columns) + eY * mySize_y*(1/rows); + + local noref vector offset; // fteqcc sucks + float newSize; + if(itemstime_size_x/itemstime_size_y > ar) + { + newSize = ar * itemstime_size_y; + offset_x = itemstime_size_x - newSize; + pos_x += offset_x/2; + itemstime_size_x = newSize; + } + else + { + newSize = 1/ar * itemstime_size_x; + offset_y = itemstime_size_y - newSize; + pos_y += offset_y/2; + itemstime_size_y = newSize; + } + + for (i = 0; i < ITEMSTIME_MAXITEMS; ++i) { + if (ItemsTime_time[i] == -1) + continue; + if (!autocvar_hud_panel_itemstime_showspawned) + if (ItemsTime_time[i] <= time) + continue; + DrawItemsTimeItem(pos + eX * column * (itemstime_size_x + offset_x) + eY * row * (itemstime_size_y + offset_y), itemstime_size, ar, i); + ++row; + if(row >= rows) + { + row = 0; + column = column + 1; + } + } +} + /* ================== Main HUD system @@ -4777,9 +4966,9 @@ Main HUD system void HUD_Reset (void) { // reset gametype specific icons - if(gametype == GAME_KEYHUNT) + if(gametype == MAPINFO_TYPE_KEYHUNT) HUD_Mod_KH_Reset(); - else if(gametype == GAME_CTF) + else if(gametype == MAPINFO_TYPE_CTF) HUD_Mod_CTF_Reset(); } @@ -4819,12 +5008,14 @@ switch (id) {\ HUD_Physics(); break;\ case (HUD_PANEL_CENTERPRINT):\ HUD_CenterPrint(); break;\ + case (HUD_PANEL_ITEMSTIME):\ + HUD_ItemsTime(); break;\ } ENDS_WITH_CURLY_BRACE void HUD_Main (void) { float i; - // global hud alpha fade + // global hud theAlpha fade if(menu_enabled == 1) hud_fade_alpha = 1; else @@ -4883,7 +5074,11 @@ void HUD_Main (void) drawfill(eY * i * hud_configure_realGridSize_y, eY + eX * vid_conwidth, '0.5 0.5 0.5', autocvar_hud_configure_grid_alpha, DRAWFLAG_NORMAL); } +#ifdef COMPAT_XON050_ENGINE current_player = (spectatee_status > 0) ? spectatee_status : player_localentnum; +#else + current_player = player_localentnum; +#endif // draw the dock if(autocvar_hud_dock != "" && autocvar_hud_dock != "0") @@ -4892,7 +5087,7 @@ void HUD_Main (void) 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) { @@ -4902,11 +5097,11 @@ void HUD_Main (void) { 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 @@ -4993,7 +5188,7 @@ void HUD_Main (void) hud_configure_prev = autocvar__hud_configure; - if (!autocvar__hud_configure) // hud config mode disabled, enable normal alpha stuff again + if (!autocvar__hud_configure) // hud config mode disabled, enable normal theAlpha stuff again if (menu_enabled) menu_enabled = 0; }