float r;
r = random();
if (r > 0.8)
- centerprint_Add(floor(r*1000), sprintf(CCR(_("^F2Countdown message at time %s, seconds left: ^COUNT")), seconds_tostring(time)), 1, 10);
+ centerprint_Add(floor(r*1000), strcat(CCR_F2, sprintf(_("Countdown message at time %s, seconds left: ^COUNT"), seconds_tostring(time))), 1, 10);
else if (r > 0.55)
- centerprint_Add(0, sprintf(CCR(_("^F4Multiline message at time %s that\n^BOLDlasts longer than normal")), seconds_tostring(time)), 20, 0);
+ centerprint_Add(0, strcat(CCR_F4, sprintf(_("Multiline message at time %s that\n^BOLDlasts longer than normal"), seconds_tostring(time))), 20, 0);
else
- centerprint_AddStandard(sprintf(CCR(_("^BGMessage at time %s")), seconds_tostring(time)));
+ centerprint_AddStandard(strcat(CCR_BG, sprintf(_("Message at time %s"), seconds_tostring(time))));
hud_configure_cp_generation_time = time + 1 + random()*4;
}
else
{
- centerprint_Add(0, strcat(CCR("^BG"), _("Generic message")), 10, 0);
+ centerprint_Add(0, strcat(CCR_BG, _("Generic message")), 10, 0);
hud_configure_cp_generation_time = time + 10 - random()*3;
}
}
drawcolorcodedstring(pos, centerprint_title_left, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
pos.x = duel_title_pos.x + max_rl_width + padding * 3;
- drawcolorcodedstring(pos, strcat(CCR("^BG"), _("vs")), fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos, strcat(CCR_BG, _("vs")), fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
pos.x = duel_title_pos.x + width - padding - max_rl_width;
if (left_width >= right_width)
if(spectatee_status)
{
if(spectatee_status == -1)
- s = CCR(_("^F4Observing"));
+ s = _("Observing");
else
- s = sprintf(CCR(_("^F4Spectating: ^BG%s")), entcs_GetName(current_player));
+ s = sprintf(CCR(_("Spectating: ^BG%s")), entcs_GetName(current_player));
+ s = strcat(CCR_F4, s);
InfoMessage(s);
if(autocvar_hud_panel_infomessages_group0)
default:
case 0:
if(spectatee_status == -1)
- s = sprintf(CCR(_("^F4Press ^F2%s^F4 to spectate")), getcommandkey(_("primary fire"), "+fire"));
+ s = sprintf(CCR(_("Press ^F2%s^F4 to spectate")), getcommandkey(_("primary fire"), "+fire"));
else
- s = sprintf(CCR(_("^F4Press ^F2%s^F4 or ^F2%s^F4 for next or previous player")), getcommandkey(_("next weapon"), "weapnext"), getcommandkey(_("previous weapon"), "weapprev"));
+ s = sprintf(CCR(_("Press ^F2%s^F4 or ^F2%s^F4 for next or previous player")), getcommandkey(_("next weapon"), "weapnext"), getcommandkey(_("previous weapon"), "weapprev"));
break;
case 1:
if(spectatee_status == -1)
- s = sprintf(CCR(_("^F4Use ^F2%s^F4 or ^F2%s^F4 to change the speed")), getcommandkey(_("next weapon"), "weapnext"), getcommandkey(_("previous weapon"), "weapprev"));
+ s = sprintf(CCR(_("Use ^F2%s^F4 or ^F2%s^F4 to change the speed")), getcommandkey(_("next weapon"), "weapnext"), getcommandkey(_("previous weapon"), "weapprev"));
else if(!observe_blocked)
- s = sprintf(CCR(_("^F4Press ^F2%s^F4 to observe, ^F2%s^F4 to change camera mode")), getcommandkey(_("secondary fire"), "+fire2"), getcommandkey(_("drop weapon"), "dropweapon"));
+ s = sprintf(CCR(_("Press ^F2%s^F4 to observe, ^F2%s^F4 to change camera mode")), getcommandkey(_("secondary fire"), "+fire2"), getcommandkey(_("drop weapon"), "dropweapon"));
else
- s = sprintf(CCR(_("^F4Press ^F2%s^F4 to change camera mode")), getcommandkey(_("drop weapon"), "dropweapon"));
+ s = sprintf(CCR(_("Press ^F2%s^F4 to change camera mode")), getcommandkey(_("drop weapon"), "dropweapon"));
break;
case 2:
- s = sprintf(CCR(_("^F4Press ^F2%s^F4 for gamemode info")), getcommandkey(_("server info"), "+show_info"));
+ s = sprintf(CCR(_("Press ^F2%s^F4 for gamemode info")), getcommandkey(_("server info"), "+show_info"));
break;
}
+ s = strcat(CCR_F4, s);
InfoMessage(s);
}
if(tm > 0)
{
tm = Team_IndexToTeam(tm);
- s = sprintf(CCR(_("^F1You're queued to join the %s%s^F1 team")), Team_ColorCode(tm), Team_ColorName(tm));
+ s = strcat(CCR_F1, sprintf(CCR(_("You're queued to join the %s%s^F1 team")), Team_ColorCode(tm), Team_ColorName(tm)));
}
else if (tm < 0)
- s = sprintf(CCR(_("^F1You're queued to join any available team")));
+ s = strcat(CCR_F1, sprintf(_("You're queued to join any available team")));
else
- s = sprintf(CCR(_("^F4Press ^F2%s^F4 to join")), getcommandkey(_("jump"), "+jump"));
+ s = strcat(CCR_F4, sprintf(CCR(_("Press ^F2%s^F4 to join")), getcommandkey(_("jump"), "+jump")));
InfoMessage(s);
}
}
{
//we need to ceil, otherwise the countdown would be off by .5 when using round()
float countdown = ceil(STAT(GAMESTARTTIME) - time);
- s = sprintf(CCR(_("^F4Game starts in ^F2%d^F4 seconds")), countdown);
+ s = strcat(CCR_F4, sprintf(CCR(_("Game starts in ^F2%d^F4 seconds")), countdown));
InfoMessage(s);
}
string blinkcolor;
if(time % 1 >= 0.5)
- blinkcolor = "^F4";
+ blinkcolor = CCR_F4;
else
- blinkcolor = "^F2";
- blinkcolor = CCR(blinkcolor);
+ blinkcolor = CCR_F2;
if(warmup_stage)
{
- InfoMessage(CCR(_("^F1Currently in ^F4warmup^F1 stage!")));
+ InfoMessage(strcat(CCR_F1, CCR(_("Currently in ^F4warmup^F1 stage!"))));
int players_needed = 0;
Scoreboard_UpdatePlayerTeams(); // ensure numplayers, ts_min, ts_max are current
if(players_needed > 0)
{
if(players_needed == 1)
- s = CCR(_("^F21^F1 more player is needed for the match to start."));
+ s = CCR(_("1^F1 more player is needed for the match to start."));
else
- s = sprintf(CCR(_("^F2%d^F1 more players are needed for the match to start.")), players_needed);
+ s = sprintf(CCR(_("%d^F1 more players are needed for the match to start.")), players_needed);
+ s = strcat(CCR_F2, s);
InfoMessage(s);
}
else if(teamnagger && (ts_max - ts_min) >= teamnagger)
if(ready_waiting_for_me)
s = sprintf(CCR(_("%sPress ^F2%s%s to end warmup")), blinkcolor, getcommandkey(_("ready"), "ready"), blinkcolor);
else
- s = CCR(_("^F1Waiting for others to ready up to end warmup..."));
+ s = strcat(CCR_F1, _("Waiting for others to ready up to end warmup..."));
}
else
- s = sprintf(CCR(_("^F1Press ^F2%s^F1 to end warmup")), getcommandkey(_("ready"), "ready"));
+ s = strcat(CCR_F1, sprintf(CCR(_("Press ^F2%s^F1 to end warmup")), getcommandkey(_("ready"), "ready")));
InfoMessage(s);
}
}
if(num_spectators)
//if(spectatee_status != -1)
{
- s = CCR((spectatee_status) ? _("^F4Spectating this player:") : _("^F4Spectating you:"));
+ s = strcat(CCR_F4, (spectatee_status) ? _("Spectating this player:") : _("Spectating you:"));
// InfoMessage(s)
int limit = min(num_spectators, MAX_SPECTATORS);
for(int i = 0; i < limit; ++i)
{
float slot = spectatorlist[i];
if(i == 0)
- s = strcat(s, CCR(" ^BG"), entcs_GetName(slot));
+ s = strcat(s, " ", CCR_BG, entcs_GetName(slot));
else
- s = strcat(CCR("^BG"), entcs_GetName(slot));
+ s = strcat(CCR_BG, entcs_GetName(slot));
InfoMessage(s);
}
}
}
else
{
- InfoMessage(CCR(_("^BGPress ^F2ESC ^BGto show HUD options.")));
- InfoMessage(CCR(_("^F2Doubleclick ^BGa panel for panel-specific options.")));
- InfoMessage(CCR(_("^F2CTRL ^BGto disable collision testing, ^F2SHIFT ^BGand")));
- InfoMessage(CCR(_("^F2ALT ^BG+ ^F2ARROW KEYS ^BGfor fine adjustments.")));
+ InfoMessage(strcat(CCR_BG, CCR(_("Press ^F2ESC ^BGto show HUD options."))));
+ InfoMessage(strcat(CCR_F2, CCR(_("Doubleclick ^BGa panel for panel-specific options."))));
+ InfoMessage(strcat(CCR_F2, CCR(_("CTRL ^BGto disable collision testing, ^F2SHIFT ^BGand"))));
+ InfoMessage(strcat(CCR_F2, CCR(_("ALT ^BG+ ^F2ARROW KEYS ^BGfor fine adjustments."))));
}
}
//else
//tmp_offset_x = 0;
tmp_offset.y = (panel_size.y - tmp_size.y) / 2;
- drawcolorcodedstring_aspect(panel_pos + speed_offset + tmp_offset, strcat(CCR("^BG"), ftos(discrete_speed)), tmp_size, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring_aspect(panel_pos + speed_offset + tmp_offset, strcat(CCR_BG, ftos(discrete_speed)), tmp_size, panel_fg_alpha, DRAWFLAG_NORMAL);
//draw speed unit
if (speed_baralign)
tmp_size.y = panel_size.y * 0.4 * text_scale;
tmp_offset.y = (panel_size.y * 0.4 - tmp_size.y) / 2;
string unit = GetSpeedUnit(autocvar_hud_speed_unit);
- drawcolorcodedstring_aspect(panel_pos + speed_offset + tmp_offset, strcat(CCR("^BG"), unit), tmp_size, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring_aspect(panel_pos + speed_offset + tmp_offset, strcat(CCR_BG, unit), tmp_size, panel_fg_alpha, DRAWFLAG_NORMAL);
}
}
tmp_size.x = panel_size.x * (1 - 0.75);
tmp_size.y = (panel_size.y - tmp_offset.y) * text_scale;
tmp_offset.y += (panel_size.y - tmp_offset.y - tmp_size.y) / 2;
- drawcolorcodedstring_aspect(panel_pos + speed_offset + tmp_offset, strcat(CCR("^F4"), ftos(top_speed)), tmp_size, f * panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring_aspect(panel_pos + speed_offset + tmp_offset, strcat(CCR_F4, ftos(top_speed)), tmp_size, f * panel_fg_alpha, DRAWFLAG_NORMAL);
}
else
top_speed = 0;
tmp_offset.x = 0;
tmp_offset.y = (panel_size.y - tmp_size.y) / 2;
- drawcolorcodedstring_aspect(panel_pos + acceleration_offset + tmp_offset, strcat(CCR("^BG"), ftos_decimals(discrete_acceleration, acc_decimals), "g"), tmp_size, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring_aspect(panel_pos + acceleration_offset + tmp_offset, strcat(CCR_BG, ftos_decimals(discrete_acceleration, acc_decimals), "g"), tmp_size, panel_fg_alpha, DRAWFLAG_NORMAL);
}
draw_endBoldFont();
str_timer = "13:02";
else
str_timer = seconds_tostring(HUD_Pickup_Time(last_pickup_time));
- str_timer = strcat(CCR("^BG"), str_timer);
+ str_timer = strcat(CCR_BG, str_timer);
drawcolorcodedstring(pos, str_timer, fontsize, panel_fg_alpha * a, DRAWFLAG_NORMAL);
pos.x += stringwidth(str_timer, true, fontsize) + fontsize.x * 0.25;
}
drawpic(pos - eY * ((iconsize.y - fontsize.y) / 2), icon, sz2, '1 1 1', panel_fg_alpha * a, DRAWFLAG_NORMAL);
pos.x += sz2.x + fontsize.x * 0.25;
- str_name = strcat(CCR("^BG"), str_name);
+ str_name = strcat(CCR_BG, str_name);
str_name = textShortenToWidth(str_name, mySize.x - (pos.x - panel_pos.x), fontsize, stringwidth_colors);
drawcolorcodedstring(pos, str_name, fontsize, panel_fg_alpha * a, DRAWFLAG_NORMAL);
}
string MakeRaceString(int cp, float mytime, float theirtime, float othertime, float lapdelta, string theirname)
{
TC(int, cp);
- string cpname, lapstr = "", timestr = "", col = "^BG", othercol = "^BG", othertimestr = "";
+ string cpname, lapstr = "", timestr = "", col = CCR_BG, othercol = CCR_BG, othertimestr = "";
if(theirname == "" || !autocvar_cl_race_cptimes_showself)
othertime = 0; // don't count personal time
if(mytime > 0)
{
timestr = strcat("+", ftos_decimals(+mytime, TIME_DECIMALS));
- col = "^C1";
+ col = CCR_C1;
}
else if(mytime == 0)
{
timestr = "+0.0";
- col = "^C2";
+ col = CCR_C2;
}
else
{
timestr = strcat("-", ftos_decimals(-mytime, TIME_DECIMALS));
- col = "^C3";
+ col = CCR_C3;
}
if(othertime > 0)
{
othertimestr = strcat("+", ftos_decimals(+othertime, TIME_DECIMALS));
- othercol = "^C1";
+ othercol = CCR_C1;
}
else if(othertime == 0)
{
othertimestr = "+0.0";
- othercol = "^C2";
+ othercol = CCR_C2;
}
else
{
othertimestr = strcat("-", ftos_decimals(-othertime, TIME_DECIMALS));
- othercol = "^C3";
+ othercol = CCR_C3;
}
if(lapdelta > 0)
{
lapstr = sprintf(_(" (-%dL)"), lapdelta);
- col = "^C3";
+ col = CCR_C3;
}
else if(lapdelta < 0)
{
lapstr = sprintf(_(" (+%dL)"), -lapdelta);
- col = "^C1";
+ col = CCR_C1;
}
}
else if(theirtime > 0) // anticipation
timestr = strcat("+", ftos_decimals(mytime - theirtime, TIME_DECIMALS));
else
timestr = TIME_ENCODED_TOSTRING(TIME_ENCODE(theirtime), false);
- col = "^C2";
+ col = CCR_C2;
if(mytime >= othertime)
othertimestr = strcat("+", ftos_decimals(mytime - othertime, TIME_DECIMALS));
else
othertimestr = TIME_ENCODED_TOSTRING(TIME_ENCODE(othertime), false);
- othercol = "^BG";
+ othercol = CCR_BG;
}
- col = CCR(col);
- othercol = CCR(othercol);
-
if(cp == 254)
cpname = _("Start line");
else if(cp == 255)
if(autocvar__hud_configure)
{
- s = CCR("^BG0:13:37");
+ s = strcat(CCR_BG, "0:13:37");
draw_beginBoldFont();
str_pos = pos + eX * 0.5 * (mySize.x - stringwidth(s, true, '1 1 0' * 0.6 * mySize.y));
drawcolorcodedstring(str_pos, s, '1 1 0' * 0.6 * mySize.y, panel_fg_alpha, DRAWFLAG_NORMAL);
draw_endBoldFont();
- s = strcat(CCR("^C1"), sprintf(_("Intermediate %d"), 1), " (+15.42)");
+ s = strcat(CCR_C1, sprintf(_("Intermediate %d"), 1), " (+15.42)");
str_pos = pos + vec2(0.5 * (mySize.x - stringwidth(s, true, '1 1 0' * 0.2 * mySize.y)), 0.6 * mySize.y);
drawcolorcodedstring(str_pos, s, '1 1 0' * 0.2 * mySize.y, panel_fg_alpha, DRAWFLAG_NORMAL);
- s = strcat(CCR("^C1"), sprintf(_("PENALTY: %.1f (%s)"), 2, _("missing a checkpoint")));
+ s = strcat(CCR_C1, sprintf(_("PENALTY: %.1f (%s)"), 2, _("missing a checkpoint")));
str_pos = pos + vec2(0.5 * (mySize.x - stringwidth(s, true, '1 1 0' * 0.2 * mySize.y)), 0.8 * mySize.y);
drawcolorcodedstring(str_pos, s, '1 1 0' * 0.2 * mySize.y, panel_fg_alpha, DRAWFLAG_NORMAL);
}
a = bound(0, 2 - (time - race_penaltyeventtime), 1);
if(a > 0)
{
- s = sprintf(_("PENALTY: %.1f (%s)"), race_penaltytime * 0.1, race_penaltyreason);
- s = strcat(CCR("^C1"), s);
+ s = strcat(CCR_C1, sprintf(_("PENALTY: %.1f (%s)"), race_penaltytime * 0.1, race_penaltyreason));
str_pos = pos + vec2(0.5 * (mySize.x - stringwidth(s, true, '1 1 0' * 0.2 * mySize.y)), 0.8 * mySize.y);
drawcolorcodedstring(str_pos, s, '1 1 0' * 0.2 * mySize.y, panel_fg_alpha * a, DRAWFLAG_NORMAL);
}
if(forcetime != "")
{
- forcetime = strcat(CCR("^BG"), forcetime);
+ forcetime = strcat(CCR_BG, forcetime);
a = bound(0, (time - race_checkpointtime) / 0.5, 1);
str_pos = pos + eX * 0.5 * (mySize.x - stringwidth(forcetime, true, '1 1 0' * 0.6 * mySize.y));
drawcolorcodedstring_expanding(str_pos, forcetime, '1 1 0' * 0.6 * mySize.y, panel_fg_alpha, 0, a);
if(race_laptime && race_checkpoint != 255)
{
s = TIME_ENCODED_TOSTRING(TIME_ENCODE(time + TIME_DECODE(race_penaltyaccumulator) - race_laptime), false);
- s = strcat(CCR("^BG"), s);
+ s = strcat(CCR_BG, s);
str_pos = pos + eX * 0.5 * (mySize.x - stringwidth(s, true, '0.6 0.6 0' * mySize.y));
drawcolorcodedstring(str_pos, s, '0.6 0.6 0' * mySize.y, panel_fg_alpha * a, DRAWFLAG_NORMAL);
}
if(time < t)
{
t = (t - time) * 0.1;
- col = "^C1";
+ col = CCR_C1;
}
else
{
t = 0;
- col = "^C3";
+ col = CCR_C3;
}
- s = sprintf(_("PENALTY: %.1f (%s)"), t, race_penaltyreason);
- s = strcat(CCR(col), s);
+ s = strcat(col, sprintf(_("PENALTY: %.1f (%s)"), t, race_penaltyreason));
str_pos = pos + vec2(0.5 * (mySize.x - stringwidth(s, true, '1 1 0' * 0.2 * mySize.y)), 0.6 * mySize.y);
drawcolorcodedstring(str_pos, s, '1 1 0' * 0.2 * mySize.y, panel_fg_alpha * a, DRAWFLAG_NORMAL);
}
message = _("Click to select spawn location");
}
- message = strcat(CCR("^BG"), message);
+ message = strcat(CCR_BG, message);
drawcolorcodedstring(pos + '0.5 0 0' * (mySize_x - stringwidth(message, true, hud_fontsize)) - '0 1 0' * hud_fontsize_y * 2,
message, hud_fontsize, hud_panel_radar_foreground_alpha, DRAWFLAG_NORMAL);
float weapon_height = hud_fontsize.y * 2.3 / aspect;
float height = weapon_height + hud_fontsize.y;
- drawcolorcodedstring(pos + eX * panel_bg_padding, strcat(CCR("^BG"), sprintf(_("Accuracy stats (average %d%%)"), average_accuracy)), hud_fontsize, panel_fg_alpha * scoreboard_acc_fade_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos + eX * panel_bg_padding, strcat(CCR_BG, sprintf(_("Accuracy stats (average %d%%)"), average_accuracy)), hud_fontsize, panel_fg_alpha * scoreboard_acc_fade_alpha, DRAWFLAG_NORMAL);
pos.y += 1.25 * hud_fontsize.y;
if(panel.current_panel_bg != "0")
pos.y += panel_bg_border;
float item_height = hud_fontsize.y * 2.3;
float height = item_height + hud_fontsize.y;
- drawcolorcodedstring(pos + eX * panel_bg_padding, strcat(CCR("^BG"), _("Item stats")), hud_fontsize, panel_fg_alpha * scoreboard_itemstats_fade_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos + eX * panel_bg_padding, strcat(CCR_BG, _("Item stats")), hud_fontsize, panel_fg_alpha * scoreboard_itemstats_fade_alpha, DRAWFLAG_NORMAL);
pos.y += 1.25 * hud_fontsize.y;
if(panel.current_panel_bg != "0")
pos.y += panel_bg_border;
//n = 1 + floor(i * 3 + 4.8) % 7; // debug: display a value for each item
if (n <= 0) continue;
drawpic_aspect_skin(tmpos, it.m_icon, eX * item_width + eY * item_height, '1 1 1', panel_fg_alpha * scoreboard_itemstats_fade_alpha, DRAWFLAG_NORMAL);
- string s = strcat(CCR("^BG"), ftos(n));
+ string s = strcat(CCR_BG, ftos(n));
float padding = (item_width - stringwidth(s, false, hud_fontsize)) / 2;
drawcolorcodedstring(tmpos + vec2(padding, item_height), s, hud_fontsize, panel_fg_alpha * scoreboard_itemstats_fade_alpha, DRAWFLAG_NORMAL);
tmpos.x += item_width * rows;
vector MapStats_DrawKeyValue(vector pos, string key, string value) {
float px = pos.x;
pos.x += hud_fontsize.x * 0.25;
- drawcolorcodedstring(pos, strcat(CCR("^BG"), key), hud_fontsize, sbt_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos, strcat(CCR_BG, key), hud_fontsize, sbt_fg_alpha, DRAWFLAG_NORMAL);
pos.x = panel_pos.x + panel_size.x - stringwidth(value, false, hud_fontsize) - hud_fontsize.x * 0.25;
- drawcolorcodedstring(pos, strcat(CCR("^BG"), value), hud_fontsize, sbt_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos, strcat(CCR_BG, value), hud_fontsize, sbt_fg_alpha, DRAWFLAG_NORMAL);
pos.x = px;
pos.y += hud_fontsize.y;
return pos;
// draw table header
- drawcolorcodedstring(pos + eX * panel_bg_padding, strcat(CCR("^BG"), _("Map stats:")), hud_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos + eX * panel_bg_padding, strcat(CCR_BG, _("Map stats:")), hud_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
pos.y += 1.25 * hud_fontsize.y;
if(panel.current_panel_bg != "0")
pos.y += panel_bg_border;
vector scoreboard_selected_hl_pos = pos;
- drawcolorcodedstring(pos + eX * panel_bg_padding, strcat(CCR("^BG"), ranktitle), hud_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos + eX * panel_bg_padding, strcat(CCR_BG, ranktitle), hud_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
pos.y += 1.25 * hud_fontsize.y;
if(panel.current_panel_bg != "0")
pos.y += panel_bg_border;
else if(!((j + rankings_start_column + column) & 1) && sbt_highlight)
drawfill(pos, columnsize, hl_rgb, sbt_highlight_alpha, DRAWFLAG_NORMAL);
- str = strcat(CCR("^BG"), count_ordinal(i+1));
+ str = strcat(CCR_BG, count_ordinal(i+1));
drawcolorcodedstring(pos + text_ofs, str, hud_fontsize, sbt_fg_alpha, DRAWFLAG_NORMAL);
- drawcolorcodedstring(pos + text_ofs + eX * ranksize, strcat(CCR("^BG"), TIME_ENCODED_TOSTRING(t, true)), hud_fontsize, sbt_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos + text_ofs + eX * ranksize, strcat(CCR_BG, TIME_ENCODED_TOSTRING(t, true)), hud_fontsize, sbt_fg_alpha, DRAWFLAG_NORMAL);
str = ColorTranslateRGB(grecordholder[i]);
if(cut)
str = textShortenToWidth(str, namesize, hud_fontsize, stringwidth_colors);
for(tm = teams.sort_next; tm; tm = tm.sort_next)
if(tm.team == NUM_SPECTATOR)
break;
- str = sprintf(CCR("^BG%s (%d)"), _("Spectators"), tm.team_size);
+ str = strcat(CCR_BG, sprintf("%s (%d)", _("Spectators"), tm.team_size));
draw_beginBoldFont();
drawcolorcodedstring(pos, str, hud_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
draw_endBoldFont();
{
string s_label = (teamplay) ? teamscores_label(ts_primary) : scores_label(ps_primary);
int s_flags = (teamplay) ? teamscores_flags(ts_primary) : scores_flags(ps_primary);
- return sprintf(CCR(is_leadlimit ? _("^F1+%s %s") : _("^F5%s %s")), ScoreString(s_flags, limit, 0),
+ return sprintf((is_leadlimit ? strcat(CCR_F1, _("+%s %s")) : strcat(CCR_F5, _("%s %s"))), ScoreString(s_flags, limit, 0),
(s_label == "score") ? CTX(_("SCO^points")) :
(s_label == "fastest") ? "" : TranslateScoresLabel(s_label));
}
if (GET_NEXTMAP() != "")
{
// NOTE: nextmap is drawn before title to avoid covering title in case of long map name
- str = strcat(CCR("^BG"), _("Next map:"), CCR(" ^G2"), GET_NEXTMAP());
+ str = strcat(CCR_BG, _("Next map:"), " ", CCR_G2, GET_NEXTMAP());
drawcolorcodedstring(pos + vec2(hud_fontsize.x * 0.5, sb_gameinfo_type_fontsize.y - hud_fontsize.y * 1.25),
str, hud_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
}
if (scoreboard_ui_enabled == 2)
{
if (scoreboard_selected_team)
- str = sprintf(CCR(_("^BGPress ^F2%s^BG to join the selected team")), translate_key("SPACE"));
+ str = strcat(CCR_BG, sprintf(CCR(_("Press ^F2%s^BG to join the selected team")), translate_key("SPACE")));
else
- str = sprintf(CCR(_("^BGPress ^F2%s^BG to auto-select a team and join")), translate_key("SPACE"));
+ str = strcat(CCR_BG, sprintf(CCR(_("Press ^F2%s^BG to auto-select a team and join")), translate_key("SPACE")));
drawcolorcodedstring(pos + '0.5 0 0' * (panel_size.x - stringwidth(str, true, sb_gameinfo_detail_fontsize)), str, sb_gameinfo_detail_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
pos.y += sb_gameinfo_detail_fontsize.y + hud_fontsize.y * 0.3;
- str = sprintf(CCR(_("^BGPress ^F2%s ^BGto select a specific team")), translate_key("TAB"));
+ str = strcat(CCR_BG, sprintf(CCR(_("Press ^F2%s ^BGto select a specific team")), translate_key("TAB")));
drawcolorcodedstring(pos + '0.5 0 0' * (panel_size.x - stringwidth(str, true, sb_gameinfo_detail_fontsize)), str, sb_gameinfo_detail_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
}
else
float ll_and_fl = STAT(LEADLIMIT_AND_FRAGLIMIT);
str = "";
if(tl > 0)
- str = strcat(str, sprintf(CCR(_("^F2%1.0f minutes")), tl));
+ str = strcat(str, CCR_F2, sprintf(_("%1.0f minutes"), tl));
if(!gametype.m_hidelimits)
{
if(fl > 0)
{
if(tl > 0)
- str = strcat(str, CCR("^BG / ")); // delimiter
+ str = strcat(str, CCR_BG, " / "); // delimiter
str = strcat(str, Scoreboard_Fraglimit_Draw(fl, false));
}
if(ll > 0)
{
// delimiter
if (ll_and_fl && fl > 0)
- str = strcat(str, CCR("^BG & "));
+ str = strcat(str, CCR_BG, " & ");
else
- str = strcat(str, CCR("^BG / "));
+ str = strcat(str, CCR_BG, " / ");
}
str = strcat(str, Scoreboard_Fraglimit_Draw(ll, true));
}
str = "";
else
str = sprintf(CCR(_("^F5%d^BG/^F5%d ^BGplayers")), numplayers, srv_maxplayers ? srv_maxplayers : maxclients);
- str = strcat(CCR("^BG"), _("Map:"), CCR(" ^F1"), mi_shortname, " ", str); // reusing "Map:" translatable string
+ str = strcat(CCR_BG, _("Map:"), " ", CCR_F1, mi_shortname, " ", str); // reusing "Map:" translatable string
drawcolorcodedstring(pos, str, sb_gameinfo_detail_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL); // align left
}
// End of Game Info Section
drawstring(str_pos, str, hud_fontsize * 1.5, rgb, panel_fg_alpha, DRAWFLAG_NORMAL);
str_pos += eX * stringwidth(str, true, hud_fontsize * 1.5) + eY * hud_fontsize.y * .5;
str = sprintf("/%d", team_size_total);
- drawcolorcodedstring(str_pos, strcat(CCR("^BG"), str), hud_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(str_pos, strcat(CCR_BG, str), hud_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
}
if(respawn_time < time) // it happens for a few frames when server is respawning the player
str = ""; // draw an empty string to not change suddenly scoreboard_bottom
else
- str = sprintf(CCR(_("^F4Respawning in ^F2%s^F4...")),
+ str = strcat(CCR_F4, sprintf(CCR(_("Respawning in ^F2%s^F4...")),
(autocvar_hud_panel_scoreboard_respawntime_decimals ?
count_seconds_decs(respawn_time - time, autocvar_hud_panel_scoreboard_respawntime_decimals)
:
count_seconds(ceil(respawn_time - time))
)
- );
+ ));
}
else if(time < respawn_time)
{
string HUD_Timer_Color(float timeleft)
{
if(timeleft <= 60)
- return "^C1"; // red
+ return CCR_C1; // red
else if(timeleft <= 300)
- return "^C2"; // yellow
+ return CCR_C2; // yellow
else
- return "^BG"; // white
+ return CCR_BG; // white
}
float HUD_Timer_TimeElapsed(float curtime, float starttime)
string subtext = string_null;
float curtime, timelimit, timeleft;
vector timer_size, subtext_size, subtimer_size;
- string timer_color = "^BG";
- string subtimer_color = "^BG";
+ string timer_color = CCR_BG;
+ string subtimer_color = CCR_BG;
bool swap = (autocvar_hud_panel_timer_secondary == 2 && STAT(ROUNDSTARTTIME));
// Use real or frozen time and get the time limit
if(STAT(ROUNDSTARTTIME) == -1) {
// Round can't start
subtimer_str = "--:--";
- subtimer_color = "^C1";
+ subtimer_color = CCR_C1;
} else {
float round_curtime, round_timelimit, round_timeleft;
float subtimer_padding = subtimer_size.y / 5;
timer_size.x -= subtimer_size.x;
drawcolorcodedstring_aspect(pos + eX * timer_size.x + eY * subtimer_padding,
- strcat(CCR(swap ? timer_color : subtimer_color), swap ? timer_str : subtimer_str),
+ strcat((swap ? timer_color : subtimer_color), swap ? timer_str : subtimer_str),
subtimer_size - eY * 2 * subtimer_padding, panel_fg_alpha, DRAWFLAG_NORMAL);
}
drawcolorcodedstring_aspect(pos,
- strcat(CCR(swap ? subtimer_color : timer_color), swap ? subtimer_str : timer_str),
+ strcat((swap ? subtimer_color : timer_color), swap ? subtimer_str : timer_str),
timer_size, panel_fg_alpha, DRAWFLAG_NORMAL);
if(subtext)
drawcolorcodedstring_aspect(pos + eY * timer_size.y,
- strcat(CCR("^F1"), subtext),
+ strcat(CCR_F1, subtext),
subtext_size, panel_fg_alpha, DRAWFLAG_NORMAL);
draw_endBoldFont();
LOG_INFO(_("^1You must answer before entering hud configure mode"));
cvar_set("_hud_configure", "0");
}
- strcpy(vote_called_vote, CCR(_("^F1Name ^BGinstead of \"^F4Anonymous player^BG\" in stats")));
+ strcpy(vote_called_vote, strcat(CCR_F1, CCR(_("Name ^BGinstead of \"^F4Anonymous player^BG\" in stats"))));
uid2name_dialog = 1;
}
}
mySize = newSize;
- s = strcat(CCR("^BG"), _("A vote has been called for:"));
+ s = strcat(CCR_BG, _("A vote has been called for:"));
if(uid2name_dialog)
- s = strcat(CCR("^BG"), _("Allow servers to store and display your name?"));
+ s = strcat(CCR_BG, _("Allow servers to store and display your name?"));
drawcolorcodedstring_aspect(pos, s, vec2(mySize.x, (2/8) * mySize.y), panel_fg_alpha, DRAWFLAG_NORMAL);
s = textShortenToWidth(ColorTranslateRGB(vote_called_vote), mySize.x, '1 1 0' * mySize.y * (1/8), stringwidth_colors);
if(autocvar__hud_configure)
- s = CCR(_("^F4Configure the HUD"));
+ s = strcat(CCR_F4, _("Configure the HUD"));
drawcolorcodedstring_aspect(pos + eY * (2/8) * mySize.y, s, vec2(mySize.x, (1.75/8) * mySize.y), panel_fg_alpha, DRAWFLAG_NORMAL);
// print the yes/no counts
- s = sprintf(CCR("^C3%s ^BG(%d)"), getcommandkey_forcename(_("Yes"), "vyes"), vote_yescount);
+ s = strcat(CCR_C3, sprintf(CCR("%s ^BG(%d)"), getcommandkey_forcename(_("Yes"), "vyes"), vote_yescount));
drawcolorcodedstring_aspect(pos + eY * (4/8) * mySize.y, s, vec2(0.5 * mySize.x, (1.5/8) * mySize.y), panel_fg_alpha, DRAWFLAG_NORMAL);
- s = sprintf(CCR("^C1%s ^BG(%d)"), getcommandkey_forcename(_("No"), "vno"), vote_nocount);
+ s = strcat(CCR_C1, sprintf(CCR("%s ^BG(%d)"), getcommandkey_forcename(_("No"), "vno"), vote_nocount));
drawcolorcodedstring_aspect(pos + vec2(0.5 * mySize.x, (4/8) * mySize.y), s, vec2(0.5 * mySize.x, (1.5/8) * mySize.y), panel_fg_alpha, DRAWFLAG_NORMAL);
pos.y += (5/8) * mySize.y;
switch(autocvar_hud_panel_weapons_label)
{
case 1: // weapon number
- label_str = strcat(CCR("^BG"), ftos(weapon_id));
+ label_str = strcat(CCR_BG, ftos(weapon_id));
break;
case 2: // bind
- label_str = strcat(CCR("^BG"), getcommandkey(ftos(weapon_id), strcat("weapon_group_", ftos(weapon_id))));
+ label_str = strcat(CCR_BG, getcommandkey(ftos(weapon_id), strcat("weapon_group_", ftos(weapon_id))));
break;
case 3: // weapon name
- label_str = strcat(CCR("^BG"), strtolower(it.m_name));
+ label_str = strcat(CCR_BG, strtolower(it.m_name));
break;
default: // nothing
s = _("Unavailable");
color = stov(autocvar_hud_panel_weapons_complainbubble_color_unavailable);
}
- s = strcat(CCR("^BG"), s);
+ s = strcat(CCR_BG, s);
float padding = autocvar_hud_panel_weapons_complainbubble_padding;
drawpic_aspect_skin(weapon_pos + '1 1 0' * padding, "weapon_complainbubble", weapon_size - '2 2 0' * padding, color, a * panel_fg_alpha, DRAWFLAG_NORMAL);
drawcolorcodedstring_aspect(weapon_pos + '1 1 0' * padding, s, weapon_size - '2 2 0' * padding, panel_fg_alpha * a, DRAWFLAG_NORMAL);
if(!autocvar_hud_panel_weapons_onlyowned)
{
drawfill(weapon_pos + '1 1 0', weapon_size - '2 2 0', '1 1 1', panel_fg_alpha * 0.2, DRAWFLAG_NORMAL);
- drawcolorcodedstring(weapon_pos, strcat(CCR("^BG"), ftos(i + 1)), label_size, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(weapon_pos, strcat(CCR_BG, ftos(i + 1)), label_size, panel_fg_alpha, DRAWFLAG_NORMAL);
}
#endif
string autocvar_hud_colorset_grey_2 = "9"; // G2 - Grey // grey text
string autocvar_hud_colorset_grey_3 = "0"; // G3 - Dark Grey // dark grey text
+/** color code replace macros for efficiency over the CCR function */
+#define CCR_F1 strcat("^", autocvar_hud_colorset_foreground_1)
+#define CCR_F2 strcat("^", autocvar_hud_colorset_foreground_2)
+#define CCR_F3 strcat("^", autocvar_hud_colorset_foreground_3)
+#define CCR_F4 strcat("^", autocvar_hud_colorset_foreground_4)
+#define CCR_F5 strcat("^", autocvar_hud_colorset_foreground_5)
+#define CCR_K1 strcat("^", autocvar_hud_colorset_kill_1)
+#define CCR_K2 strcat("^", autocvar_hud_colorset_kill_2)
+#define CCR_K3 strcat("^", autocvar_hud_colorset_kill_3)
+#define CCR_C1 strcat("^", autocvar_hud_colorset_compare_1)
+#define CCR_C2 strcat("^", autocvar_hud_colorset_compare_2)
+#define CCR_C3 strcat("^", autocvar_hud_colorset_compare_3)
+#define CCR_R1 strcat("^", autocvar_hud_colorset_relative_1)
+#define CCR_R2 strcat("^", autocvar_hud_colorset_relative_2)
+#define CCR_R3 strcat("^", autocvar_hud_colorset_relative_3)
+#define CCR_BG strcat("^", autocvar_hud_colorset_background)
+#define CCR_N "^7"
+#define CCR_G1 strcat("^", autocvar_hud_colorset_grey_1)
+#define CCR_G2 strcat("^", autocvar_hud_colorset_grey_2)
+#define CCR_G3 strcat("^", autocvar_hud_colorset_grey_3)
+
/** color code replace, place inside of sprintf and parse the string */
string CCR(string input)
{
// foreground/normal colors
- input = strreplace("^F1", strcat("^", autocvar_hud_colorset_foreground_1), input);
- input = strreplace("^F2", strcat("^", autocvar_hud_colorset_foreground_2), input);
- input = strreplace("^F3", strcat("^", autocvar_hud_colorset_foreground_3), input);
- input = strreplace("^F4", strcat("^", autocvar_hud_colorset_foreground_4), input);
- input = strreplace("^F5", strcat("^", autocvar_hud_colorset_foreground_5), input);
+ input = strreplace("^F1", CCR_F1, input);
+ input = strreplace("^F2", CCR_F2, input);
+ input = strreplace("^F3", CCR_F3, input);
+ input = strreplace("^F4", CCR_F4, input);
+ input = strreplace("^F5", CCR_F5, input);
// "kill" colors
- input = strreplace("^K1", strcat("^", autocvar_hud_colorset_kill_1), input);
- input = strreplace("^K2", strcat("^", autocvar_hud_colorset_kill_2), input);
- input = strreplace("^K3", strcat("^", autocvar_hud_colorset_kill_3), input);
+ input = strreplace("^K1", CCR_K1, input);
+ input = strreplace("^K2", CCR_K2, input);
+ input = strreplace("^K3", CCR_K3, input);
// comparison colors
- input = strreplace("^C1", strcat("^", autocvar_hud_colorset_compare_1), input);
- input = strreplace("^C2", strcat("^", autocvar_hud_colorset_compare_2), input);
- input = strreplace("^C3", strcat("^", autocvar_hud_colorset_compare_3), input);
+ input = strreplace("^C1", CCR_C1, input);
+ input = strreplace("^C2", CCR_C2, input);
+ input = strreplace("^C3", CCR_C3, input);
// relativity colors
- input = strreplace("^R1", strcat("^", autocvar_hud_colorset_relative_1), input);
- input = strreplace("^R2", strcat("^", autocvar_hud_colorset_relative_2), input);
- input = strreplace("^R3", strcat("^", autocvar_hud_colorset_relative_3), input);
+ input = strreplace("^R1", CCR_R1, input);
+ input = strreplace("^R2", CCR_R2, input);
+ input = strreplace("^R3", CCR_R3, input);
// background colors
- input = strreplace("^BG", strcat("^", autocvar_hud_colorset_background), input);
- input = strreplace("^N", "^7", input); // "none"-- reset to white...
+ input = strreplace("^BG", CCR_BG, input);
+ input = strreplace("^N", CCR_N, input); // "none" -- reset to white...
// grey shades
- input = strreplace("^G1", strcat("^", autocvar_hud_colorset_grey_1), input);
- input = strreplace("^G2", strcat("^", autocvar_hud_colorset_grey_2), input);
- input = strreplace("^G3", strcat("^", autocvar_hud_colorset_grey_3), input);
+ input = strreplace("^G1", CCR_G1, input);
+ input = strreplace("^G2", CCR_G2, input);
+ input = strreplace("^G3", CCR_G3, input);
return input;
}