#include <client/miscfunctions.qh>
// CenterPrint (#16)
+
+void HUD_CenterPrint_Export(entity panel, int fh)
+{
+ // allow saving cvars that aesthetically change the panel into hud skin files
+ HUD_Write_Cvar("hud_panel_centerprint_align");
+ HUD_Write_Cvar("hud_panel_centerprint_flip");
+ HUD_Write_Cvar("hud_panel_centerprint_fontscale");
+ HUD_Write_Cvar("hud_panel_centerprint_fontscale_bold");
+ HUD_Write_Cvar("hud_panel_centerprint_time");
+ HUD_Write_Cvar("hud_panel_centerprint_fade_in");
+ HUD_Write_Cvar("hud_panel_centerprint_fade_out");
+ HUD_Write_Cvar("hud_panel_centerprint_fade_subsequent");
+ HUD_Write_Cvar("hud_panel_centerprint_fade_subsequent_passone");
+ HUD_Write_Cvar("hud_panel_centerprint_fade_subsequent_passone_minalpha");
+ HUD_Write_Cvar("hud_panel_centerprint_fade_subsequent_passtwo");
+ HUD_Write_Cvar("hud_panel_centerprint_fade_subsequent_passtwo_minalpha");
+ HUD_Write_Cvar("hud_panel_centerprint_fade_subsequent_minfontsize");
+ HUD_Write_Cvar("hud_panel_centerprint_fade_minfontsize");
+}
+
// These are the functions that draw the text at the center of the screen (e.g. frag messages and server MOTDs).
// Usually local_notification_centerprint_generic() is called, which in turn calls centerprint_generic(), which
// uses some kind of macro magic to call HUD_CenterPrint, which draws them on screen using drawcolorcodedstring().
}
bool is_bold;
- string centerprint_message;
+ string centerprint_message = strzone("");
int entries;
float height;
vector fontsize;
// if the notification starts with ^BOLD make it bold (e.g. frag messages);
is_bold = (substring(centerprint_messages[j], 0, 5) == BOLD_OPERATOR);
// remove ^BOLD so it doesn't get printed onscreen
- centerprint_message = is_bold ? strzone(substring(centerprint_messages[j], 5, -1)) : strzone(centerprint_messages[j]);
+ if (is_bold)
+ strcpy(centerprint_message, substring(centerprint_messages[j], 5, -1));
+ else
+ strcpy(centerprint_message, centerprint_messages[j]);
// entries = bound(1, floor(CENTERPRINT_MAX_ENTRIES * 4 * panel_size_y/panel_size_x), CENTERPRINT_MAX_ENTRIES);
// height = panel_size_y/entries;
if (pos.y < panel_pos.y) // check if the next message can be shown
{
drawfontscale = hud_scale;
+ strfree(centerprint_message);
return;
}
}
if(pos.y > panel_pos.y + panel_size.y - fontsize.y) // check if the next message can be shown
{
drawfontscale = hud_scale;
+ strfree(centerprint_message);
return;
}
}
-
- // free up memory
- strunzone(centerprint_message);
}
+ strfree(centerprint_message);
+
drawfontscale = hud_scale;
if (all_messages_expired)
{