diff --git a/aoapplication.h b/aoapplication.h index fc42fe7..de6a561 100644 --- a/aoapplication.h +++ b/aoapplication.h @@ -130,7 +130,7 @@ public: private: const int RELEASE = 2; const int MAJOR_VERSION = 2; - const int MINOR_VERSION = 4; + const int MINOR_VERSION = 5; QString user_theme = "default"; diff --git a/courtroom.cpp b/courtroom.cpp index 5806c69..25d7166 100644 --- a/courtroom.cpp +++ b/courtroom.cpp @@ -1141,6 +1141,12 @@ void Courtroom::handle_chatmessage_2() int emote_mod = m_chatmessage[EMOTE_MOD].toInt(); + if (ao_app->flipping_enabled && m_chatmessage[FLIP].toInt() == 1) + ui_vp_player_char->set_flipped(true); + else + ui_vp_player_char->set_flipped(false); + + switch (emote_mod) { case 1: case 2: case 6: diff --git a/lobby.cpp b/lobby.cpp index b5b5166..3674ea9 100644 --- a/lobby.cpp +++ b/lobby.cpp @@ -235,7 +235,10 @@ void Lobby::on_connect_released() { ui_connect->set_image("connect.png"); - AOPacket *f_packet = new AOPacket("askchaa#%"); + AOPacket *f_packet; + + f_packet = new AOPacket("askchaa#%"); + ao_app->send_server_packet(f_packet); } diff --git a/packet_distribution.cpp b/packet_distribution.cpp index 956c4b3..27a845f 100644 --- a/packet_distribution.cpp +++ b/packet_distribution.cpp @@ -136,33 +136,51 @@ void AOApplication::server_packet_received(AOPacket *p_packet) } else if (header == "ID") { + //default(legacy) values + encryption_needed = true; + yellow_text_enabled = false; + prezoom_enabled = false; + flipping_enabled = false; + custom_objection_enabled = false; + improved_loading_enabled = false; + if (f_contents.size() < 2) goto end; s_pv = f_contents.at(0).toInt(); - QString server_version = f_contents.at(1); + QString server_software = f_contents.at(1); - if (server_version == "v1312.150") + int server_release = 0; + int server_major = 0; + int server_minor = 0; + + if (f_contents.size() >= 3) + { + QStringList version_list = f_contents.at(2).split("."); + if (version_list.size() >= 3) + { + server_release = version_list.at(0).toInt(); + server_major = version_list.at(1).toInt(); + server_minor = version_list.at(2).toInt(); + } + } + + if (server_software == "v1312.150") { encryption_needed = false; yellow_text_enabled = true; - //prezoom still needs some tweaking to work - prezoom_enabled = false; - //same goes for flipping, sadly - flipping_enabled = false; custom_objection_enabled = true; - //improved loading disabled for now - improved_loading_enabled = false; } - else + else if (server_software == "tsuserver3") { - encryption_needed = true; - yellow_text_enabled = false; - prezoom_enabled = false; - flipping_enabled = false; - custom_objection_enabled = false; - improved_loading_enabled = false; + if (server_release >= 3) + { + yellow_text_enabled = true; + flipping_enabled = true; + custom_objection_enabled = true; + improved_loading_enabled = true; + } } send_server_packet(new AOPacket("ID#AO2#" + get_version_string() + "#%")); @@ -221,10 +239,9 @@ void AOApplication::server_packet_received(AOPacket *p_packet) AOPacket *f_packet; - //AO2 loading disabled for now - //if(improved_loading_enabled) - // f_packet = new AOPacket("RC#%"); - //else + if(improved_loading_enabled) + f_packet = new AOPacket("RC#%"); + else f_packet = new AOPacket("askchar2#%"); send_server_packet(f_packet); @@ -354,8 +371,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_courtroom->set_taken(n_char, false); } } - //AO2 loading is temporarily disabled as it needs to be revised altogether - /* + else if (header == "SC") { if (!courtroom_constructed) @@ -364,13 +380,13 @@ void AOApplication::server_packet_received(AOPacket *p_packet) for (int n_element = 0 ; n_element < f_contents.size() ; ++n_element) { QStringList sub_elements = f_contents.at(n_element).split("&"); - if (sub_elements.size() < 2) - break; char_type f_char; f_char.name = sub_elements.at(0); - f_char.description = sub_elements.at(1); - //temporary. the TC packet sets this properly + if (sub_elements.size() >= 2) + f_char.description = sub_elements.at(1); + + //temporary. the CharsCheck packet sets this properly f_char.taken = false; ++loaded_chars; @@ -384,8 +400,29 @@ void AOApplication::server_packet_received(AOPacket *p_packet) int loading_value = (loaded_chars / static_cast(total_loading_size)) * 100; w_lobby->set_loading_value(loading_value); - send_server_packet(new AOPacket("RE#%")); + send_server_packet(new AOPacket("RM#%")); } + else if (header == "SM") + { + if (!courtroom_constructed) + goto end; + + for (int n_element = 0 ; n_element < f_contents.size() ; ++n_element) + { + ++loaded_music; + + w_lobby->set_loading_text("Loading music:\n" + QString::number(loaded_music) + "/" + QString::number(music_list_size)); + + w_courtroom->append_music(f_contents.at(n_element)); + } + + int total_loading_size = char_list_size + evidence_list_size + music_list_size; + int loading_value = (loaded_chars / static_cast(total_loading_size)) * 100; + w_lobby->set_loading_value(loading_value); + + send_server_packet(new AOPacket("RD#%")); + } + /* obsolete else if (header == "SE") { if (!courtroom_constructed) @@ -422,6 +459,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) send_server_packet(new AOPacket("RM#%")); } */ + else if (header == "DONE") { if (!courtroom_constructed)