reset message widget at level transition

This commit is contained in:
Roman Fomin 2024-12-02 11:16:32 +07:00
parent 658f06b83a
commit c4b806523e
3 changed files with 13 additions and 11 deletions

View File

@ -198,8 +198,8 @@ typedef struct sbe_widget_s
int height; int height;
// message
int duration; int duration;
int duration_left;
} sbe_widget_t; } sbe_widget_t;
struct sbarelem_s struct sbarelem_s

View File

@ -1080,6 +1080,10 @@ static void ResetElem(sbarelem_t *elem)
elem->subtype.number->oldvalue = -1; elem->subtype.number->oldvalue = -1;
break; break;
case sbe_widget:
elem->subtype.widget->duration_left = 0;
break;
default: default:
break; break;
} }

View File

@ -92,7 +92,6 @@ static void UpdateMessage(sbe_widget_t *widget, player_t *player)
ST_ClearLines(widget); ST_ClearLines(widget);
static char string[120]; static char string[120];
static int duration_left;
static boolean overwrite = true; static boolean overwrite = true;
static boolean messages_enabled = true; static boolean messages_enabled = true;
@ -100,21 +99,21 @@ static void UpdateMessage(sbe_widget_t *widget, player_t *player)
{ {
if (message_string[0]) if (message_string[0])
{ {
duration_left = widget->duration; widget->duration_left = widget->duration;
M_StringCopy(string, message_string, sizeof(string)); M_StringCopy(string, message_string, sizeof(string));
message_string[0] = '\0'; message_string[0] = '\0';
overwrite = false; overwrite = false;
} }
else if (player->message && player->message[0] && overwrite) else if (player->message && player->message[0] && overwrite)
{ {
duration_left = widget->duration; widget->duration_left = widget->duration;
M_StringCopy(string, player->message, sizeof(string)); M_StringCopy(string, player->message, sizeof(string));
player->message[0] = '\0'; player->message[0] = '\0';
} }
else if (message_review) else if (message_review)
{ {
message_review = false; message_review = false;
duration_left = widget->duration; widget->duration_left = widget->duration;
} }
} }
@ -123,14 +122,14 @@ static void UpdateMessage(sbe_widget_t *widget, player_t *player)
messages_enabled = show_messages; messages_enabled = show_messages;
} }
if (duration_left == 0) if (widget->duration_left == 0)
{ {
overwrite = true; overwrite = true;
} }
else else
{ {
ST_AddLine(widget, string); ST_AddLine(widget, string);
--duration_left; --widget->duration_left;
} }
} }
@ -144,19 +143,18 @@ static void UpdateSecretMessage(sbe_widget_t *widget, player_t *player)
} }
static char string[80]; static char string[80];
static int duration_left;
if (player->secretmessage) if (player->secretmessage)
{ {
duration_left = widget->duration; widget->duration_left = widget->duration;
M_StringCopy(string, player->secretmessage, sizeof(string)); M_StringCopy(string, player->secretmessage, sizeof(string));
player->secretmessage = NULL; player->secretmessage = NULL;
} }
if (duration_left > 0) if (widget->duration_left > 0)
{ {
ST_AddLine(widget, string); ST_AddLine(widget, string);
--duration_left; --widget->duration_left;
} }
} }