Merge pull request #529 from AttorneyOnline/crystalwarrior/coolchat-plus

Narrator IC chat support
This commit is contained in:
oldmud0 2021-04-20 00:19:51 -05:00 committed by GitHub
commit 56ca90d322
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2236,8 +2236,10 @@ bool Courtroom::handle_objection()
filename, m_chatmessage[CHAR_NAME],
ao_app->get_chat(m_chatmessage[CHAR_NAME]));
sfx_player->clear(); // Objection played! Cut all sfx.
ui_vp_player_char->set_play_once(true);
return true;
}
if (m_chatmessage[EMOTE] != "")
display_character();
return false;
}
@ -2396,6 +2398,9 @@ void Courtroom::handle_ic_message()
// Update the chatbox information
initialize_chatbox();
int emote_mod = m_chatmessage[EMOTE_MOD].toInt();
bool immediate = m_chatmessage[IMMEDIATE].toInt() == 1;
if (m_chatmessage[EMOTE] != "") {
// Display our own character
display_character();
@ -2404,14 +2409,20 @@ void Courtroom::handle_ic_message()
ui_vp_sideplayer_char->move(0, 0);
// If the emote_mod is not zooming
int emote_mod = m_chatmessage[EMOTE_MOD].toInt();
if (emote_mod != 5 && emote_mod != 6) {
// Display the pair character
display_pair_character(m_chatmessage[OTHER_CHARID], m_chatmessage[OTHER_OFFSET]);
}
// Parse the emote_mod part of the chat message
handle_emote_mod(m_chatmessage[EMOTE_MOD].toInt(), m_chatmessage[IMMEDIATE].toInt() == 1);
handle_emote_mod(emote_mod, immediate);
}
else
{
start_chat_ticking();
if (emote_mod == 1 || emote_mod == 2 || emote_mod == 6 || immediate)
play_sfx();
}
// if we have instant objections disabled, and queue is not empty, check if next message after this is an objection.
if (!ao_app->is_instant_objection_enabled() && chatmessage_queue.size() > 0)
@ -3250,6 +3261,10 @@ void Courtroom::start_chat_ticking()
ui_vp_chatbox->show();
ui_vp_message->show();
}
else {
ui_vp_chatbox->hide();
ui_vp_message->hide();
}
// If we're not already waiting on the next message, start the timer. We could be overriden if there's an objection planned.
int delay = ao_app->stay_time();
if (delay > 0 && !text_queue_timer->isActive())
@ -3307,6 +3322,8 @@ void Courtroom::chat_tick()
if (tick_pos >= f_message.size()) {
text_state = 2;
// Check if we're a narrator msg
if (m_chatmessage[EMOTE] != "") {
if (anim_state < 3) {
QStringList c_paths = {
ao_app->get_image_suffix(ao_app->get_character_path(m_chatmessage[CHAR_NAME], "(c)" + m_chatmessage[EMOTE])),
@ -3327,6 +3344,9 @@ void Courtroom::chat_tick()
ui_vp_player_char->load_image(filename, m_chatmessage[CHAR_NAME], 0,
false);
}
}
else // We're a narrator msg
anim_state = 3;
QString f_char;
QString f_custom_theme;
if (ao_app->is_customchat_enabled()) {
@ -3514,6 +3534,7 @@ void Courtroom::chat_tick()
msg_delay = qMin(max_delay, msg_delay * punctuation_modifier);
}
if (m_chatmessage[EMOTE] != "") {
// If this color is talking
if (color_is_talking && anim_state != 2 &&
anim_state <
@ -3537,6 +3558,7 @@ void Courtroom::chat_tick()
false);
anim_state = 3;
}
}
// Continue ticking
chat_tick_timer->start(msg_delay);
}