From b606b55cae1c1244ec9de19c54acf1a1824013f4 Mon Sep 17 00:00:00 2001 From: David Skoland Date: Tue, 24 Jan 2017 21:00:56 +0100 Subject: started implementing legacy loading protocol --- packet_distribution.cpp | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) (limited to 'packet_distribution.cpp') diff --git a/packet_distribution.cpp b/packet_distribution.cpp index 5250dfab..391f2e23 100644 --- a/packet_distribution.cpp +++ b/packet_distribution.cpp @@ -99,7 +99,12 @@ void AOApplication::server_packet_received(AOPacket *p_packet) if (f_contents.size() < 1) return; - //T0D0: save server version here, somehow(it's in the HI# packet usually) + s_pv = f_contents.at(0).toInt(); + + if (f_contents.size() < 2) + return; + + //T0D0: store server version } else if (header == "CT") { @@ -121,6 +126,37 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_lobby->set_player_count(f_contents.at(0).toInt(), f_contents.at(1).toInt()); } + else if (header == "SI") + { + if (f_contents.size() > 3) + return; + + char_list_size = f_contents.at(0).toInt(); + loaded_chars = 0; + evidence_list_size = f_contents.at(1).toInt(); + loaded_evidence = 0; + music_list_size = f_contents.at(2).toInt(); + loaded_music = 0; + + destruct_courtroom(); + + construct_courtroom(); + + AOPacket *f_packet = new AOPacket("askchar2#%"); + send_server_packet(f_packet); + delete f_packet; + } + else if (header == "CI") + { + if (!courtroom_constructed) + return; + AOPacket *f_packet = new AOPacket("AN#1#%"); + send_server_packet(f_packet); + delete f_packet; + + //w_courtroom->append_char(); + + } } void AOApplication::send_ms_packet(AOPacket *p_packet) @@ -142,7 +178,7 @@ void AOApplication::send_server_packet(AOPacket *p_packet) if (encryption_needed) { - qDebug() << "S:(e)" << f_packet; + qDebug() << "S(e):" << f_packet; p_packet->encrypt_header(s_decryptor); f_packet = p_packet->to_string(); -- cgit From 723582574094e4b7db6c25569c2b180c426ae513 Mon Sep 17 00:00:00 2001 From: David Skoland Date: Wed, 25 Jan 2017 15:54:00 +0100 Subject: characters now load successfully --- packet_distribution.cpp | 47 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 39 insertions(+), 8 deletions(-) (limited to 'packet_distribution.cpp') diff --git a/packet_distribution.cpp b/packet_distribution.cpp index 391f2e23..3ddacc6d 100644 --- a/packet_distribution.cpp +++ b/packet_distribution.cpp @@ -1,6 +1,7 @@ #include "aoapplication.h" #include "lobby.h" +#include "courtroom.h" #include "networkmanager.h" #include "encryption_functions.h" #include "hardware_functions.h" @@ -91,8 +92,6 @@ void AOApplication::server_packet_received(AOPacket *p_packet) AOPacket *hi_packet = new AOPacket("HI#" + f_hdid + "#%"); send_server_packet(hi_packet); - - delete hi_packet; } else if (header == "ID") { @@ -128,7 +127,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) } else if (header == "SI") { - if (f_contents.size() > 3) + if (f_contents.size() < 3) return; char_list_size = f_contents.at(0).toInt(); @@ -144,17 +143,46 @@ void AOApplication::server_packet_received(AOPacket *p_packet) AOPacket *f_packet = new AOPacket("askchar2#%"); send_server_packet(f_packet); - delete f_packet; } else if (header == "CI") { if (!courtroom_constructed) return; - AOPacket *f_packet = new AOPacket("AN#1#%"); - send_server_packet(f_packet); - delete f_packet; - //w_courtroom->append_char(); + for (int n_element = 0 ; n_element < f_contents.size() ; n_element += 2) + { + if (f_contents.at(n_element).toInt() != loaded_chars) + break; + + if (n_element == f_contents.size() - 1) + break; + + QStringList sub_elements = f_contents.at(n_element + 1).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); + + ++loaded_chars; + qDebug() << "loaded_chars" << loaded_chars; + + w_courtroom->append_char(f_char); + + + qDebug() << f_contents.at(n_element + 1); + } + + if (loaded_chars < char_list_size) + { + qDebug() << "loaded_chars" << loaded_chars; + QString next_packet_number = QString::number(((loaded_chars - 1) / 10) + 1); + AOPacket *f_packet = new AOPacket("AN#" + next_packet_number + "#%"); + send_server_packet(f_packet); + } + + } } @@ -168,6 +196,8 @@ void AOApplication::send_ms_packet(AOPacket *p_packet) net_manager->ship_ms_packet(f_packet); qDebug() << "S(ms):" << f_packet; + + delete p_packet; } void AOApplication::send_server_packet(AOPacket *p_packet) @@ -190,4 +220,5 @@ void AOApplication::send_server_packet(AOPacket *p_packet) net_manager->ship_server_packet(f_packet); + delete p_packet; } -- cgit From 58d98e41bea77dac1b5726b4ead8b3f072750b38 Mon Sep 17 00:00:00 2001 From: David Skoland Date: Wed, 25 Jan 2017 18:09:55 +0100 Subject: started making the loading screen --- packet_distribution.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'packet_distribution.cpp') diff --git a/packet_distribution.cpp b/packet_distribution.cpp index 3ddacc6d..014919b1 100644 --- a/packet_distribution.cpp +++ b/packet_distribution.cpp @@ -182,7 +182,21 @@ void AOApplication::server_packet_received(AOPacket *p_packet) send_server_packet(f_packet); } + else if (loaded_chars >= char_list_size) + { + if (evidence_list_size == 0) + send_server_packet(new AOPacket("AM#0#%")); + else + send_server_packet(new AOPacket("AE#0#%")); + } + + + } + else if (header == "EI"){ + + } + else if (header == "EM"){ } } -- cgit From 99aa327318ab00f2049cfcefadd353c3a4e06bf7 Mon Sep 17 00:00:00 2001 From: David Skoland Date: Wed, 25 Jan 2017 19:50:49 +0100 Subject: loading characters now works with overlay --- packet_distribution.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'packet_distribution.cpp') diff --git a/packet_distribution.cpp b/packet_distribution.cpp index 014919b1..84ace315 100644 --- a/packet_distribution.cpp +++ b/packet_distribution.cpp @@ -141,6 +141,9 @@ void AOApplication::server_packet_received(AOPacket *p_packet) construct_courtroom(); + w_lobby->show_loading_overlay(); + w_lobby->set_loading_text("Loading"); + AOPacket *f_packet = new AOPacket("askchar2#%"); send_server_packet(f_packet); } @@ -166,12 +169,10 @@ void AOApplication::server_packet_received(AOPacket *p_packet) f_char.description = sub_elements.at(1); ++loaded_chars; - qDebug() << "loaded_chars" << loaded_chars; - w_courtroom->append_char(f_char); + w_lobby->set_loading_text("Loading chars:\n" + QString::number(loaded_chars) + "/" + QString::number(char_list_size)); - - qDebug() << f_contents.at(n_element + 1); + w_courtroom->append_char(f_char); } if (loaded_chars < char_list_size) -- cgit From b4b533b72492da38381ad2fbb6c5aad99e30f110 Mon Sep 17 00:00:00 2001 From: David Skoland Date: Thu, 26 Jan 2017 00:23:53 +0100 Subject: finished legacy loading process --- packet_distribution.cpp | 94 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 88 insertions(+), 6 deletions(-) (limited to 'packet_distribution.cpp') diff --git a/packet_distribution.cpp b/packet_distribution.cpp index 84ace315..a20429e0 100644 --- a/packet_distribution.cpp +++ b/packet_distribution.cpp @@ -157,6 +157,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) if (f_contents.at(n_element).toInt() != loaded_chars) break; + //this means we are on the last element and checking n + 1 element will be game over so if (n_element == f_contents.size() - 1) break; @@ -167,6 +168,8 @@ void AOApplication::server_packet_received(AOPacket *p_packet) char_type f_char; f_char.name = sub_elements.at(0); f_char.description = sub_elements.at(1); + //temporary. the CharsCheck packet sets this properly + f_char.taken = false; ++loaded_chars; @@ -177,28 +180,107 @@ void AOApplication::server_packet_received(AOPacket *p_packet) if (loaded_chars < char_list_size) { - qDebug() << "loaded_chars" << loaded_chars; QString next_packet_number = QString::number(((loaded_chars - 1) / 10) + 1); - AOPacket *f_packet = new AOPacket("AN#" + next_packet_number + "#%"); - send_server_packet(f_packet); + send_server_packet(new AOPacket("AN#" + next_packet_number + "#%")); } - else if (loaded_chars >= char_list_size) + else { if (evidence_list_size == 0) send_server_packet(new AOPacket("AM#0#%")); else send_server_packet(new AOPacket("AE#0#%")); } + } + else if (header == "EI"){ + if (!courtroom_constructed) + return; + + // +1 because evidence starts at 1 rather than 0 for whatever reason + //enjoy fanta + if (f_contents.at(0).toInt() != loaded_evidence + 1) + return; + + if (f_contents.size() < 2) + return; + + QStringList sub_elements = f_contents.at(1).split("&"); + if (sub_elements.size() < 4) + return; + evi_type f_evi; + f_evi.name = sub_elements.at(0); + f_evi.description = sub_elements.at(1); + //no idea what the number at position 2 is. probably an identifier? + f_evi.image = sub_elements.at(3); + ++loaded_evidence; + + w_lobby->set_loading_text("Loading evidence:\n" + QString::number(loaded_evidence) + "/" + QString::number(evidence_list_size)); + + w_courtroom->append_evidence(f_evi); + + if (loaded_evidence < evidence_list_size) + { + qDebug() << "loaded evidence: " << loaded_evidence; + QString next_packet_number = QString::number(loaded_evidence); + send_server_packet(new AOPacket("AE#" + next_packet_number + "#%")); + } + else + { + send_server_packet(new AOPacket("AM#0#%")); + } } - else if (header == "EI"){ + else if (header == "EM") + { + if (!courtroom_constructed) + return; + + for (int n_element = 0 ; n_element < f_contents.size() ; n_element += 2) + { + if (f_contents.at(n_element).toInt() != loaded_music) + break; + + if (n_element == f_contents.size() - 1) + break; + + QString f_music = f_contents.at(n_element + 1); + + ++loaded_music; + + w_lobby->set_loading_text("Loading music:\n" + QString::number(loaded_music) + "/" + QString::number(music_list_size)); + w_courtroom->append_music(f_music); + } + + //apparently we need to intentionally send another AM packet to get onwards in the loading process + //in spite of the fact that we actually received all the music + //enjoy fanta + //if (loaded_music < music_list_size) + //{ + QString next_packet_number = QString::number(((loaded_music - 1) / 10) + 1); + send_server_packet(new AOPacket("AM#" + next_packet_number + "#%")); + //} } - else if (header == "EM"){ + if (header == "CharsCheck") + { + for (int n_char = 0 ; n_char < f_contents.size() ; ++n_char) + { + if (f_contents.at(n_char) == "-1") + w_courtroom->set_taken(n_char, true); + else + w_courtroom->set_taken(n_char, false); + } + } + if (header == "DONE") + { + if (!courtroom_constructed) + return; + + w_courtroom->show(); + destruct_lobby(); } } -- cgit From 5e2ea2b24c2c0151ff8b0354632aa00148e0e6d6 Mon Sep 17 00:00:00 2001 From: David Skoland Date: Thu, 26 Jan 2017 16:03:48 +0100 Subject: finished charselect and cleaned up some files --- packet_distribution.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'packet_distribution.cpp') diff --git a/packet_distribution.cpp b/packet_distribution.cpp index a20429e0..d53b5a6a 100644 --- a/packet_distribution.cpp +++ b/packet_distribution.cpp @@ -176,6 +176,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_lobby->set_loading_text("Loading chars:\n" + QString::number(loaded_chars) + "/" + QString::number(char_list_size)); w_courtroom->append_char(f_char); + //qDebug() << "appended " << f_char.name << " to char_list"; } if (loaded_chars < char_list_size) @@ -278,6 +279,8 @@ void AOApplication::server_packet_received(AOPacket *p_packet) if (!courtroom_constructed) return; + w_courtroom->set_char_select_page(); + w_courtroom->show(); destruct_lobby(); -- cgit From 9682087667e2de26e14406efde960b8c7f0c3c98 Mon Sep 17 00:00:00 2001 From: David Skoland Date: Fri, 27 Jan 2017 01:17:33 +0100 Subject: implemented ooc chat and cleaned up some old headers --- packet_distribution.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'packet_distribution.cpp') diff --git a/packet_distribution.cpp b/packet_distribution.cpp index d53b5a6a..163c744d 100644 --- a/packet_distribution.cpp +++ b/packet_distribution.cpp @@ -63,8 +63,7 @@ void AOApplication::ms_packet_received(AOPacket *p_packet) } if (courtroom_constructed) { - //T0D0: uncomment this when it's implemented - //w_courtroom->append_ms_chat_message(message_line); + w_courtroom->append_ms_chatmessage(message_line); } } } @@ -77,7 +76,8 @@ void AOApplication::server_packet_received(AOPacket *p_packet) QStringList f_contents = p_packet->get_contents(); QString f_packet = p_packet->to_string(); - qDebug() << "R: " << f_packet; + if (header != "checkconnection") + qDebug() << "R: " << f_packet; if (header == "decryptor") { @@ -113,10 +113,9 @@ void AOApplication::server_packet_received(AOPacket *p_packet) return; } - //QString message_line = f_contents.at(0) + ": " + f_contents.at(1); + QString message_line = f_contents.at(0) + ": " + f_contents.at(1); - //T0D0, uncomment when implemented - //w_courtroom->append_ooc_chatmessage(message_line) + w_courtroom->append_server_chatmessage(message_line); } else if (header == "PN") { @@ -176,7 +175,6 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_lobby->set_loading_text("Loading chars:\n" + QString::number(loaded_chars) + "/" + QString::number(char_list_size)); w_courtroom->append_char(f_char); - //qDebug() << "appended " << f_char.name << " to char_list"; } if (loaded_chars < char_list_size) @@ -281,10 +279,20 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_courtroom->set_char_select_page(); + w_courtroom->append_ms_chatmessage(w_lobby->get_chatlog()); + w_courtroom->show(); destruct_lobby(); } + //server accepting char request(CC) packet + if (header == "PV") + { + if (f_contents.size() < 3) + return; + + w_courtroom->enter_courtroom(f_contents.at(2).toInt()); + } } void AOApplication::send_ms_packet(AOPacket *p_packet) -- cgit