aboutsummaryrefslogtreecommitdiff
path: root/src/packet_distribution.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/packet_distribution.cpp')
-rw-r--r--src/packet_distribution.cpp48
1 files changed, 38 insertions, 10 deletions
diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp
index f21c4acd..822b2dc9 100644
--- a/src/packet_distribution.cpp
+++ b/src/packet_distribution.cpp
@@ -102,6 +102,19 @@ end:
delete p_packet;
}
+void AOApplication::append_to_demofile(QString packet_string)
+{
+ if (get_auto_logging_enabled() && !log_filename.isEmpty())
+ {
+ QString path = log_filename.left(log_filename.size()).replace(".log", ".demo");
+ append_to_file(packet_string, path, true);
+ if (!demo_timer.isValid())
+ demo_timer.start();
+ else
+ append_to_file("wait#"+ QString::number(demo_timer.restart()) + "#%", path, true);
+ }
+}
+
void AOApplication::server_packet_received(AOPacket *p_packet)
{
p_packet->net_decode();
@@ -164,6 +177,8 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
else
w_courtroom->append_server_chatmessage(f_contents.at(0),
f_contents.at(1), "0");
+
+ append_to_demofile(p_packet->to_string(true));
}
}
else if (header == "FL") {
@@ -232,7 +247,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
evidence_list_size = f_contents.at(1).toInt();
music_list_size = f_contents.at(2).toInt();
- if (char_list_size < 1 || evidence_list_size < 0 || music_list_size < 0)
+ if (char_list_size < 0 || evidence_list_size < 0 || music_list_size < 0)
goto end;
loaded_chars = 0;
@@ -255,7 +270,6 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
server_name = info.name;
server_address =
QString("%1:%2").arg(info.ip, QString::number(info.port));
- qDebug() << server_address;
window_title += ": " + server_name;
}
}
@@ -265,7 +279,6 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
server_name = info.name;
server_address =
QString("%1:%2").arg(info.ip, QString::number(info.port));
- qDebug() << server_address;
window_title += ": " + server_name;
}
}
@@ -283,7 +296,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
// Remove any characters not accepted in folder names for the server_name
// here
- if (AOApplication::get_auto_logging_enabled()) {
+ if (AOApplication::get_auto_logging_enabled() && server_name != "Demo playback") {
this->log_filename = QDateTime::currentDateTime().toUTC().toString(
"'logs/" + server_name.remove(QRegExp("[\\\\/:*?\"<>|\']")) +
"/'yyyy-MM-dd hh-mm-ss t'.log'");
@@ -292,6 +305,8 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
QDateTime::currentDateTime().toUTC().toString(),
log_filename, true);
}
+ else
+ this->log_filename = "";
QCryptographicHash hash(QCryptographicHash::Algorithm::Sha256);
hash.addData(server_address.toUtf8());
@@ -312,7 +327,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
}
else if (header == "SC") {
- if (!courtroom_constructed)
+ if (!courtroom_constructed || courtroom_loaded)
goto end;
for (int n_element = 0; n_element < f_contents.size(); ++n_element) {
@@ -344,9 +359,10 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
}
send_server_packet(new AOPacket("RM#%"));
+ append_to_demofile(p_packet->to_string(true));
}
else if (header == "SM") {
- if (!courtroom_constructed)
+ if (!courtroom_constructed || courtroom_loaded)
goto end;
bool musics_time = false;
@@ -445,6 +461,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));
}
}
else if (header == "SP") {
@@ -454,6 +471,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));
}
}
else if (header == "SD") // Send pos dropdown
@@ -475,27 +493,37 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
}
else if (header == "MS") {
if (courtroom_constructed && courtroom_loaded)
+ {
w_courtroom->chatmessage_enqueue(p_packet->get_contents());
+ append_to_demofile(p_packet->to_string(true));
+ }
}
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));
+ }
}
else if (header == "RT") {
if (f_contents.size() < 1)
goto end;
if (courtroom_constructed) {
- if (f_contents.size() == 1)
- 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());
+ if (f_contents.size() == 1)
+ 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));
}
}
}
else if (header == "HP") {
if (courtroom_constructed && f_contents.size() > 1)
+ {
w_courtroom->set_hp_bar(f_contents.at(0).toInt(),
f_contents.at(1).toInt());
+ append_to_demofile(p_packet->to_string(true));
+ }
}
else if (header == "LE") {
if (courtroom_constructed) {