Resolved merge conflicts.
This comment format is just tiring for the eyes. Imagine being on 1080p and not being able to read more than 5 method definitions due to comments.
This commit is contained in:
		
							parent
							
								
									fefaad5394
								
							
						
					
					
						commit
						b306929311
					
				@ -91,6 +91,8 @@ add_executable(Attorney_Online
 | 
				
			|||||||
  src/path_functions.cpp
 | 
					  src/path_functions.cpp
 | 
				
			||||||
  src/scrolltext.cpp
 | 
					  src/scrolltext.cpp
 | 
				
			||||||
  src/scrolltext.h
 | 
					  src/scrolltext.h
 | 
				
			||||||
 | 
					  src/serverdata.cpp
 | 
				
			||||||
 | 
					  src/serverdata.h
 | 
				
			||||||
  src/text_file_functions.cpp
 | 
					  src/text_file_functions.cpp
 | 
				
			||||||
  src/widgets/aooptionsdialog.cpp
 | 
					  src/widgets/aooptionsdialog.cpp
 | 
				
			||||||
  src/widgets/aooptionsdialog.h
 | 
					  src/widgets/aooptionsdialog.h
 | 
				
			||||||
 | 
				
			|||||||
@ -727,8 +727,8 @@ void Courtroom::set_widgets()
 | 
				
			|||||||
  // If there is a point to it, show all CCCC features.
 | 
					  // If there is a point to it, show all CCCC features.
 | 
				
			||||||
  // We also do this this soon so that set_size_and_pos can hide them all later,
 | 
					  // We also do this this soon so that set_size_and_pos can hide them all later,
 | 
				
			||||||
  // if needed.
 | 
					  // if needed.
 | 
				
			||||||
  if (ao_app->m_serverdata.get_feature(
 | 
					  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::CCCC_IC_SUPPORT))
 | 
				
			||||||
          server::BASE_FEATURE_SET::CCCC_IC_SUPPORT)) {
 | 
					  {
 | 
				
			||||||
    ui_pair_button->show();
 | 
					    ui_pair_button->show();
 | 
				
			||||||
    ui_immediate->show();
 | 
					    ui_immediate->show();
 | 
				
			||||||
    ui_showname_enable->show();
 | 
					    ui_showname_enable->show();
 | 
				
			||||||
@ -1574,8 +1574,7 @@ void Courtroom::update_character(int p_cid, QString char_name, bool reset_emote)
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ui_custom_objection->hide();
 | 
					  ui_custom_objection->hide();
 | 
				
			||||||
  if (ao_app->m_serverdata.get_feature(
 | 
					  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::CUSTOMOBJECTIONS)) // if setting is enabled
 | 
				
			||||||
          server::BASE_FEATURE_SET::CUSTOMOBJECTIONS)) // if setting is enabled
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    custom_obj_menu->clear();
 | 
					    custom_obj_menu->clear();
 | 
				
			||||||
    custom_objections_list.clear();
 | 
					    custom_objections_list.clear();
 | 
				
			||||||
@ -1650,6 +1649,7 @@ void Courtroom::enter_courtroom()
 | 
				
			|||||||
  set_evidence_page();
 | 
					  set_evidence_page();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::FLIPPING))
 | 
					  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::FLIPPING))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    ui_flip->show();
 | 
					    ui_flip->show();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
@ -1658,6 +1658,7 @@ void Courtroom::enter_courtroom()
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::ADDITIVE))
 | 
					  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::ADDITIVE))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    ui_additive->show();
 | 
					    ui_additive->show();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
@ -1754,7 +1755,6 @@ void Courtroom::list_music()
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
      parent = treeItem;
 | 
					      parent = treeItem;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    ++n_listed_songs;
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ui_music_list->expandAll(); // Needs to somehow remember which categories were
 | 
					  ui_music_list->expandAll(); // Needs to somehow remember which categories were
 | 
				
			||||||
@ -1776,7 +1776,8 @@ void Courtroom::list_areas()
 | 
				
			|||||||
    QString i_area;
 | 
					    QString i_area;
 | 
				
			||||||
    i_area.append(area_list.at(n_area));
 | 
					    i_area.append(area_list.at(n_area));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::ARUP)) {
 | 
					    if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::ARUP))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      i_area.append("\n  ");
 | 
					      i_area.append("\n  ");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      i_area.append(arup_statuses.at(n_area));
 | 
					      i_area.append(arup_statuses.at(n_area));
 | 
				
			||||||
@ -1806,7 +1807,8 @@ void Courtroom::list_areas()
 | 
				
			|||||||
    treeItem->setText(0, area_list.at(n_area));
 | 
					    treeItem->setText(0, area_list.at(n_area));
 | 
				
			||||||
    treeItem->setText(1, i_area);
 | 
					    treeItem->setText(1, i_area);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::ARUP)) {
 | 
					    if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::ARUP))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      // Coloring logic here.
 | 
					      // Coloring logic here.
 | 
				
			||||||
      treeItem->setBackground(1, free_brush);
 | 
					      treeItem->setBackground(1, free_brush);
 | 
				
			||||||
      if (arup_locks.at(n_area) == "LOCKED")
 | 
					      if (arup_locks.at(n_area) == "LOCKED")
 | 
				
			||||||
@ -1873,12 +1875,11 @@ void Courtroom::append_server_chatmessage(QString p_name, QString p_message, QSt
 | 
				
			|||||||
    color = ao_app->get_color("ms_chatlog_sender_color", "courtroom_fonts.ini").name();
 | 
					    color = ao_app->get_color("ms_chatlog_sender_color", "courtroom_fonts.ini").name();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  if (p_color == "1")
 | 
					  if (p_color == "1")
 | 
				
			||||||
    {color =
 | 
					  {
 | 
				
			||||||
        ao_app->get_color("server_chatlog_sender_color", "courtroom_fonts.ini")
 | 
					    color = ao_app->get_color("server_chatlog_sender_color", "courtroom_fonts.ini").name();
 | 
				
			||||||
            .name();}
 | 
					  }
 | 
				
			||||||
  if (!ao_app->m_serverdata.get_feature(
 | 
					  if (!ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::AUTH_PACKET) && p_message == "Logged in as a moderator.")
 | 
				
			||||||
          server::BASE_FEATURE_SET::AUTH_PACKET) &&
 | 
					  {
 | 
				
			||||||
      p_message == "Logged in as a moderator.") {
 | 
					 | 
				
			||||||
    // Emulate successful authentication
 | 
					    // Emulate successful authentication
 | 
				
			||||||
    on_authentication_state_received(1);
 | 
					    on_authentication_state_received(1);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@ -1974,10 +1975,12 @@ void Courtroom::on_chat_return_pressed()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  int f_desk_mod = DESK_SHOW;
 | 
					  int f_desk_mod = DESK_SHOW;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::DESKMOD)) {
 | 
					  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::DESKMOD))
 | 
				
			||||||
    f_desk_mod = ao_app->get_desk_mod(current_char, current_emote);{}
 | 
					  {
 | 
				
			||||||
    if (!ao_app->m_serverdata.get_feature(
 | 
					    f_desk_mod = ao_app->get_desk_mod(current_char, current_emote);
 | 
				
			||||||
            server::BASE_FEATURE_SET::EXPANDED_DESK_MODS)) {
 | 
					    {}
 | 
				
			||||||
 | 
					    if (!ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EXPANDED_DESK_MODS))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      if (f_desk_mod == DESK_PRE_ONLY_EX || f_desk_mod == DESK_PRE_ONLY)
 | 
					      if (f_desk_mod == DESK_PRE_ONLY_EX || f_desk_mod == DESK_PRE_ONLY)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        f_desk_mod = DESK_HIDE;
 | 
					        f_desk_mod = DESK_HIDE;
 | 
				
			||||||
@ -2028,8 +2031,8 @@ void Courtroom::on_chat_return_pressed()
 | 
				
			|||||||
      f_emote_mod = PREANIM;
 | 
					      f_emote_mod = PREANIM;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    // Turn zoom into preanim zoom
 | 
					    // Turn zoom into preanim zoom
 | 
				
			||||||
    else if (f_emote_mod == ZOOM && ao_app->m_serverdata.get_feature(
 | 
					    else if (f_emote_mod == ZOOM && ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::PREZOOM))
 | 
				
			||||||
                                        server::BASE_FEATURE_SET::PREZOOM)) {
 | 
					    {
 | 
				
			||||||
      f_emote_mod = PREANIM_ZOOM;
 | 
					      f_emote_mod = PREANIM_ZOOM;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    // Play the sfx
 | 
					    // Play the sfx
 | 
				
			||||||
@ -2091,10 +2094,8 @@ void Courtroom::on_chat_return_pressed()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  QString f_obj_state;
 | 
					  QString f_obj_state;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ((objection_state == 4 &&
 | 
					  if ((objection_state == 4 && !ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::CUSTOMOBJECTIONS)) || (objection_state < 0))
 | 
				
			||||||
       !ao_app->m_serverdata.get_feature(
 | 
					  {
 | 
				
			||||||
           server::BASE_FEATURE_SET::CUSTOMOBJECTIONS)) ||
 | 
					 | 
				
			||||||
      (objection_state < 0)) {
 | 
					 | 
				
			||||||
    f_obj_state = "0";
 | 
					    f_obj_state = "0";
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  else if (objection_custom != "" && objection_state == 4)
 | 
					  else if (objection_custom != "" && objection_state == 4)
 | 
				
			||||||
@ -2128,7 +2129,8 @@ void Courtroom::on_chat_return_pressed()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  QString f_flip;
 | 
					  QString f_flip;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::FLIPPING)) {
 | 
					  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::FLIPPING))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    if (ui_flip->isChecked())
 | 
					    if (ui_flip->isChecked())
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      f_flip = "1";
 | 
					      f_flip = "1";
 | 
				
			||||||
@ -2165,11 +2167,12 @@ void Courtroom::on_chat_return_pressed()
 | 
				
			|||||||
  packet_contents.append(f_text_color);
 | 
					  packet_contents.append(f_text_color);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // If the server we're on supports CCCC stuff, we should use it!
 | 
					  // If the server we're on supports CCCC stuff, we should use it!
 | 
				
			||||||
  if (ao_app->m_serverdata.get_feature(
 | 
					  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::CCCC_IC_SUPPORT))
 | 
				
			||||||
          server::BASE_FEATURE_SET::CCCC_IC_SUPPORT)) {
 | 
					  {
 | 
				
			||||||
    // If there is a showname entered, use that -- else, just send an empty
 | 
					    // If there is a showname entered, use that -- else, just send an empty
 | 
				
			||||||
    // packet-part.
 | 
					    // packet-part.
 | 
				
			||||||
    if (!ui_ic_chat_name->text().isEmpty()) {
 | 
					    if (!ui_ic_chat_name->text().isEmpty())
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      packet_contents.append(ui_ic_chat_name->text());
 | 
					      packet_contents.append(ui_ic_chat_name->text());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
@ -2182,8 +2185,7 @@ void Courtroom::on_chat_return_pressed()
 | 
				
			|||||||
    if (other_charid > -1 && other_charid != m_cid)
 | 
					    if (other_charid > -1 && other_charid != m_cid)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      QString packet = QString::number(other_charid);
 | 
					      QString packet = QString::number(other_charid);
 | 
				
			||||||
      if (ao_app->m_serverdata.get_feature(
 | 
					      if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS)) // Only servers with effects
 | 
				
			||||||
              server::BASE_FEATURE_SET::EFFECTS)) // Only servers with effects
 | 
					 | 
				
			||||||
      // enabled will support pair
 | 
					      // enabled will support pair
 | 
				
			||||||
      // reordering
 | 
					      // reordering
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
@ -2196,9 +2198,10 @@ void Courtroom::on_chat_return_pressed()
 | 
				
			|||||||
      packet_contents.append("-1");
 | 
					      packet_contents.append("-1");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    // Send the offset as it's gonna be used regardless
 | 
					    // Send the offset as it's gonna be used regardless
 | 
				
			||||||
    if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::Y_OFFSET)){
 | 
					    if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::Y_OFFSET))
 | 
				
			||||||
      packet_contents.append(QString::number(char_offset) + "&" +
 | 
					    {
 | 
				
			||||||
                             QString::number(char_vert_offset));}
 | 
					      packet_contents.append(QString::number(char_offset) + "&" + QString::number(char_vert_offset));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      packet_contents.append(QString::number(char_offset));
 | 
					      packet_contents.append(QString::number(char_offset));
 | 
				
			||||||
@ -2217,9 +2220,9 @@ void Courtroom::on_chat_return_pressed()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  // If the server we're on supports Looping SFX and Screenshake, use it if the
 | 
					  // If the server we're on supports Looping SFX and Screenshake, use it if the
 | 
				
			||||||
  // emote uses it.
 | 
					  // emote uses it.
 | 
				
			||||||
  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::LOOPING_SFX)) {
 | 
					  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::LOOPING_SFX))
 | 
				
			||||||
    packet_contents.append(
 | 
					  {
 | 
				
			||||||
        ao_app->get_sfx_looping(current_char, current_emote));
 | 
					    packet_contents.append(ao_app->get_sfx_looping(current_char, current_emote));
 | 
				
			||||||
    packet_contents.append(QString::number(screenshake_state));
 | 
					    packet_contents.append(QString::number(screenshake_state));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    QString pre_emote = ao_app->get_pre_emote(current_char, current_emote);
 | 
					    QString pre_emote = ao_app->get_pre_emote(current_char, current_emote);
 | 
				
			||||||
@ -2247,14 +2250,14 @@ void Courtroom::on_chat_return_pressed()
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::ADDITIVE)) {
 | 
					  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::ADDITIVE))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    packet_contents.append(ui_additive->isChecked() ? "1" : "0");
 | 
					    packet_contents.append(ui_additive->isChecked() ? "1" : "0");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS)) {
 | 
					  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS))
 | 
				
			||||||
    QString p_effect_folder =
 | 
					  {
 | 
				
			||||||
        ao_app->read_char_ini(current_char, "effects", "Options");
 | 
					    QString p_effect_folder = ao_app->read_char_ini(current_char, "effects", "Options");
 | 
				
			||||||
    QString fx_sound =
 | 
					    QString fx_sound = ao_app->get_effect_property(effect, current_char, p_effect_folder, "sound");
 | 
				
			||||||
        ao_app->get_effect_property(effect, current_char, p_effect_folder, "sound");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Don't overlap the two sfx
 | 
					    // Don't overlap the two sfx
 | 
				
			||||||
    if (!ui_pre->isChecked() && (!custom_sfx.isEmpty() || ui_sfx_dropdown->currentIndex() == 1))
 | 
					    if (!ui_pre->isChecked() && (!custom_sfx.isEmpty() || ui_sfx_dropdown->currentIndex() == 1))
 | 
				
			||||||
@ -2434,10 +2437,8 @@ void Courtroom::unpack_chatmessage(QStringList p_contents)
 | 
				
			|||||||
    // amongst the packet's content. We also have to check if the server even
 | 
					    // amongst the packet's content. We also have to check if the server even
 | 
				
			||||||
    // supports CCCC's IC features, or if it's just japing us. Also, don't
 | 
					    // supports CCCC's IC features, or if it's just japing us. Also, don't
 | 
				
			||||||
    // forget! A size 15 message will have indices from 0 to 14.
 | 
					    // forget! A size 15 message will have indices from 0 to 14.
 | 
				
			||||||
    if (n_string < p_contents.size() &&
 | 
					    if (n_string < p_contents.size() && (n_string < MS_MINIMUM || ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::CCCC_IC_SUPPORT)))
 | 
				
			||||||
        (n_string < MS_MINIMUM ||
 | 
					    {
 | 
				
			||||||
         ao_app->m_serverdata.get_feature(
 | 
					 | 
				
			||||||
             server::BASE_FEATURE_SET::CCCC_IC_SUPPORT))) {
 | 
					 | 
				
			||||||
      m_chatmessage[n_string] = p_contents.at(n_string);
 | 
					      m_chatmessage[n_string] = p_contents.at(n_string);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
@ -2794,9 +2795,8 @@ void Courtroom::display_pair_character(QString other_charid, QString other_offse
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      // Flip the pair character
 | 
					      // Flip the pair character
 | 
				
			||||||
      if (ao_app->m_serverdata.get_feature(
 | 
					      if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::FLIPPING) && m_chatmessage[OTHER_FLIP].toInt() == 1)
 | 
				
			||||||
              server::BASE_FEATURE_SET::FLIPPING) &&
 | 
					      {
 | 
				
			||||||
          m_chatmessage[OTHER_FLIP].toInt() == 1){
 | 
					 | 
				
			||||||
        ui_vp_sideplayer_char->set_flipped(true);
 | 
					        ui_vp_sideplayer_char->set_flipped(true);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
@ -4004,9 +4004,8 @@ void Courtroom::start_chat_ticking()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  QString f_blips = ao_app->get_blipname(m_chatmessage[CHAR_NAME]);
 | 
					  QString f_blips = ao_app->get_blipname(m_chatmessage[CHAR_NAME]);
 | 
				
			||||||
  f_blips = ao_app->get_blips(f_blips);
 | 
					  f_blips = ao_app->get_blips(f_blips);
 | 
				
			||||||
  if (ao_app->m_serverdata.get_feature(
 | 
					  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::CUSTOM_BLIPS) && !m_chatmessage[BLIPNAME].isEmpty())
 | 
				
			||||||
          server::BASE_FEATURE_SET::CUSTOM_BLIPS) &&
 | 
					  {
 | 
				
			||||||
      !m_chatmessage[BLIPNAME].isEmpty()) {
 | 
					 | 
				
			||||||
    f_blips = ao_app->get_blips(m_chatmessage[BLIPNAME]);
 | 
					    f_blips = ao_app->get_blips(m_chatmessage[BLIPNAME]);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  blip_player->setBlip(f_blips);
 | 
					  blip_player->setBlip(f_blips);
 | 
				
			||||||
@ -4463,11 +4462,9 @@ void Courtroom::handle_song(QStringList *p_contents)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!file_exists(ao_app->get_sfx_suffix(ao_app->get_music_path(f_song))) &&
 | 
					  if (!file_exists(ao_app->get_sfx_suffix(ao_app->get_music_path(f_song))) && !f_song.startsWith("http") && f_song != "~stop.mp3" && !ao_app->m_serverdata.get_asset_url().isEmpty())
 | 
				
			||||||
      !f_song.startsWith("http") && f_song != "~stop.mp3" &&
 | 
					  {
 | 
				
			||||||
      !ao_app->m_serverdata.get_asset_url().isEmpty()) {
 | 
					    f_song = (ao_app->m_serverdata.get_asset_url() + "sounds/music/" + f_song).toLower();
 | 
				
			||||||
    f_song = (ao_app->m_serverdata.get_asset_url() + "sounds/music/" + f_song)
 | 
					 | 
				
			||||||
                 .toLower();
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  bool is_stop = (f_song == "~stop.mp3");
 | 
					  bool is_stop = (f_song == "~stop.mp3");
 | 
				
			||||||
@ -4686,11 +4683,12 @@ void Courtroom::on_ooc_return_pressed()
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  QString ooc_message = ui_ooc_chat_message->text();
 | 
					  QString ooc_message = ui_ooc_chat_message->text();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //We ignore it when the server is compatible with 2.8
 | 
					  // We ignore it when the server is compatible with 2.8
 | 
				
			||||||
  //Using an arbitrary 2.8 feature flag certainly won't cause issues someday.
 | 
					  // Using an arbitrary 2.8 feature flag certainly won't cause issues someday.
 | 
				
			||||||
  if (ooc_message.startsWith("/pos") &&
 | 
					  if (ooc_message.startsWith("/pos") && ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS))
 | 
				
			||||||
      ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS)) {
 | 
					  {
 | 
				
			||||||
    if (ooc_message == "/pos jud") {
 | 
					    if (ooc_message == "/pos jud")
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      show_judge_controls(true);
 | 
					      show_judge_controls(true);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
@ -5514,12 +5512,12 @@ void Courtroom::on_music_list_double_clicked(QTreeWidgetItem *p_item, int column
 | 
				
			|||||||
  QStringList packet_contents;
 | 
					  QStringList packet_contents;
 | 
				
			||||||
  packet_contents.append(p_song);
 | 
					  packet_contents.append(p_song);
 | 
				
			||||||
  packet_contents.append(QString::number(m_cid));
 | 
					  packet_contents.append(QString::number(m_cid));
 | 
				
			||||||
  if ((!ui_ic_chat_name->text().isEmpty() &&
 | 
					  if ((!ui_ic_chat_name->text().isEmpty() && ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::CCCC_IC_SUPPORT)) || ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS))
 | 
				
			||||||
       ao_app->m_serverdata.get_feature(
 | 
					  {
 | 
				
			||||||
           server::BASE_FEATURE_SET::CCCC_IC_SUPPORT)) ||
 | 
					 | 
				
			||||||
      ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS))
 | 
					 | 
				
			||||||
    packet_contents.append(ui_ic_chat_name->text());
 | 
					    packet_contents.append(ui_ic_chat_name->text());
 | 
				
			||||||
  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS)){
 | 
					  }
 | 
				
			||||||
 | 
					  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    packet_contents.append(QString::number(music_flags));
 | 
					    packet_contents.append(QString::number(music_flags));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  ao_app->send_server_packet(AOPacket("MC", packet_contents));
 | 
					  ao_app->send_server_packet(AOPacket("MC", packet_contents));
 | 
				
			||||||
@ -5628,6 +5626,7 @@ void Courtroom::music_list_expand_all()
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  ui_music_list->expandAll();
 | 
					  ui_music_list->expandAll();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Courtroom::music_list_collapse_all()
 | 
					void Courtroom::music_list_collapse_all()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ui_music_list->collapseAll();
 | 
					  ui_music_list->collapseAll();
 | 
				
			||||||
@ -5645,6 +5644,7 @@ void Courtroom::music_stop(bool no_effects)
 | 
				
			|||||||
  {
 | 
					  {
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Default fake song is a song present in Vanilla content, the ~stop.mp3
 | 
					  // Default fake song is a song present in Vanilla content, the ~stop.mp3
 | 
				
			||||||
  QString fake_song = "~stop.mp3";
 | 
					  QString fake_song = "~stop.mp3";
 | 
				
			||||||
  // If the fake song is not present in the music list
 | 
					  // If the fake song is not present in the music list
 | 
				
			||||||
@ -5662,21 +5662,29 @@ void Courtroom::music_stop(bool no_effects)
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  QStringList packet_contents;       // its music list
 | 
					  QStringList packet_contents;       // its music list
 | 
				
			||||||
  packet_contents.append(fake_song); // this is our fake song, playing it triggers special code
 | 
					  packet_contents.append(fake_song); // this is our fake song, playing it triggers special code
 | 
				
			||||||
  packet_contents.append(QString::number(m_cid));
 | 
					  packet_contents.append(QString::number(m_cid));
 | 
				
			||||||
  if ((!ui_ic_chat_name->text().isEmpty() &&
 | 
					
 | 
				
			||||||
       ao_app->m_serverdata.get_feature(
 | 
					  if ((!ui_ic_chat_name->text().isEmpty() && ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::CCCC_IC_SUPPORT)) || ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS))
 | 
				
			||||||
           server::BASE_FEATURE_SET::CCCC_IC_SUPPORT)) ||
 | 
					  {
 | 
				
			||||||
      ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS))
 | 
					 | 
				
			||||||
    packet_contents.append(ui_ic_chat_name->text());
 | 
					    packet_contents.append(ui_ic_chat_name->text());
 | 
				
			||||||
  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS)) {
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    if (no_effects)
 | 
					    if (no_effects)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      packet_contents.append("0");
 | 
					      packet_contents.append("0");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      packet_contents.append(QString::number(music_flags));
 | 
					      packet_contents.append(QString::number(music_flags));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ao_app->send_server_packet(AOPacket("MC", packet_contents));
 | 
					    ao_app->send_server_packet(AOPacket("MC", packet_contents));
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Courtroom::on_area_list_double_clicked(QTreeWidgetItem *p_item, int column)
 | 
					void Courtroom::on_area_list_double_clicked(QTreeWidgetItem *p_item, int column)
 | 
				
			||||||
@ -5866,7 +5874,9 @@ void Courtroom::on_pair_clicked()
 | 
				
			|||||||
    ui_pair_list->show();
 | 
					    ui_pair_list->show();
 | 
				
			||||||
    ui_pair_offset_spinbox->show();
 | 
					    ui_pair_offset_spinbox->show();
 | 
				
			||||||
    if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::Y_OFFSET))
 | 
					    if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::Y_OFFSET))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      ui_pair_vert_offset_spinbox->show();
 | 
					      ui_pair_vert_offset_spinbox->show();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    ui_pair_order_dropdown->show();
 | 
					    ui_pair_order_dropdown->show();
 | 
				
			||||||
    ui_mute_list->hide();
 | 
					    ui_mute_list->hide();
 | 
				
			||||||
    ui_mute->setImage("mute");
 | 
					    ui_mute->setImage("mute");
 | 
				
			||||||
@ -6179,8 +6189,8 @@ void Courtroom::on_spectator_clicked()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void Courtroom::on_call_mod_clicked()
 | 
					void Courtroom::on_call_mod_clicked()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (ao_app->m_serverdata.get_feature(
 | 
					  if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::MODCALL_REASON))
 | 
				
			||||||
          server::BASE_FEATURE_SET::MODCALL_REASON)) { 
 | 
					  {
 | 
				
			||||||
    QMessageBox errorBox;
 | 
					    QMessageBox errorBox;
 | 
				
			||||||
    QInputDialog input;
 | 
					    QInputDialog input;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -87,7 +87,8 @@ void AOApplication::server_packet_received(AOPacket packet)
 | 
				
			|||||||
      w_courtroom->append_server_chatmessage(content.at(0), content.at(1), "0");
 | 
					      w_courtroom->append_server_chatmessage(content.at(0), content.at(1), "0");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  else if (header == "FL") {
 | 
					  else if (header == "FL")
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    m_serverdata.set_features(content);
 | 
					    m_serverdata.set_features(content);
 | 
				
			||||||
    log_to_demo = false;
 | 
					    log_to_demo = false;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@ -114,28 +115,21 @@ void AOApplication::server_packet_received(AOPacket packet)
 | 
				
			|||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    char_list_size = content.at(0).toInt();
 | 
					    generated_chars = 0;
 | 
				
			||||||
    evidence_list_size = content.at(1).toInt();
 | 
					 | 
				
			||||||
    music_list_size = content.at(2).toInt();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (char_list_size < 0 || evidence_list_size < 0 || music_list_size < 0)
 | 
					    destruct_courtroom();
 | 
				
			||||||
 | 
					    construct_courtroom();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    courtroom_loaded = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    int selected_server = w_lobby->get_selected_server();
 | 
				
			||||||
 | 
					    QString server_address;
 | 
				
			||||||
 | 
					    QString server_name;
 | 
				
			||||||
 | 
					    switch (w_lobby->pageSelected())
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					    case 0:
 | 
				
			||||||
 | 
					      if (selected_server >= 0 && selected_server < server_list.size())
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
      return;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
generated_chars = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
destruct_courtroom();
 | 
					 | 
				
			||||||
construct_courtroom();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
courtroom_loaded = false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int selected_server = w_lobby->get_selected_server();
 | 
					 | 
				
			||||||
QString server_address ;
 | 
					 | 
				
			||||||
QString  server_name ;
 | 
					 | 
				
			||||||
switch (w_lobby->pageSelected()) {
 | 
					 | 
				
			||||||
case 0:
 | 
					 | 
				
			||||||
  if (selected_server >= 0 && selected_server < server_list.size()) {
 | 
					 | 
				
			||||||
        auto info = server_list.at(selected_server);
 | 
					        auto info = server_list.at(selected_server);
 | 
				
			||||||
        server_name = info.name;
 | 
					        server_name = info.name;
 | 
				
			||||||
        server_address = QString("%1:%2").arg(info.ip, QString::number(info.port));
 | 
					        server_address = QString("%1:%2").arg(info.ip, QString::number(info.port));
 | 
				
			||||||
@ -143,15 +137,18 @@ case 0:
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
case 1: {
 | 
					    case 1:
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      QVector<ServerInfo> favorite_list = Options::getInstance().favorites();
 | 
					      QVector<ServerInfo> favorite_list = Options::getInstance().favorites();
 | 
				
			||||||
  if (selected_server >= 0 && selected_server < favorite_list.size()) {
 | 
					      if (selected_server >= 0 && selected_server < favorite_list.size())
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
        auto info = favorite_list.at(selected_server);
 | 
					        auto info = favorite_list.at(selected_server);
 | 
				
			||||||
        server_name = info.name;
 | 
					        server_name = info.name;
 | 
				
			||||||
        server_address = QString("%1:%2").arg(info.ip, QString::number(info.port));
 | 
					        server_address = QString("%1:%2").arg(info.ip, QString::number(info.port));
 | 
				
			||||||
        window_title = server_name;
 | 
					        window_title = server_name;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
} break;
 | 
					    }
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
    case 2:
 | 
					    case 2:
 | 
				
			||||||
      window_title = "Local Demo Recording";
 | 
					      window_title = "Local Demo Recording";
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
@ -254,9 +251,10 @@ case 1: {
 | 
				
			|||||||
    bool musics_time = false;
 | 
					    bool musics_time = false;
 | 
				
			||||||
    int areas = 0;
 | 
					    int areas = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (int n_element = 0; n_element < content.size(); ++n_element) {
 | 
					    for (int n_element = 0; n_element < content.size(); ++n_element)
 | 
				
			||||||
      ++loaded_music;
 | 
					    {
 | 
				
			||||||
      if (musics_time) {
 | 
					      if (musics_time)
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
        w_courtroom->append_music(content.at(n_element));
 | 
					        w_courtroom->append_music(content.at(n_element));
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
@ -629,10 +627,10 @@ case 1: {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  // Auth packet
 | 
					  // Auth packet
 | 
				
			||||||
  else if (header == "AUTH") {
 | 
					  else if (header == "AUTH")
 | 
				
			||||||
    if (!is_courtroom_constructed() ||
 | 
					  {
 | 
				
			||||||
        !m_serverdata.get_feature(server::BASE_FEATURE_SET::AUTH_PACKET) ||
 | 
					    if (!is_courtroom_constructed() || !m_serverdata.get_feature(server::BASE_FEATURE_SET::AUTH_PACKET) || content.isEmpty())
 | 
				
			||||||
        contents.isEmpty()) {
 | 
					    {
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    bool ok;
 | 
					    bool ok;
 | 
				
			||||||
@ -676,7 +674,7 @@ case 1: {
 | 
				
			|||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m_serverdata.set_asset_url(contents.at(0));
 | 
					    m_serverdata.set_asset_url(content.at(0));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (log_to_demo)
 | 
					  if (log_to_demo)
 | 
				
			||||||
 | 
				
			|||||||
@ -3,38 +3,43 @@
 | 
				
			|||||||
#include <QUrl>
 | 
					#include <QUrl>
 | 
				
			||||||
#include <QVariant>
 | 
					#include <QVariant>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace server {
 | 
					namespace server
 | 
				
			||||||
  bool ServerData::get_feature(const BASE_FEATURE_SET &f_feature) const
 | 
					{
 | 
				
			||||||
  {
 | 
					bool ServerData::get_feature(const BASE_FEATURE_SET &f_feature) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
  return get_feature(QVariant::fromValue(f_feature).toString());
 | 
					  return get_feature(QVariant::fromValue(f_feature).toString());
 | 
				
			||||||
  }
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  bool ServerData::get_feature(const QString &f_feature) const
 | 
					bool ServerData::get_feature(const QString &f_feature) const
 | 
				
			||||||
  {
 | 
					{
 | 
				
			||||||
  return m_features.contains(f_feature, Qt::CaseInsensitive);
 | 
					  return m_features.contains(f_feature, Qt::CaseInsensitive);
 | 
				
			||||||
  }
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void ServerData::set_features(const QStringList &f_feature_list)
 | 
					void ServerData::set_features(const QStringList &f_feature_list)
 | 
				
			||||||
  {
 | 
					{
 | 
				
			||||||
  m_features = f_feature_list;
 | 
					  m_features = f_feature_list;
 | 
				
			||||||
  }
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void ServerData::set_server_software(const QString &newServer_software)
 | 
					void ServerData::set_server_software(const QString &newServer_software)
 | 
				
			||||||
  {
 | 
					{
 | 
				
			||||||
  m_server_software = newServer_software;
 | 
					  m_server_software = newServer_software;
 | 
				
			||||||
  }
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  QString ServerData::get_asset_url() const { return m_asset_url; }
 | 
					QString ServerData::get_asset_url() const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return m_asset_url;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void ServerData::set_asset_url(const QString &f_asset_url)
 | 
					void ServerData::set_asset_url(const QString &f_asset_url)
 | 
				
			||||||
  {
 | 
					{
 | 
				
			||||||
  QUrl l_asset_url = QUrl::fromPercentEncoding(f_asset_url.toUtf8());
 | 
					  QUrl l_asset_url = QUrl::fromPercentEncoding(f_asset_url.toUtf8());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (l_asset_url.isValid()) {
 | 
					  if (l_asset_url.isValid())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
    m_asset_url = l_asset_url.toString();
 | 
					    m_asset_url = l_asset_url.toString();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  m_asset_url = f_asset_url;
 | 
					  m_asset_url = f_asset_url;
 | 
				
			||||||
  }
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
} // namespace server
 | 
					} // namespace server
 | 
				
			||||||
 | 
				
			|||||||
@ -5,11 +5,13 @@
 | 
				
			|||||||
#include <QString>
 | 
					#include <QString>
 | 
				
			||||||
#include <QStringList>
 | 
					#include <QStringList>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace server {
 | 
					namespace server
 | 
				
			||||||
  Q_NAMESPACE
 | 
					{
 | 
				
			||||||
 | 
					Q_NAMESPACE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /// The base feature set that almost all servers are supposed to support.
 | 
					/// The base feature set that almost all servers are supposed to support.
 | 
				
			||||||
  enum class BASE_FEATURE_SET {
 | 
					enum class BASE_FEATURE_SET
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
  YELLOWTEXT,         ///< Yellow text in in-character messages.
 | 
					  YELLOWTEXT,         ///< Yellow text in in-character messages.
 | 
				
			||||||
                      ///< @since 2.1.0
 | 
					                      ///< @since 2.1.0
 | 
				
			||||||
  FLIPPING,           ///< The ability to mirror a character in-game.
 | 
					  FLIPPING,           ///< The ability to mirror a character in-game.
 | 
				
			||||||
@ -61,14 +63,15 @@ namespace server {
 | 
				
			|||||||
  PREZOOM,            ///< Preanim zoom.
 | 
					  PREZOOM,            ///< Preanim zoom.
 | 
				
			||||||
  CUSTOM_BLIPS        ///< Allows the in-character messages to contain data about
 | 
					  CUSTOM_BLIPS        ///< Allows the in-character messages to contain data about
 | 
				
			||||||
                      ///< what blips to use for the character's current message.
 | 
					                      ///< what blips to use for the character's current message.
 | 
				
			||||||
  };
 | 
					};
 | 
				
			||||||
  Q_ENUM_NS(BASE_FEATURE_SET)
 | 
					Q_ENUM_NS(BASE_FEATURE_SET)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					/**
 | 
				
			||||||
 * @brief Arranges data about the server the client is connected to.
 | 
					 * @brief Arranges data about the server the client is connected to.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
  class ServerData {
 | 
					class ServerData
 | 
				
			||||||
  public:
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * @brief Returns true if one of the standard features exists on the server.
 | 
					   * @brief Returns true if one of the standard features exists on the server.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
@ -131,7 +134,7 @@ namespace server {
 | 
				
			|||||||
   */
 | 
					   */
 | 
				
			||||||
  void set_asset_url(const QString &f_asset_url);
 | 
					  void set_asset_url(const QString &f_asset_url);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private:
 | 
					private:
 | 
				
			||||||
  /// The features available on the server. Determines what
 | 
					  /// The features available on the server. Determines what
 | 
				
			||||||
  QStringList m_features;
 | 
					  QStringList m_features;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -147,7 +150,7 @@ namespace server {
 | 
				
			|||||||
   *        without relying on someone adding the link manually.
 | 
					   *        without relying on someone adding the link manually.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  QString m_asset_url;
 | 
					  QString m_asset_url;
 | 
				
			||||||
  };
 | 
					};
 | 
				
			||||||
} // namespace server
 | 
					} // namespace server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // SERVERDATA_H
 | 
					#endif // SERVERDATA_H
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user