Inline blue text now stops the character from talking.
This commit is contained in:
		
							parent
							
								
									e7cf1d7735
								
							
						
					
					
						commit
						eca2cd02f4
					
				@ -1195,11 +1195,17 @@ void Courtroom::handle_chatmessage_3()
 | 
			
		||||
  bool text_is_blue = m_chatmessage[TEXT_COLOR].toInt() == BLUE;
 | 
			
		||||
 | 
			
		||||
  if (!text_is_blue && text_state == 1)
 | 
			
		||||
  {
 | 
			
		||||
    //talking
 | 
			
		||||
    f_anim_state = 2;
 | 
			
		||||
    entire_message_is_blue = false;
 | 
			
		||||
  }
 | 
			
		||||
  else
 | 
			
		||||
  {
 | 
			
		||||
    //idle
 | 
			
		||||
    f_anim_state = 3;
 | 
			
		||||
    entire_message_is_blue = true;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (f_anim_state <= anim_state)
 | 
			
		||||
    return;
 | 
			
		||||
@ -1536,6 +1542,10 @@ void Courtroom::start_chat_ticking()
 | 
			
		||||
  tick_pos = 0;
 | 
			
		||||
  blip_pos = 0;
 | 
			
		||||
 | 
			
		||||
  // Just in case we somehow got inline blue text left over from a previous message,
 | 
			
		||||
  // let's set it to false.
 | 
			
		||||
  inline_blue_depth = 0;
 | 
			
		||||
 | 
			
		||||
  // At the start of every new message, we set the text speed to the default.
 | 
			
		||||
  current_display_speed = 3;
 | 
			
		||||
  chat_tick_timer->start(message_display_speed[current_display_speed]);
 | 
			
		||||
@ -1656,6 +1666,18 @@ void Courtroom::chat_tick()
 | 
			
		||||
    {
 | 
			
		||||
        inline_colour_stack.push(INLINE_BLUE);
 | 
			
		||||
        ui_vp_message->insertHtml("<font color=\"#2d96ff\">" + f_character + "</font>");
 | 
			
		||||
 | 
			
		||||
        // Increase how deep we are in inline blues.
 | 
			
		||||
        inline_blue_depth++;
 | 
			
		||||
 | 
			
		||||
        // Here, we check if the entire message is blue.
 | 
			
		||||
        // If it isn't, we stop talking.
 | 
			
		||||
        if (!entire_message_is_blue)
 | 
			
		||||
        {
 | 
			
		||||
          QString f_char = m_chatmessage[CHAR_NAME];
 | 
			
		||||
          QString f_emote = m_chatmessage[EMOTE];
 | 
			
		||||
          ui_vp_player_char->play_idle(f_char, f_emote);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    else if (f_character == ")" and !next_character_is_not_special
 | 
			
		||||
             and !inline_colour_stack.empty())
 | 
			
		||||
@ -1664,6 +1686,24 @@ void Courtroom::chat_tick()
 | 
			
		||||
        {
 | 
			
		||||
            inline_colour_stack.pop();
 | 
			
		||||
            ui_vp_message->insertHtml("<font color=\"#2d96ff\">" + f_character + "</font>");
 | 
			
		||||
 | 
			
		||||
            // Decrease how deep we are in inline blues.
 | 
			
		||||
            // Just in case, we do a check if we're above zero, but we should be.
 | 
			
		||||
            if (inline_blue_depth > 0)
 | 
			
		||||
            {
 | 
			
		||||
              inline_blue_depth--;
 | 
			
		||||
              // Here, we check if the entire message is blue.
 | 
			
		||||
              // If it isn't, we start talking if we have completely climbed out of inline blues.
 | 
			
		||||
              if (!entire_message_is_blue)
 | 
			
		||||
              {
 | 
			
		||||
                if (inline_blue_depth == 0)
 | 
			
		||||
                {
 | 
			
		||||
                  QString f_char = m_chatmessage[CHAR_NAME];
 | 
			
		||||
                  QString f_emote = m_chatmessage[EMOTE];
 | 
			
		||||
                  ui_vp_player_char->play_talking(f_char, f_emote);
 | 
			
		||||
                }
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
@ -172,6 +172,14 @@ private:
 | 
			
		||||
  int current_display_speed = 3;
 | 
			
		||||
  int message_display_speed[7] = {30, 40, 50, 60, 75, 100, 120};
 | 
			
		||||
 | 
			
		||||
  // This is for checking if the character should start talking again
 | 
			
		||||
  // when an inline blue text ends.
 | 
			
		||||
  bool entire_message_is_blue = false;
 | 
			
		||||
 | 
			
		||||
  // And this is the inline 'talking checker'. Counts how 'deep' we are
 | 
			
		||||
  // in inline blues.
 | 
			
		||||
  int inline_blue_depth = 0;
 | 
			
		||||
 | 
			
		||||
  QVector<char_type> char_list;
 | 
			
		||||
  QVector<evi_type> evidence_list;
 | 
			
		||||
  QVector<QString> music_list;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user