Fixed a big stack bug that softlocked the game.
This commit is contained in:
parent
c5ef5b0e69
commit
5283bc68d2
@ -1324,6 +1324,10 @@ void Courtroom::append_ic_text(QString p_text, QString p_name)
|
|||||||
ic_colour_stack.pop();
|
ic_colour_stack.pop();
|
||||||
trick_check_pos++;
|
trick_check_pos++;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ic_next_is_not_special = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Grey inline colourisation.
|
// Grey inline colourisation.
|
||||||
@ -1340,6 +1344,10 @@ void Courtroom::append_ic_text(QString p_text, QString p_name)
|
|||||||
ic_colour_stack.pop();
|
ic_colour_stack.pop();
|
||||||
trick_check_pos++;
|
trick_check_pos++;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ic_next_is_not_special = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Green inline colourisation.
|
// Green inline colourisation.
|
||||||
@ -1523,6 +1531,9 @@ void Courtroom::chat_tick()
|
|||||||
// Due to our new text speed system, we always need to stop the timer now.
|
// Due to our new text speed system, we always need to stop the timer now.
|
||||||
chat_tick_timer->stop();
|
chat_tick_timer->stop();
|
||||||
|
|
||||||
|
// Stops blips from playing when we have a formatting option.
|
||||||
|
bool formatting_char = false;
|
||||||
|
|
||||||
if (tick_pos >= f_message.size())
|
if (tick_pos >= f_message.size())
|
||||||
{
|
{
|
||||||
text_state = 2;
|
text_state = 2;
|
||||||
@ -1569,6 +1580,7 @@ void Courtroom::chat_tick()
|
|||||||
else if (f_character == "\\" and !next_character_is_not_special)
|
else if (f_character == "\\" and !next_character_is_not_special)
|
||||||
{
|
{
|
||||||
next_character_is_not_special = true;
|
next_character_is_not_special = true;
|
||||||
|
formatting_char = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Text speed modifier.
|
// Text speed modifier.
|
||||||
@ -1576,10 +1588,12 @@ void Courtroom::chat_tick()
|
|||||||
{
|
{
|
||||||
// ++, because it INCREASES delay!
|
// ++, because it INCREASES delay!
|
||||||
current_display_speed++;
|
current_display_speed++;
|
||||||
|
formatting_char = true;
|
||||||
}
|
}
|
||||||
else if (f_character == "}" and !next_character_is_not_special)
|
else if (f_character == "}" and !next_character_is_not_special)
|
||||||
{
|
{
|
||||||
current_display_speed--;
|
current_display_speed--;
|
||||||
|
formatting_char = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Orange inline colourisation.
|
// Orange inline colourisation.
|
||||||
@ -1600,6 +1614,7 @@ void Courtroom::chat_tick()
|
|||||||
{
|
{
|
||||||
inline_colour_stack.push(INLINE_ORANGE);
|
inline_colour_stack.push(INLINE_ORANGE);
|
||||||
}
|
}
|
||||||
|
formatting_char = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Blue inline colourisation.
|
// Blue inline colourisation.
|
||||||
@ -1616,6 +1631,11 @@ void Courtroom::chat_tick()
|
|||||||
inline_colour_stack.pop();
|
inline_colour_stack.pop();
|
||||||
ui_vp_message->insertHtml("<font color=\"#2d96ff\">" + f_character + "</font>");
|
ui_vp_message->insertHtml("<font color=\"#2d96ff\">" + f_character + "</font>");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
next_character_is_not_special = true;
|
||||||
|
tick_pos--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Grey inline colourisation.
|
// Grey inline colourisation.
|
||||||
@ -1632,6 +1652,11 @@ void Courtroom::chat_tick()
|
|||||||
inline_colour_stack.pop();
|
inline_colour_stack.pop();
|
||||||
ui_vp_message->insertHtml("<font color=\"#BBBBBB\">" + f_character + "</font>");
|
ui_vp_message->insertHtml("<font color=\"#BBBBBB\">" + f_character + "</font>");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
next_character_is_not_special = true;
|
||||||
|
tick_pos--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Green inline colourisation.
|
// Green inline colourisation.
|
||||||
@ -1642,15 +1667,18 @@ void Courtroom::chat_tick()
|
|||||||
if (inline_colour_stack.top() == INLINE_GREEN)
|
if (inline_colour_stack.top() == INLINE_GREEN)
|
||||||
{
|
{
|
||||||
inline_colour_stack.pop();
|
inline_colour_stack.pop();
|
||||||
|
formatting_char = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
inline_colour_stack.push(INLINE_GREEN);
|
inline_colour_stack.push(INLINE_GREEN);
|
||||||
|
formatting_char = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
inline_colour_stack.push(INLINE_GREEN);
|
inline_colour_stack.push(INLINE_GREEN);
|
||||||
|
formatting_char = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1702,7 +1730,7 @@ void Courtroom::chat_tick()
|
|||||||
if (f_message.at(tick_pos) != ' ' || blank_blip)
|
if (f_message.at(tick_pos) != ' ' || blank_blip)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (blip_pos % blip_rate == 0)
|
if (blip_pos % blip_rate == 0 && !formatting_char)
|
||||||
{
|
{
|
||||||
blip_pos = 0;
|
blip_pos = 0;
|
||||||
blip_player->blip_tick();
|
blip_player->blip_tick();
|
||||||
@ -1725,7 +1753,16 @@ void Courtroom::chat_tick()
|
|||||||
current_display_speed = 6;
|
current_display_speed = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
chat_tick_timer->start(message_display_speed[current_display_speed]);
|
// If we had a formatting char, we shouldn't wait so long again, as it won't appear!
|
||||||
|
if (formatting_char)
|
||||||
|
{
|
||||||
|
chat_tick_timer->start(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
chat_tick_timer->start(message_display_speed[current_display_speed]);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user