aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Attorney_Online.pro2
-rw-r--r--include/aoapplication.h1
-rw-r--r--include/courtroom.h3
-rw-r--r--src/courtroom.cpp55
-rw-r--r--src/lobby.cpp17
-rw-r--r--src/packet_distribution.cpp3
6 files changed, 70 insertions, 11 deletions
diff --git a/Attorney_Online.pro b/Attorney_Online.pro
index 1a5f214..5ee3f40 100644
--- a/Attorney_Online.pro
+++ b/Attorney_Online.pro
@@ -35,7 +35,7 @@ LIBS += -lbassopus
macx:LIBS += -framework CoreFoundation -framework Foundation -framework CoreServices
-CONFIG += c++14
+CONFIG += c++17
RESOURCES += resources.qrc
diff --git a/include/aoapplication.h b/include/aoapplication.h
index 3325156..a0121f2 100644
--- a/include/aoapplication.h
+++ b/include/aoapplication.h
@@ -77,6 +77,7 @@ public:
bool additive_enabled = false;
bool effects_enabled = false;
bool y_offset_enabled = false;
+ bool expanded_desk_mods_enabled = false;
///////////////loading info///////////////////
diff --git a/include/courtroom.h b/include/courtroom.h
index 94a115f..5fdbbac 100644
--- a/include/courtroom.h
+++ b/include/courtroom.h
@@ -175,6 +175,9 @@ public:
// sets desk and bg based on pos in chatmessage
void set_scene(QString f_desk_mod, QString f_side);
+ // sets ui_vp_player_char according to SELF_OFFSET, only a function bc it's used with desk_mod 4 and 5
+ void set_self_offset(QString p_list);
+
// takes in serverD-formatted IP list as prints a converted version to server
// OOC admittedly poorly named
void set_ip_list(QString p_list);
diff --git a/src/courtroom.cpp b/src/courtroom.cpp
index b59c71d..ad401bb 100644
--- a/src/courtroom.cpp
+++ b/src/courtroom.cpp
@@ -1617,6 +1617,12 @@ void Courtroom::on_chat_return_pressed()
if (ao_app->desk_mod_enabled) {
f_desk_mod =
QString::number(ao_app->get_desk_mod(current_char, current_emote));
+ if (!ao_app->expanded_desk_mods_enabled) {
+ if (f_desk_mod == "2" || f_desk_mod == "4")
+ f_desk_mod = "0";
+ else if (f_desk_mod == "3" || f_desk_mod == "5")
+ f_desk_mod = "1";
+ }
if (f_desk_mod == "-1")
f_desk_mod = "chat";
}
@@ -2121,8 +2127,6 @@ void Courtroom::handle_chatmessage_2()
f_pointsize = chatsize;
set_font(ui_vp_message, "", "message", customchar, font_name, f_pointsize);
- set_scene(m_chatmessage[DESK_MOD], m_chatmessage[SIDE]);
-
int emote_mod = m_chatmessage[EMOTE_MOD].toInt();
// Deal with invalid emote modifiers
if (emote_mod != 0 && emote_mod != 1 && emote_mod != 2 && emote_mod != 5 &&
@@ -2216,6 +2220,22 @@ void Courtroom::handle_chatmessage_2()
ui_vp_player_char->move(ui_viewport->width() * self_offset / 100,
ui_viewport->height() * self_offset_v / 100);
+ switch(m_chatmessage[DESK_MOD].toInt()) {
+ case 4:
+ ui_vp_sideplayer_char->hide();
+ ui_vp_player_char->move(0, 0);
+ [[fallthrough]];
+ case 2:
+ set_scene("0", m_chatmessage[SIDE]);
+ break;
+ case 5:
+ case 3:
+ set_scene("1", m_chatmessage[SIDE]);
+ break;
+ default:
+ set_scene(m_chatmessage[DESK_MOD], m_chatmessage[SIDE]);
+ break;
+ }
switch (emote_mod) {
case 1:
case 2:
@@ -2361,6 +2381,24 @@ void Courtroom::handle_chatmessage_3()
QString side = m_chatmessage[SIDE];
+ switch(m_chatmessage[DESK_MOD].toInt()) {
+ case 4:
+ set_self_offset(m_chatmessage[SELF_OFFSET]);
+ [[fallthrough]];
+ case 2:
+ set_scene("1", m_chatmessage[SIDE]);
+ break;
+ case 5:
+ ui_vp_sideplayer_char->hide();
+ ui_vp_player_char->move(0, 0);
+ [[fallthrough]];
+ case 3:
+ set_scene("0", m_chatmessage[SIDE]);
+ break;
+ default:
+ set_scene(m_chatmessage[DESK_MOD], m_chatmessage[SIDE]);
+ break;
+ }
if (emote_mod == 5 || emote_mod == 6) {
ui_vp_desk->hide();
ui_vp_legacy_desk->hide();
@@ -3155,7 +3193,7 @@ void Courtroom::set_scene(QString f_desk_mod, QString f_side)
// witness is default if pos is invalid
QString f_background;
QString f_desk_image;
- if (file_exists(ao_app->get_image_suffix(ao_app->get_background_path("witnessempty")) {
+ if (file_exists(ao_app->get_image_suffix(ao_app->get_background_path("witnessempty")))) {
f_background = "witnessempty";
f_desk_image = "stand";
}
@@ -3227,6 +3265,17 @@ void Courtroom::set_scene(QString f_desk_mod, QString f_side)
}
}
+void Courtroom::set_self_offset(QString p_list) {
+ QStringList self_offsets = p_list.split("&");
+ int self_offset = self_offsets[0].toInt();
+ int self_offset_v;
+ if (self_offsets.length() <= 1)
+ self_offset_v = 0;
+ else
+ self_offset_v = self_offsets[1].toInt();
+ ui_vp_player_char->move(ui_viewport->width() * self_offset / 100, ui_viewport->height() * self_offset_v / 100);
+}
+
void Courtroom::set_ip_list(QString p_list)
{
QString f_list = p_list.replace("|", ":").replace("*", "\n");
diff --git a/src/lobby.cpp b/src/lobby.cpp
index afbf221..954c30a 100644
--- a/src/lobby.cpp
+++ b/src/lobby.cpp
@@ -283,7 +283,10 @@ QString Lobby::get_chatlog()
int Lobby::get_selected_server()
{
- return ui_server_list->currentItem()->text(0).toInt();
+ if (auto item = ui_server_list->currentItem()) {
+ return item->text(0).toInt();
+ }
+ return -1;
}
void Lobby::set_loading_value(int p_value)
@@ -333,12 +336,12 @@ void Lobby::on_add_to_fav_pressed()
void Lobby::on_add_to_fav_released()
{
ui_add_to_fav->set_image("addtofav");
-
- // you cant add favorites from favorites m8
- if (!public_servers_selected)
- return;
-
- ao_app->add_favorite_server(get_selected_server());
+ if (public_servers_selected) {
+ int selection = get_selected_server();
+ if (selection > -1) {
+ ao_app->add_favorite_server(selection);
+ }
+ }
}
void Lobby::on_connect_pressed() { ui_connect->set_image("connect_pressed"); }
diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp
index 4e2d5ed..7146e6e 100644
--- a/src/packet_distribution.cpp
+++ b/src/packet_distribution.cpp
@@ -180,6 +180,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
looping_sfx_support_enabled = false;
additive_enabled = false;
effects_enabled = false;
+ expanded_desk_mods_enabled = false;
if (f_packet.contains("yellowtext", Qt::CaseInsensitive))
yellow_text_enabled = true;
if (f_packet.contains("prezoom", Qt::CaseInsensitive))
@@ -208,6 +209,8 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
effects_enabled = true;
if (f_packet.contains("y_offset", Qt::CaseInsensitive))
y_offset_enabled = true;
+ if (f_packet.contains("expanded_desk_mods", Qt::CaseInsensitive))
+ expanded_desk_mods_enabled = true;
}
else if (header == "PN") {
if (f_contents.size() < 2)