diff --git a/main/hud.c b/main/hud.c index 6ee7b1504..5e5f75f3d 100644 --- a/main/hud.c +++ b/main/hud.c @@ -112,10 +112,23 @@ void HUD_render_message_frame() gr_set_curfont( GAME_FONT ); } +static int is_worth_showing(int class_flag) +{ + if (PlayerCfg.NoRedundancy && (class_flag & HM_REDUNDANT)) + return 0; + + if (PlayerCfg.MultiMessages && (Game_mode & GM_MULTI) && !(class_flag & HM_MULTI)) + return 0; + return 1; +} + // Call to flash a message on the HUD. Returns true if message drawn. // (message might not be drawn if previous message was same) -int HUD_init_message_va(int class_flag, char * format, va_list args) +int HUD_init_message_va(int class_flag, const char * format, va_list args) { + if (!is_worth_showing(class_flag)) + return 0; + int i, j; #ifndef macintosh char message[HUD_MESSAGE_LENGTH+1] = ""; @@ -177,18 +190,11 @@ int HUD_init_message_va(int class_flag, char * format, va_list args) return 1; } - -int HUD_init_message(int class_flag, char * format, ... ) +int HUD_init_message(int class_flag, const char * format, ... ) { int ret; va_list args; - if (PlayerCfg.NoRedundancy && class_flag & HM_REDUNDANT) - return 0; - - if (PlayerCfg.MultiMessages && Game_mode & GM_MULTI && !(class_flag & HM_MULTI)) - return 0; - va_start(args, format); ret = HUD_init_message_va(class_flag, format, args); va_end(args); diff --git a/main/hudmsg.h b/main/hudmsg.h index 9970fc39b..53752d76a 100644 --- a/main/hudmsg.h +++ b/main/hudmsg.h @@ -1,6 +1,8 @@ #ifndef _HUD_MSG_H #define _HUD_MSG_H +#include + #define HUD_MESSAGE_LENGTH 150 #define HUD_MAX_NUM_DISP 4 #define HUD_MAX_NUM_STOR 20 @@ -14,6 +16,7 @@ extern int HUD_toolong; extern void HUD_clear_messages(); extern void HUD_render_message_frame(); -extern int HUD_init_message(int class_flag, char * format, ... ); +int HUD_init_message(int class_flag, const char * format, ... ); +int HUD_init_message_va(int class_flag, const char * format, va_list args); #endif diff --git a/main/powerup.c b/main/powerup.c index 5d487f0ca..5704373d5 100644 --- a/main/powerup.c +++ b/main/powerup.c @@ -130,17 +130,14 @@ void draw_powerup(object *obj) void powerup_basic(int redadd, int greenadd, int blueadd, int score, const char *format, ...) { - char text[120]; va_list args; va_start(args, format ); - vsprintf(text, format, args); + HUD_init_message_va(HM_DEFAULT, format, args); va_end(args); PALETTE_FLASH_ADD(redadd,greenadd,blueadd); - HUD_init_message(HM_DEFAULT, "%s", text); - add_points_to_score(score); }