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:
TrickyLeifa 2024-05-17 19:44:37 +02:00
parent fefaad5394
commit b306929311
5 changed files with 302 additions and 284 deletions

View File

@ -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

View File

@ -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;

View File

@ -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)

View File

@ -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

View File

@ -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