#include "announcer.qh"
+#include <client/draw.qh>
#include <client/hud/panel/centerprint.qh>
#include <client/mutators/_mod.qh>
#include <common/notifications/all.qh>
float countdown = (inround ? roundstarttime - time : starttime - time);
float countdown_rounded = floor(0.5 + countdown);
- if(time >= starttime) centerprint_ClearTitle();
-
if(countdown <= 0) // countdown has finished, starttime is now
{
Local_Notification(MSG_CENTER, CENTER_COUNTDOWN_BEGIN);
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) : "???");
- centerprint_SetTitle(sprintf(_("^BG%s^BG vs %s"), pl1_name, pl2_name)); // Show duelers in 1v1 game mode
+ 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
}
else
- centerprint_SetTitle(strcat("^BG", MapInfo_Type_ToText(gametype))); // Show game type as title
+ centerprint_SetTitle(strcat("^BG", MapInfo_Type_ToText(gametype)), 0); // Show game type as title
if(time + 5.0 < startTime) // if connecting to server while restart was active don't always play prepareforbattle
Local_Notification(MSG_ANNCE, ANNCE_PREPARE);
const int CENTERPRINT_MAX_MSGS = 10;
const int CENTERPRINT_MAX_ENTRIES = 50;
+const float CENTERPRINT_BASE_SIZE = 1.4;
const float CENTERPRINT_SPACING = 0.5;
const float CENTERPRINT_TITLE_SPACING = 0.35;
int cpm_index;
int centerprint_countdown_num[CENTERPRINT_MAX_MSGS];
bool centerprint_showing;
-bool centerprint_title_show;
string centerprint_title;
+float centerprint_title_offset;
void centerprint_Add(int new_id, string strMessage, float duration, int countdown_num)
{
void centerprint_ClearTitle()
{
strfree(centerprint_title);
- centerprint_title_show = false;
+ centerprint_title_offset = 0;
}
-void centerprint_SetTitle(string title)
+void centerprint_SetTitle(string title, float offset)
{
if(title != centerprint_title) {
if(centerprint_title)
strfree(centerprint_title);
centerprint_title = strzone(CCR(title));
- centerprint_title_show = true;
+ centerprint_title_offset = offset;
}
}
{
if(highlightedPanel == HUD_PANEL(CENTERPRINT))
{
- centerprint_SetTitle(sprintf(_("Title at %s"), seconds_tostring(hud_configure_cp_generation_time)));
+ centerprint_SetTitle(sprintf(_("Title at %s"), seconds_tostring(hud_configure_cp_generation_time)), 0);
float r;
r = random();
int i, j, k, n, g;
float a = 1, sz, align, current_msg_posY = 0, msg_size;
vector pos;
- vector cp_fontsize = hud_fontsize * 1.4;
+ vector cp_fontsize = hud_fontsize * CENTERPRINT_BASE_SIZE;
string ts = "";
bool all_messages_expired = true;
align = bound(0, autocvar_hud_panel_centerprint_align, 1);
// Show title if available
- if(centerprint_title_show) {
+ if(centerprint_title) {
vector fontsize = cp_fontsize * autocvar_hud_panel_centerprint_fontscale_title;
float width = stringwidth(centerprint_title, true, fontsize);
+ pos.x = panel_pos.x + (panel_size.x - width) * align;
+
if (autocvar_hud_panel_centerprint_flip)
- pos.y -= cp_fontsize.y;
+ pos.y -= fontsize.y;
+ if (centerprint_title_offset && align == 0.5)
+ pos.x += centerprint_title_offset * CENTERPRINT_BASE_SIZE * autocvar_hud_panel_centerprint_fontscale_title;
- pos.x = panel_pos.x + (panel_size.x - width) * align;
drawcolorcodedstring(pos, centerprint_title, fontsize, 1, DRAWFLAG_NORMAL);
if (autocvar_hud_panel_centerprint_flip)