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;
 | 
					  bool text_is_blue = m_chatmessage[TEXT_COLOR].toInt() == BLUE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!text_is_blue && text_state == 1)
 | 
					  if (!text_is_blue && text_state == 1)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    //talking
 | 
					    //talking
 | 
				
			||||||
    f_anim_state = 2;
 | 
					    f_anim_state = 2;
 | 
				
			||||||
 | 
					    entire_message_is_blue = false;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    //idle
 | 
					    //idle
 | 
				
			||||||
    f_anim_state = 3;
 | 
					    f_anim_state = 3;
 | 
				
			||||||
 | 
					    entire_message_is_blue = true;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (f_anim_state <= anim_state)
 | 
					  if (f_anim_state <= anim_state)
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
@ -1536,6 +1542,10 @@ void Courtroom::start_chat_ticking()
 | 
				
			|||||||
  tick_pos = 0;
 | 
					  tick_pos = 0;
 | 
				
			||||||
  blip_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.
 | 
					  // At the start of every new message, we set the text speed to the default.
 | 
				
			||||||
  current_display_speed = 3;
 | 
					  current_display_speed = 3;
 | 
				
			||||||
  chat_tick_timer->start(message_display_speed[current_display_speed]);
 | 
					  chat_tick_timer->start(message_display_speed[current_display_speed]);
 | 
				
			||||||
@ -1656,6 +1666,18 @@ void Courtroom::chat_tick()
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        inline_colour_stack.push(INLINE_BLUE);
 | 
					        inline_colour_stack.push(INLINE_BLUE);
 | 
				
			||||||
        ui_vp_message->insertHtml("<font color=\"#2d96ff\">" + f_character + "</font>");
 | 
					        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
 | 
					    else if (f_character == ")" and !next_character_is_not_special
 | 
				
			||||||
             and !inline_colour_stack.empty())
 | 
					             and !inline_colour_stack.empty())
 | 
				
			||||||
@ -1664,6 +1686,24 @@ 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>");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // 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
 | 
					        else
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
				
			|||||||
@ -172,6 +172,14 @@ private:
 | 
				
			|||||||
  int current_display_speed = 3;
 | 
					  int current_display_speed = 3;
 | 
				
			||||||
  int message_display_speed[7] = {30, 40, 50, 60, 75, 100, 120};
 | 
					  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<char_type> char_list;
 | 
				
			||||||
  QVector<evi_type> evidence_list;
 | 
					  QVector<evi_type> evidence_list;
 | 
				
			||||||
  QVector<QString> music_list;
 | 
					  QVector<QString> music_list;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user