Merge pull request #529 from AttorneyOnline/crystalwarrior/coolchat-plus
Narrator IC chat support
This commit is contained in:
		
						commit
						56ca90d322
					
				@ -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,22 +2398,31 @@ void Courtroom::handle_ic_message()
 | 
			
		||||
  // Update the chatbox information
 | 
			
		||||
  initialize_chatbox();
 | 
			
		||||
 | 
			
		||||
  // Display our own character
 | 
			
		||||
  display_character();
 | 
			
		||||
 | 
			
		||||
  // Reset the pair character
 | 
			
		||||
  ui_vp_sideplayer_char->stop();
 | 
			
		||||
  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]);
 | 
			
		||||
  }
 | 
			
		||||
  bool immediate = m_chatmessage[IMMEDIATE].toInt() == 1;
 | 
			
		||||
  if (m_chatmessage[EMOTE] != "") {
 | 
			
		||||
    // Display our own character
 | 
			
		||||
    display_character();
 | 
			
		||||
 | 
			
		||||
  // Parse the emote_mod part of the chat message
 | 
			
		||||
  handle_emote_mod(m_chatmessage[EMOTE_MOD].toInt(), m_chatmessage[IMMEDIATE].toInt() == 1);
 | 
			
		||||
    // Reset the pair character
 | 
			
		||||
    ui_vp_sideplayer_char->stop();
 | 
			
		||||
    ui_vp_sideplayer_char->move(0, 0);
 | 
			
		||||
 | 
			
		||||
    // If the emote_mod is not zooming
 | 
			
		||||
    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(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,26 +3322,31 @@ void Courtroom::chat_tick()
 | 
			
		||||
 | 
			
		||||
  if (tick_pos >= f_message.size()) {
 | 
			
		||||
    text_state = 2;
 | 
			
		||||
    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])),
 | 
			
		||||
        ao_app->get_image_suffix(ao_app->get_character_path(m_chatmessage[CHAR_NAME], "(c)/" + m_chatmessage[EMOTE]))
 | 
			
		||||
        };
 | 
			
		||||
      // if there is a (c) animation for this emote and we haven't played it already
 | 
			
		||||
      if (file_exists(ui_vp_player_char->find_image(c_paths)) &&(!c_played)) {
 | 
			
		||||
        anim_state = 5;
 | 
			
		||||
        ui_vp_player_char->set_play_once(true);
 | 
			
		||||
        filename = "(c)" + m_chatmessage[EMOTE];
 | 
			
		||||
        c_played = true;
 | 
			
		||||
    // 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])),
 | 
			
		||||
          ao_app->get_image_suffix(ao_app->get_character_path(m_chatmessage[CHAR_NAME], "(c)/" + m_chatmessage[EMOTE]))
 | 
			
		||||
          };
 | 
			
		||||
        // if there is a (c) animation for this emote and we haven't played it already
 | 
			
		||||
        if (file_exists(ui_vp_player_char->find_image(c_paths)) &&(!c_played)) {
 | 
			
		||||
          anim_state = 5;
 | 
			
		||||
          ui_vp_player_char->set_play_once(true);
 | 
			
		||||
          filename = "(c)" + m_chatmessage[EMOTE];
 | 
			
		||||
          c_played = true;
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
          anim_state = 3;
 | 
			
		||||
          ui_vp_player_char->set_play_once(false);
 | 
			
		||||
          filename = "(a)" + m_chatmessage[EMOTE];
 | 
			
		||||
        }
 | 
			
		||||
        ui_vp_player_char->load_image(filename, m_chatmessage[CHAR_NAME], 0,
 | 
			
		||||
                                        false);
 | 
			
		||||
      }
 | 
			
		||||
      else {
 | 
			
		||||
        anim_state = 3;
 | 
			
		||||
        ui_vp_player_char->set_play_once(false);
 | 
			
		||||
        filename = "(a)" + m_chatmessage[EMOTE];
 | 
			
		||||
      }
 | 
			
		||||
      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,28 +3534,30 @@ void Courtroom::chat_tick()
 | 
			
		||||
      msg_delay = qMin(max_delay, msg_delay * punctuation_modifier);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // If this color is talking
 | 
			
		||||
    if (color_is_talking && anim_state != 2 &&
 | 
			
		||||
        anim_state <
 | 
			
		||||
            4) // Set it to talking as we're not on that already (though we have
 | 
			
		||||
               // to avoid interrupting a non-interrupted preanim)
 | 
			
		||||
    {
 | 
			
		||||
      ui_vp_player_char->stop();
 | 
			
		||||
      ui_vp_player_char->set_play_once(false);
 | 
			
		||||
      filename = "(b)" + m_chatmessage[EMOTE];
 | 
			
		||||
      ui_vp_player_char->load_image(filename, m_chatmessage[CHAR_NAME], 0,
 | 
			
		||||
                                    false);
 | 
			
		||||
      anim_state = 2;
 | 
			
		||||
    }
 | 
			
		||||
    else if (!color_is_talking && anim_state < 3 &&
 | 
			
		||||
             anim_state != 3) // Set it to idle as we're not on that already
 | 
			
		||||
    {
 | 
			
		||||
      ui_vp_player_char->stop();
 | 
			
		||||
      ui_vp_player_char->set_play_once(false);
 | 
			
		||||
      filename = "(a)" + m_chatmessage[EMOTE];
 | 
			
		||||
      ui_vp_player_char->load_image(filename, m_chatmessage[CHAR_NAME], 0,
 | 
			
		||||
                                    false);
 | 
			
		||||
      anim_state = 3;
 | 
			
		||||
    if (m_chatmessage[EMOTE] != "") {
 | 
			
		||||
      // If this color is talking
 | 
			
		||||
      if (color_is_talking && anim_state != 2 &&
 | 
			
		||||
          anim_state <
 | 
			
		||||
          4) // Set it to talking as we're not on that already (though we have
 | 
			
		||||
        // to avoid interrupting a non-interrupted preanim)
 | 
			
		||||
      {
 | 
			
		||||
        ui_vp_player_char->stop();
 | 
			
		||||
        ui_vp_player_char->set_play_once(false);
 | 
			
		||||
        filename = "(b)" + m_chatmessage[EMOTE];
 | 
			
		||||
        ui_vp_player_char->load_image(filename, m_chatmessage[CHAR_NAME], 0,
 | 
			
		||||
                                      false);
 | 
			
		||||
        anim_state = 2;
 | 
			
		||||
      }
 | 
			
		||||
      else if (!color_is_talking && anim_state < 3 &&
 | 
			
		||||
               anim_state != 3) // Set it to idle as we're not on that already
 | 
			
		||||
      {
 | 
			
		||||
        ui_vp_player_char->stop();
 | 
			
		||||
        ui_vp_player_char->set_play_once(false);
 | 
			
		||||
        filename = "(a)" + m_chatmessage[EMOTE];
 | 
			
		||||
        ui_vp_player_char->load_image(filename, m_chatmessage[CHAR_NAME], 0,
 | 
			
		||||
                                      false);
 | 
			
		||||
        anim_state = 3;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    // Continue ticking
 | 
			
		||||
    chat_tick_timer->start(msg_delay);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user