diff options
| -rw-r--r-- | Attorney_Online.pro | 2 | ||||
| -rw-r--r-- | include/aoapplication.h | 1 | ||||
| -rw-r--r-- | include/courtroom.h | 3 | ||||
| -rw-r--r-- | src/courtroom.cpp | 55 | ||||
| -rw-r--r-- | src/lobby.cpp | 17 | ||||
| -rw-r--r-- | src/packet_distribution.cpp | 3 |
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) |
