aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrickyLeifa <date.epoch@gmail.com>2024-05-17 19:44:37 +0200
committerTrickyLeifa <date.epoch@gmail.com>2024-05-17 19:44:37 +0200
commitb306929311f04dced4e5c0d9c55509df0553bfb1 (patch)
tree1f1f7408a0796cb886ae99be9eff5e8b5f1b156c
parentfefaad53943d8b542bd8f288dae7d15e08c67b32 (diff)
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.
-rw-r--r--CMakeLists.txt2
-rw-r--r--src/courtroom.cpp164
-rw-r--r--src/packet_distribution.cpp86
-rw-r--r--src/serverdata.cpp65
-rw-r--r--src/serverdata.h255
5 files changed, 295 insertions, 277 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f3684f1c..d482a5c1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -91,6 +91,8 @@ add_executable(Attorney_Online
src/path_functions.cpp
src/scrolltext.cpp
src/scrolltext.h
+ src/serverdata.cpp
+ src/serverdata.h
src/text_file_functions.cpp
src/widgets/aooptionsdialog.cpp
src/widgets/aooptionsdialog.h
diff --git a/src/courtroom.cpp b/src/courtroom.cpp
index 7c766cc5..94f6af5b 100644
--- a/src/courtroom.cpp
+++ b/src/courtroom.cpp
@@ -727,8 +727,8 @@ void Courtroom::set_widgets()
// 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,
// if needed.
- if (ao_app->m_serverdata.get_feature(
- server::BASE_FEATURE_SET::CCCC_IC_SUPPORT)) {
+ if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::CCCC_IC_SUPPORT))
+ {
ui_pair_button->show();
ui_immediate->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();
- if (ao_app->m_serverdata.get_feature(
- server::BASE_FEATURE_SET::CUSTOMOBJECTIONS)) // if setting is enabled
+ if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::CUSTOMOBJECTIONS)) // if setting is enabled
{
custom_obj_menu->clear();
custom_objections_list.clear();
@@ -1650,6 +1649,7 @@ void Courtroom::enter_courtroom()
set_evidence_page();
if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::FLIPPING))
+ {
ui_flip->show();
}
else
@@ -1658,6 +1658,7 @@ void Courtroom::enter_courtroom()
}
if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::ADDITIVE))
+ {
ui_additive->show();
}
else
@@ -1754,7 +1755,6 @@ void Courtroom::list_music()
{
parent = treeItem;
}
- ++n_listed_songs;
}
ui_music_list->expandAll(); // Needs to somehow remember which categories were
@@ -1776,7 +1776,8 @@ void Courtroom::list_areas()
QString i_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(arup_statuses.at(n_area));
@@ -1806,7 +1807,8 @@ void Courtroom::list_areas()
treeItem->setText(0, area_list.at(n_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.
treeItem->setBackground(1, free_brush);
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();
}
if (p_color == "1")
- {color =
- ao_app->get_color("server_chatlog_sender_color", "courtroom_fonts.ini")
- .name();}
- if (!ao_app->m_serverdata.get_feature(
- server::BASE_FEATURE_SET::AUTH_PACKET) &&
- p_message == "Logged in as a moderator.") {
+ {
+ color = ao_app->get_color("server_chatlog_sender_color", "courtroom_fonts.ini").name();
+ }
+ if (!ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::AUTH_PACKET) && p_message == "Logged in as a moderator.")
+ {
// Emulate successful authentication
on_authentication_state_received(1);
}
@@ -1974,10 +1975,12 @@ void Courtroom::on_chat_return_pressed()
int f_desk_mod = DESK_SHOW;
- 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(
- server::BASE_FEATURE_SET::EXPANDED_DESK_MODS)) {
+ 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(server::BASE_FEATURE_SET::EXPANDED_DESK_MODS))
+ {
if (f_desk_mod == DESK_PRE_ONLY_EX || f_desk_mod == DESK_PRE_ONLY)
{
f_desk_mod = DESK_HIDE;
@@ -2028,8 +2031,8 @@ void Courtroom::on_chat_return_pressed()
f_emote_mod = PREANIM;
}
// Turn zoom into preanim zoom
- else if (f_emote_mod == ZOOM && ao_app->m_serverdata.get_feature(
- server::BASE_FEATURE_SET::PREZOOM)) {
+ else if (f_emote_mod == ZOOM && ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::PREZOOM))
+ {
f_emote_mod = PREANIM_ZOOM;
}
// Play the sfx
@@ -2091,10 +2094,8 @@ void Courtroom::on_chat_return_pressed()
QString f_obj_state;
- if ((objection_state == 4 &&
- !ao_app->m_serverdata.get_feature(
- server::BASE_FEATURE_SET::CUSTOMOBJECTIONS)) ||
- (objection_state < 0)) {
+ if ((objection_state == 4 && !ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::CUSTOMOBJECTIONS)) || (objection_state < 0))
+ {
f_obj_state = "0";
}
else if (objection_custom != "" && objection_state == 4)
@@ -2128,7 +2129,8 @@ void Courtroom::on_chat_return_pressed()
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())
{
f_flip = "1";
@@ -2165,11 +2167,12 @@ void Courtroom::on_chat_return_pressed()
packet_contents.append(f_text_color);
// If the server we're on supports CCCC stuff, we should use it!
- if (ao_app->m_serverdata.get_feature(
- server::BASE_FEATURE_SET::CCCC_IC_SUPPORT)) {
+ if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::CCCC_IC_SUPPORT))
+ {
// If there is a showname entered, use that -- else, just send an empty
// packet-part.
- if (!ui_ic_chat_name->text().isEmpty()) {
+ if (!ui_ic_chat_name->text().isEmpty())
+ {
packet_contents.append(ui_ic_chat_name->text());
}
else
@@ -2182,11 +2185,10 @@ void Courtroom::on_chat_return_pressed()
if (other_charid > -1 && other_charid != m_cid)
{
QString packet = QString::number(other_charid);
- if (ao_app->m_serverdata.get_feature(
- server::BASE_FEATURE_SET::EFFECTS)) // Only servers with effects
- // enabled will support pair
- // reordering
- {
+ if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS)) // Only servers with effects
+ // enabled will support pair
+ // reordering
+ {
packet += "^" + QString::number(pair_order);
}
packet_contents.append(packet);
@@ -2196,9 +2198,10 @@ void Courtroom::on_chat_return_pressed()
packet_contents.append("-1");
}
// Send the offset as it's gonna be used regardless
- 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));}
+ 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));
+ }
else
{
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
// emote uses it.
- 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));
+ 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(QString::number(screenshake_state));
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");
}
- 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 fx_sound =
- ao_app->get_effect_property(effect, current_char, p_effect_folder, "sound");
+ 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 fx_sound = ao_app->get_effect_property(effect, current_char, p_effect_folder, "sound");
// Don't overlap the two sfx
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
// 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.
- if (n_string < p_contents.size() &&
- (n_string < MS_MINIMUM ||
- ao_app->m_serverdata.get_feature(
- server::BASE_FEATURE_SET::CCCC_IC_SUPPORT))) {
+ if (n_string < p_contents.size() && (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);
}
else
@@ -2794,9 +2795,8 @@ void Courtroom::display_pair_character(QString other_charid, QString other_offse
}
}
// Flip the pair character
- if (ao_app->m_serverdata.get_feature(
- server::BASE_FEATURE_SET::FLIPPING) &&
- m_chatmessage[OTHER_FLIP].toInt() == 1){
+ if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::FLIPPING) && m_chatmessage[OTHER_FLIP].toInt() == 1)
+ {
ui_vp_sideplayer_char->set_flipped(true);
}
else
@@ -4004,9 +4004,8 @@ void Courtroom::start_chat_ticking()
QString f_blips = ao_app->get_blipname(m_chatmessage[CHAR_NAME]);
f_blips = ao_app->get_blips(f_blips);
- if (ao_app->m_serverdata.get_feature(
- server::BASE_FEATURE_SET::CUSTOM_BLIPS) &&
- !m_chatmessage[BLIPNAME].isEmpty()) {
+ if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::CUSTOM_BLIPS) && !m_chatmessage[BLIPNAME].isEmpty())
+ {
f_blips = ao_app->get_blips(m_chatmessage[BLIPNAME]);
}
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))) &&
- !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();
+ 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 = (ao_app->m_serverdata.get_asset_url() + "sounds/music/" + f_song).toLower();
}
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();
- //We ignore it when the server is compatible with 2.8
- //Using an arbitrary 2.8 feature flag certainly won't cause issues someday.
- if (ooc_message.startsWith("/pos") &&
- ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS)) {
- if (ooc_message == "/pos jud") {
+ // We ignore it when the server is compatible with 2.8
+ // Using an arbitrary 2.8 feature flag certainly won't cause issues someday.
+ if (ooc_message.startsWith("/pos") && ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS))
+ {
+ if (ooc_message == "/pos jud")
+ {
show_judge_controls(true);
}
else
@@ -5514,12 +5512,12 @@ void Courtroom::on_music_list_double_clicked(QTreeWidgetItem *p_item, int column
QStringList packet_contents;
packet_contents.append(p_song);
packet_contents.append(QString::number(m_cid));
- 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))
+ 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))
+ {
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));
}
ao_app->send_server_packet(AOPacket("MC", packet_contents));
@@ -5628,6 +5626,7 @@ void Courtroom::music_list_expand_all()
{
ui_music_list->expandAll();
}
+
void Courtroom::music_list_collapse_all()
{
ui_music_list->collapseAll();
@@ -5645,6 +5644,7 @@ void Courtroom::music_stop(bool no_effects)
{
return;
}
+
// Default fake song is a song present in Vanilla content, the ~stop.mp3
QString fake_song = "~stop.mp3";
// 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
packet_contents.append(fake_song); // this is our fake song, playing it triggers special code
packet_contents.append(QString::number(m_cid));
- 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))
+
+ 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))
+ {
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)
+ {
packet_contents.append("0");
+ }
else
+ {
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)
@@ -5866,7 +5874,9 @@ void Courtroom::on_pair_clicked()
ui_pair_list->show();
ui_pair_offset_spinbox->show();
if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::Y_OFFSET))
+ {
ui_pair_vert_offset_spinbox->show();
+ }
ui_pair_order_dropdown->show();
ui_mute_list->hide();
ui_mute->setImage("mute");
@@ -6179,8 +6189,8 @@ void Courtroom::on_spectator_clicked()
void Courtroom::on_call_mod_clicked()
{
- if (ao_app->m_serverdata.get_feature(
- server::BASE_FEATURE_SET::MODCALL_REASON)) {
+ if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::MODCALL_REASON))
+ {
QMessageBox errorBox;
QInputDialog input;
diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp
index 1a0e798c..8b86b345 100644
--- a/src/packet_distribution.cpp
+++ b/src/packet_distribution.cpp
@@ -87,7 +87,8 @@ void AOApplication::server_packet_received(AOPacket packet)
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);
log_to_demo = false;
}
@@ -114,44 +115,40 @@ void AOApplication::server_packet_received(AOPacket packet)
return;
}
- char_list_size = content.at(0).toInt();
- 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)
- {
- return;
- }
-
-generated_chars = 0;
+ generated_chars = 0;
-destruct_courtroom();
-construct_courtroom();
+ destruct_courtroom();
+ construct_courtroom();
-courtroom_loaded = false;
+ 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);
- server_name = info.name;
- server_address = QString("%1:%2").arg(info.ip, QString::number(info.port));
- window_title = server_name;
- }
- break;
+ 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);
+ server_name = info.name;
+ server_address = QString("%1:%2").arg(info.ip, QString::number(info.port));
+ window_title = server_name;
+ }
+ break;
-case 1: {
- QVector<ServerInfo> favorite_list = Options::getInstance().favorites();
- if (selected_server >= 0 && selected_server < favorite_list.size()) {
- auto info = favorite_list.at(selected_server);
- server_name = info.name;
- server_address = QString("%1:%2").arg(info.ip, QString::number(info.port));
- window_title = server_name;
- }
-} break;
+ case 1:
+ {
+ QVector<ServerInfo> favorite_list = Options::getInstance().favorites();
+ if (selected_server >= 0 && selected_server < favorite_list.size())
+ {
+ auto info = favorite_list.at(selected_server);
+ server_name = info.name;
+ server_address = QString("%1:%2").arg(info.ip, QString::number(info.port));
+ window_title = server_name;
+ }
+ }
+ break;
case 2:
window_title = "Local Demo Recording";
break;
@@ -254,9 +251,10 @@ case 1: {
bool musics_time = false;
int areas = 0;
- for (int n_element = 0; n_element < content.size(); ++n_element) {
- ++loaded_music;
- if (musics_time) {
+ for (int n_element = 0; n_element < content.size(); ++n_element)
+ {
+ if (musics_time)
+ {
w_courtroom->append_music(content.at(n_element));
}
else
@@ -629,11 +627,11 @@ case 1: {
}
}
// Auth packet
- else if (header == "AUTH") {
- if (!is_courtroom_constructed() ||
- !m_serverdata.get_feature(server::BASE_FEATURE_SET::AUTH_PACKET) ||
- contents.isEmpty()) {
- return;
+ else if (header == "AUTH")
+ {
+ if (!is_courtroom_constructed() || !m_serverdata.get_feature(server::BASE_FEATURE_SET::AUTH_PACKET) || content.isEmpty())
+ {
+ return;
}
bool ok;
int authenticated = content.at(0).toInt(&ok);
@@ -676,7 +674,7 @@ case 1: {
return;
}
- m_serverdata.set_asset_url(contents.at(0));
+ m_serverdata.set_asset_url(content.at(0));
}
if (log_to_demo)
diff --git a/src/serverdata.cpp b/src/serverdata.cpp
index b8a08df8..5b3d139d 100644
--- a/src/serverdata.cpp
+++ b/src/serverdata.cpp
@@ -3,38 +3,43 @@
#include <QUrl>
#include <QVariant>
-namespace server {
- bool ServerData::get_feature(const BASE_FEATURE_SET &f_feature) const
+namespace server
+{
+bool ServerData::get_feature(const BASE_FEATURE_SET &f_feature) const
+{
+ return get_feature(QVariant::fromValue(f_feature).toString());
+}
+
+bool ServerData::get_feature(const QString &f_feature) const
+{
+ return m_features.contains(f_feature, Qt::CaseInsensitive);
+}
+
+void ServerData::set_features(const QStringList &f_feature_list)
+{
+ m_features = f_feature_list;
+}
+
+void ServerData::set_server_software(const QString &newServer_software)
+{
+ m_server_software = newServer_software;
+}
+
+QString ServerData::get_asset_url() const
+{
+ return m_asset_url;
+}
+
+void ServerData::set_asset_url(const QString &f_asset_url)
+{
+ QUrl l_asset_url = QUrl::fromPercentEncoding(f_asset_url.toUtf8());
+
+ if (l_asset_url.isValid())
{
- return get_feature(QVariant::fromValue(f_feature).toString());
+ m_asset_url = l_asset_url.toString();
}
- bool ServerData::get_feature(const QString &f_feature) const
- {
- return m_features.contains(f_feature, Qt::CaseInsensitive);
- }
-
- void ServerData::set_features(const QStringList &f_feature_list)
- {
- m_features = f_feature_list;
- }
-
- void ServerData::set_server_software(const QString &newServer_software)
- {
- m_server_software = newServer_software;
- }
-
- QString ServerData::get_asset_url() const { return m_asset_url; }
-
- void ServerData::set_asset_url(const QString &f_asset_url)
- {
- QUrl l_asset_url = QUrl::fromPercentEncoding(f_asset_url.toUtf8());
-
- if (l_asset_url.isValid()) {
- m_asset_url = l_asset_url.toString();
- }
-
- m_asset_url = f_asset_url;
- }
+ m_asset_url = f_asset_url;
+}
} // namespace server
diff --git a/src/serverdata.h b/src/serverdata.h
index 0c342660..99351852 100644
--- a/src/serverdata.h
+++ b/src/serverdata.h
@@ -5,149 +5,152 @@
#include <QString>
#include <QStringList>
-namespace server {
- Q_NAMESPACE
+namespace server
+{
+Q_NAMESPACE
- /// The base feature set that almost all servers are supposed to support.
- enum class BASE_FEATURE_SET {
- YELLOWTEXT, ///< Yellow text in in-character messages.
+/// The base feature set that almost all servers are supposed to support.
+enum class BASE_FEATURE_SET
+{
+ YELLOWTEXT, ///< Yellow text in in-character messages.
///< @since 2.1.0
- FLIPPING, ///< The ability to mirror a character in-game.
+ FLIPPING, ///< The ability to mirror a character in-game.
///< @since 2.1.0
- CUSTOMOBJECTIONS, ///< Enables the use of a single custom objection named
+ CUSTOMOBJECTIONS, ///< Enables the use of a single custom objection named
///< `custom`.
///< @since 2.1.0
- FASTLOADING, ///< Enables the use of "fast loading" instead of the legacy
- ///< loading protocol.
- ///< @since 2.1.0
- NOENCRYPTION, ///< Disables "FantaCrypt" for the remainder of the session.
- ///< @since 2.1.0
- DESKMOD, ///< Allows forcing the appearance or disappearance of the desk.
- ///< @since 2.3 to 2.5
- EVIDENCE, ///< Allows creating and presenting evidence.
- ///< @since 2.3 to 2.5
- CCCC_IC_SUPPORT, ///< The ability to pair up with another user's character,
- ///< the ability to change one's displayed name
- ///< in-character ("showname"), and the ability to perform
- ///< "immediate" preanimations (ones that happen alongside
- ///< text display).
- ///< @since 2.6.0
- ARUP, ///< Areas have more data about them than just their name (including
- ///< their status, their "lockedness", and who is the Case Master in
- ///< the area), and sets the client up to receive and send ARUP
- ///< packets.
- ///< @since 2.6.0
- CASING_ALERTS, ///< The client gains a new window to announce cases with,
- ///< and the settings to set itself up to receive case alerts
- ///< based on casing preferences. No longer used.
- ///< @since 2.6.0
- MODCALL_REASON, ///< Enables entering a custom reason for calling
- ///< moderators.
- ///< @since 2.6.0
- LOOPING_SFX, ///< Enables looping SFX extensions for the in-character
- ///< command.
- ///< @since 2.8.0
- ADDITIVE, ///< Enables "additive" text that allows in-character messages to
- ///< concatenate to the previous one sent by the same character.
- ///< @since 2.8.0
- EFFECTS, ///< Enables effect overlays.
- ///< @since 2.8.0
- Y_OFFSET, ///< Enables support for vertical offsets.
- ///< @since 2.9.0
- EXPANDED_DESK_MODS, ///< Enables desk modifiers 2 through 5.
- ///< @since 2.9.0
- AUTH_PACKET, ///< Enables the use of the AUTH packet.
- ///< @since 2.9.1
- PREZOOM, ///< Preanim zoom.
- CUSTOM_BLIPS ///< Allows the in-character messages to contain data about
- ///< what blips to use for the character's current message.
- };
- Q_ENUM_NS(BASE_FEATURE_SET)
+ FASTLOADING, ///< Enables the use of "fast loading" instead of the legacy
+ ///< loading protocol.
+ ///< @since 2.1.0
+ NOENCRYPTION, ///< Disables "FantaCrypt" for the remainder of the session.
+ ///< @since 2.1.0
+ DESKMOD, ///< Allows forcing the appearance or disappearance of the desk.
+ ///< @since 2.3 to 2.5
+ EVIDENCE, ///< Allows creating and presenting evidence.
+ ///< @since 2.3 to 2.5
+ CCCC_IC_SUPPORT, ///< The ability to pair up with another user's character,
+ ///< the ability to change one's displayed name
+ ///< in-character ("showname"), and the ability to perform
+ ///< "immediate" preanimations (ones that happen alongside
+ ///< text display).
+ ///< @since 2.6.0
+ ARUP, ///< Areas have more data about them than just their name (including
+ ///< their status, their "lockedness", and who is the Case Master in
+ ///< the area), and sets the client up to receive and send ARUP
+ ///< packets.
+ ///< @since 2.6.0
+ CASING_ALERTS, ///< The client gains a new window to announce cases with,
+ ///< and the settings to set itself up to receive case alerts
+ ///< based on casing preferences. No longer used.
+ ///< @since 2.6.0
+ MODCALL_REASON, ///< Enables entering a custom reason for calling
+ ///< moderators.
+ ///< @since 2.6.0
+ LOOPING_SFX, ///< Enables looping SFX extensions for the in-character
+ ///< command.
+ ///< @since 2.8.0
+ ADDITIVE, ///< Enables "additive" text that allows in-character messages to
+ ///< concatenate to the previous one sent by the same character.
+ ///< @since 2.8.0
+ EFFECTS, ///< Enables effect overlays.
+ ///< @since 2.8.0
+ Y_OFFSET, ///< Enables support for vertical offsets.
+ ///< @since 2.9.0
+ EXPANDED_DESK_MODS, ///< Enables desk modifiers 2 through 5.
+ ///< @since 2.9.0
+ AUTH_PACKET, ///< Enables the use of the AUTH packet.
+ ///< @since 2.9.1
+ PREZOOM, ///< Preanim zoom.
+ CUSTOM_BLIPS ///< Allows the in-character messages to contain data about
+ ///< what blips to use for the character's current message.
+};
+Q_ENUM_NS(BASE_FEATURE_SET)
+/**
+ * @brief Arranges data about the server the client is connected to.
+ */
+class ServerData
+{
+public:
/**
- * @brief Arranges data about the server the client is connected to.
+ * @brief Returns true if one of the standard features exists on the server.
+ *
+ * @details Internally, this calls get_feature(const QString &f_feature)
+ * with the enum's value converted to string.
+ *
+ * @param f_feature The feature to check for.
+ *
+ * @return True if the feature exists on the server.
*/
- class ServerData {
- public:
- /**
- * @brief Returns true if one of the standard features exists on the server.
- *
- * @details Internally, this calls get_feature(const QString &f_feature)
- * with the enum's value converted to string.
- *
- * @param f_feature The feature to check for.
- *
- * @return True if the feature exists on the server.
- */
- bool get_feature(const BASE_FEATURE_SET &f_feature) const;
+ bool get_feature(const BASE_FEATURE_SET &f_feature) const;
- /**
- * @brief Returns true if the feature exists on the server.
- *
- * @param f_feature The feature to check for. Case insensitive.
- *
- * @return True if the feature exists on the server.
- */
- bool get_feature(const QString &f_feature) const;
+ /**
+ * @brief Returns true if the feature exists on the server.
+ *
+ * @param f_feature The feature to check for. Case insensitive.
+ *
+ * @return True if the feature exists on the server.
+ */
+ bool get_feature(const QString &f_feature) const;
- /**
- * @brief Sets the feature list, overwriting the existing one.
- *
- * @param f_feature_list The new feature list of the server.
- */
- void set_features(const QStringList &f_feature_list);
+ /**
+ * @brief Sets the feature list, overwriting the existing one.
+ *
+ * @param f_feature_list The new feature list of the server.
+ */
+ void set_features(const QStringList &f_feature_list);
- /**
- * @brief Self-explanatory: gets the software the server is running on.
- *
- * @return As brief description.
- */
- QString get_server_software() const;
+ /**
+ * @brief Self-explanatory: gets the software the server is running on.
+ *
+ * @return As brief description.
+ */
+ QString get_server_software() const;
- /**
- * @brief Self-explanatory: setter for server software.
- *
- * @param f_software The new server software.
- */
- void set_server_software(const QString &f_software);
+ /**
+ * @brief Self-explanatory: setter for server software.
+ *
+ * @param f_software The new server software.
+ */
+ void set_server_software(const QString &f_software);
- /**
- * @brief Getter for the server's asset URL.
- *
- * @return As brief description.
- *
- * @see m_asset_url
- */
- QString get_asset_url() const;
+ /**
+ * @brief Getter for the server's asset URL.
+ *
+ * @return As brief description.
+ *
+ * @see m_asset_url
+ */
+ QString get_asset_url() const;
- /**
- * @brief Attempts to set the new asset URL for the server.
- *
- * @details The function converts the sole parameter into UTF-8, then
- * attempts to percent decode it. The URL is only set if all these steps
- * successfully happen.
- *
- * @param f_asset_url A QString that contains the URL.
- */
- void set_asset_url(const QString &f_asset_url);
+ /**
+ * @brief Attempts to set the new asset URL for the server.
+ *
+ * @details The function converts the sole parameter into UTF-8, then
+ * attempts to percent decode it. The URL is only set if all these steps
+ * successfully happen.
+ *
+ * @param f_asset_url A QString that contains the URL.
+ */
+ void set_asset_url(const QString &f_asset_url);
- private:
- /// The features available on the server. Determines what
- QStringList m_features;
+private:
+ /// The features available on the server. Determines what
+ QStringList m_features;
- /// The software the server is running.
- QString m_server_software;
+ /// The software the server is running.
+ QString m_server_software;
- /**
- * @brief A QString of an URL that defines the content repository
- * send by the server.
- *
- * @details Introduced in Version 2.9.2.
- * Addresses the issue of contenturl devlivery for WebAO
- * without relying on someone adding the link manually.
- */
- QString m_asset_url;
- };
+ /**
+ * @brief A QString of an URL that defines the content repository
+ * send by the server.
+ *
+ * @details Introduced in Version 2.9.2.
+ * Addresses the issue of contenturl devlivery for WebAO
+ * without relying on someone adding the link manually.
+ */
+ QString m_asset_url;
+};
} // namespace server
#endif // SERVERDATA_H