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], filename, m_chatmessage[CHAR_NAME],
ao_app->get_chat(m_chatmessage[CHAR_NAME])); ao_app->get_chat(m_chatmessage[CHAR_NAME]));
sfx_player->clear(); // Objection played! Cut all sfx. sfx_player->clear(); // Objection played! Cut all sfx.
ui_vp_player_char->set_play_once(true);
return true; return true;
} }
if (m_chatmessage[EMOTE] != "")
display_character(); display_character();
return false; return false;
} }
@ -2396,6 +2398,9 @@ void Courtroom::handle_ic_message()
// Update the chatbox information // Update the chatbox information
initialize_chatbox(); 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 our own character
display_character(); display_character();
@ -2404,14 +2409,20 @@ void Courtroom::handle_ic_message()
ui_vp_sideplayer_char->move(0, 0); ui_vp_sideplayer_char->move(0, 0);
// If the emote_mod is not zooming // If the emote_mod is not zooming
int emote_mod = m_chatmessage[EMOTE_MOD].toInt();
if (emote_mod != 5 && emote_mod != 6) { if (emote_mod != 5 && emote_mod != 6) {
// Display the pair character // Display the pair character
display_pair_character(m_chatmessage[OTHER_CHARID], m_chatmessage[OTHER_OFFSET]); display_pair_character(m_chatmessage[OTHER_CHARID], m_chatmessage[OTHER_OFFSET]);
} }
// Parse the emote_mod part of the chat message // 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 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) 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_chatbox->show();
ui_vp_message->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. // 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(); int delay = ao_app->stay_time();
if (delay > 0 && !text_queue_timer->isActive()) if (delay > 0 && !text_queue_timer->isActive())
@ -3307,6 +3322,8 @@ void Courtroom::chat_tick()
if (tick_pos >= f_message.size()) { if (tick_pos >= f_message.size()) {
text_state = 2; text_state = 2;
// Check if we're a narrator msg
if (m_chatmessage[EMOTE] != "") {
if (anim_state < 3) { if (anim_state < 3) {
QStringList c_paths = { QStringList c_paths = {
ao_app->get_image_suffix(ao_app->get_character_path(m_chatmessage[CHAR_NAME], "(c)" + m_chatmessage[EMOTE])), 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, ui_vp_player_char->load_image(filename, m_chatmessage[CHAR_NAME], 0,
false); false);
} }
}
else // We're a narrator msg
anim_state = 3;
QString f_char; QString f_char;
QString f_custom_theme; QString f_custom_theme;
if (ao_app->is_customchat_enabled()) { if (ao_app->is_customchat_enabled()) {
@ -3514,6 +3534,7 @@ void Courtroom::chat_tick()
msg_delay = qMin(max_delay, msg_delay * punctuation_modifier); msg_delay = qMin(max_delay, msg_delay * punctuation_modifier);
} }
if (m_chatmessage[EMOTE] != "") {
// If this color is talking // If this color is talking
if (color_is_talking && anim_state != 2 && if (color_is_talking && anim_state != 2 &&
anim_state < anim_state <
@ -3537,6 +3558,7 @@ void Courtroom::chat_tick()
false); false);
anim_state = 3; anim_state = 3;
} }
}
// Continue ticking // Continue ticking
chat_tick_timer->start(msg_delay); chat_tick_timer->start(msg_delay);
} }