diff options
| author | Crystalwarrior <varsash@gmail.com> | 2021-04-07 15:25:18 +0300 |
|---|---|---|
| committer | Crystalwarrior <varsash@gmail.com> | 2021-04-07 15:25:18 +0300 |
| commit | d5c1273518a2eccbeff87d0c5dafa52885a1af2b (patch) | |
| tree | 859c435f43e58dadca2f95b201973c69905f6f3d /src/packet_distribution.cpp | |
| parent | c82dc8dec7f41d91792de8ac8a69548a1266e66c (diff) | |
Fix demos incorrectly saving the packets (breaking encoding for things such as evidence by recording <and> instead of &)
ACTUALLY fix encoding errors, stop supporting the absolutely bonkers <and> exceptions just to support the previous bug instead of fixing the root issue
Diffstat (limited to 'src/packet_distribution.cpp')
| -rw-r--r-- | src/packet_distribution.cpp | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index 0a99b9db..a3b12c81 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -121,6 +121,7 @@ void AOApplication::append_to_demofile(QString packet_string) void AOApplication::server_packet_received(AOPacket *p_packet) { QStringList f_contents_encoded = p_packet->get_contents(); + QString f_packet_encoded = p_packet->to_string(); p_packet->net_decode(); QString header = p_packet->get_header(); @@ -182,7 +183,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_courtroom->append_server_chatmessage(f_contents.at(0), f_contents.at(1), "0"); - append_to_demofile(p_packet->to_string(true)); + append_to_demofile(f_packet_encoded); } } else if (header == "FL") { @@ -368,7 +369,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) } send_server_packet(new AOPacket("RM#%")); - append_to_demofile(p_packet->to_string(true)); + append_to_demofile(f_packet_encoded); } else if (header == "SM") { if (!courtroom_constructed || courtroom_loaded) @@ -471,7 +472,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) 2) // We have a pos included in the background packet! w_courtroom->set_side(f_contents.at(1)); w_courtroom->set_background(f_contents.at(0), f_contents.size() >= 2); - append_to_demofile(p_packet->to_string(true)); + append_to_demofile(f_packet_encoded); } } else if (header == "SP") { @@ -481,7 +482,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) if (courtroom_constructed) // We were sent a "set position" packet { w_courtroom->set_side(f_contents.at(0)); - append_to_demofile(p_packet->to_string(true)); + append_to_demofile(f_packet_encoded); } } else if (header == "SD") // Send pos dropdown @@ -507,14 +508,14 @@ void AOApplication::server_packet_received(AOPacket *p_packet) if (courtroom_constructed && courtroom_loaded) { w_courtroom->chatmessage_enqueue(p_packet->get_contents()); - append_to_demofile(p_packet->to_string(true)); + append_to_demofile(f_packet_encoded); } } else if (header == "MC") { if (courtroom_constructed && courtroom_loaded) { w_courtroom->handle_song(&p_packet->get_contents()); - append_to_demofile(p_packet->to_string(true)); + append_to_demofile(f_packet_encoded); } } else if (header == "RT") { @@ -525,7 +526,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_courtroom->handle_wtce(f_contents.at(0), 0); else if (f_contents.size() == 2) { w_courtroom->handle_wtce(f_contents.at(0), f_contents.at(1).toInt()); - append_to_demofile(p_packet->to_string(true)); + append_to_demofile(f_packet_encoded); } } } @@ -534,7 +535,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) { w_courtroom->set_hp_bar(f_contents.at(0).toInt(), f_contents.at(1).toInt()); - append_to_demofile(p_packet->to_string(true)); + append_to_demofile(f_packet_encoded); } } else if (header == "LE") { @@ -542,11 +543,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) QVector<evi_type> f_evi_list; for (QString f_string : f_contents_encoded) { - QStringList sub_contents; - if (f_contents_encoded.contains("&")) - sub_contents = f_string.split("&"); - else - sub_contents = f_string.split("<and>"); // demos incorrectly encode the separator so we have to account for that + QStringList sub_contents = f_string.split("&"); if (sub_contents.size() < 3) continue; @@ -564,7 +561,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) } w_courtroom->set_evidence_list(f_evi_list); - append_to_demofile(p_packet->to_string(true)); + append_to_demofile(f_packet_encoded); } } else if (header == "ARUP") { @@ -669,7 +666,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_courtroom->set_clock_visibility(id, true); else if (type == 3) w_courtroom->set_clock_visibility(id, false); - append_to_demofile(p_packet->to_string(true)); + append_to_demofile(f_packet_encoded); } else if (header == "CHECK") { if (!courtroom_constructed) |
