From: z411 Date: Sat, 2 Apr 2022 22:43:42 +0000 (-0300) Subject: Update duel title when players change in countdown X-Git-Tag: xonotic-v0.8.5~94^2~4 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=6cded293656657dec07ef57db4c3275be8735732;p=xonotic%2Fxonotic-data.pk3dir.git Update duel title when players change in countdown --- diff --git a/qcsrc/client/announcer.qc b/qcsrc/client/announcer.qc index 5a004e04f..4ebd39ea2 100644 --- a/qcsrc/client/announcer.qc +++ b/qcsrc/client/announcer.qc @@ -71,6 +71,30 @@ void Announcer_Countdown(entity this) prev_inround = inround; } +/** + * Displays duel title; updates it if the players in-game have changed. + */ +void Announcer_Duel() +{ + static string prev_pl1_name; + static string prev_pl2_name; + + entity pl1 = players.sort_next; + entity pl2 = pl1.sort_next; + string pl1_name = (pl1 && pl1.team != NUM_SPECTATOR ? entcs_GetName(pl1.sv_entnum) : "???"); + string pl2_name = (pl2 && pl2.team != NUM_SPECTATOR ? entcs_GetName(pl2.sv_entnum) : "???"); + + if(pl1_name == prev_pl1_name && pl2_name == prev_pl2_name) + return; // Players haven't changed, stop here + + prev_pl1_name = pl1_name; + prev_pl2_name = pl2_name; + + // There are new duelers, update title + float offset = stringwidth(pl2_name, true, hud_fontsize) - stringwidth(pl1_name, true, hud_fontsize) - 1; + centerprint_SetTitle(sprintf("^BG%s^BG%s%s", pl1_name, _(" vs "), pl2_name), offset / 2); +} + /** * Checks whether the server initiated a map restart (stat_game_starttime changed) * @@ -99,6 +123,9 @@ void Announcer_Gamestart() return; } + if(announcer_countdown && gametype.m_1v1) + Announcer_Duel(); + if(previous_game_starttime != startTime) { if(time < startTime) @@ -112,15 +139,7 @@ void Announcer_Gamestart() if(!warmup_stage && time < STAT(GAMESTARTTIME)) { if (gametype.m_1v1) - { - entity pl1 = players.sort_next; - entity pl2 = pl1.sort_next; - string pl1_name = (pl1 && pl1.team != NUM_SPECTATOR ? entcs_GetName(pl1.sv_entnum) : "???"); - string pl2_name = (pl2 && pl2.team != NUM_SPECTATOR ? entcs_GetName(pl2.sv_entnum) : "???"); - - float offset = stringwidth(pl2_name, true, hud_fontsize) - stringwidth(pl1_name, true, hud_fontsize) - 1; - centerprint_SetTitle(sprintf("^BG%s^BG%s%s", pl1_name, _(" vs "), pl2_name), offset / 2); // Show duelers in 1v1 game mode - } + Announcer_Duel(); else centerprint_SetTitle(strcat("^BG", MapInfo_Type_ToText(gametype)), 0); // Show game type as title