aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoroldmud0 <oldmud0@users.noreply.github.com>2021-04-29 01:29:11 -0500
committerGitHub <noreply@github.com>2021-04-29 01:29:11 -0500
commitbea9fc1a0587cfafed43837543f9db30e515632f (patch)
tree8d8106e53565bc5eabe974046078e8424be7687e /src
parent75da07d190d523ae8b7ec90bf5bbe6bb1a622136 (diff)
parent60daac3823735dace691f7a065c3759dc535f60a (diff)
Merge pull request #526 from AttorneyOnline/crystalwarrior/demo-reload
Add a /reload command that quickly reloads the current demo
Diffstat (limited to 'src')
-rw-r--r--src/demoserver.cpp37
1 files changed, 36 insertions, 1 deletions
diff --git a/src/demoserver.cpp b/src/demoserver.cpp
index d6927a5e..ee0fcf25 100644
--- a/src/demoserver.cpp
+++ b/src/demoserver.cpp
@@ -162,6 +162,7 @@ void DemoServer::handle_packet(AOPacket packet)
load_demo(path);
QString packet = "CT#DEMO#" + tr("Demo file loaded. Send /play or > in OOC to begin playback.") + "#1#%";
client_sock->write(packet.toUtf8());
+ reset_state();
}
else if (contents[1].startsWith("/play") || contents[1] == ">")
{
@@ -220,6 +221,13 @@ void DemoServer::handle_packet(AOPacket packet)
client_sock->write(packet.toUtf8());
}
}
+ else if (contents[1].startsWith("/reload"))
+ {
+ load_demo(p_path);
+ QString packet = "CT#DEMO#" + tr("Current demo file reloaded. Send /play or > in OOC to begin playback.") + "#1#%";
+ client_sock->write(packet.toUtf8());
+ reset_state();
+ }
else if (contents[1].startsWith("/min_wait"))
{
QString packet = "CT#DEMO#" + tr("min_wait is deprecated. Use the client Settings for minimum wait instead!") + "#1#%";
@@ -227,7 +235,7 @@ void DemoServer::handle_packet(AOPacket packet)
}
else if (contents[1].startsWith("/help"))
{
- QString packet = "CT#DEMO#" + tr("Available commands:\nload, play, pause, max_wait, help") + "#1#%";
+ QString packet = "CT#DEMO#" + tr("Available commands:\nload, reload, play, pause, max_wait, help") + "#1#%";
client_sock->write(packet.toUtf8());
}
}
@@ -239,8 +247,11 @@ void DemoServer::load_demo(QString filename)
demo_file.open(QIODevice::ReadOnly);
if (!demo_file.isOpen())
return;
+ // Clear demo data
demo_data.clear();
+ // Set the demo filepath
p_path = filename;
+ // Process the demo file
QTextStream demo_stream(&demo_file);
demo_stream.setCodec("UTF-8");
QString line = demo_stream.readLine();
@@ -304,6 +315,30 @@ void DemoServer::load_demo(QString filename)
}
}
+void DemoServer::reset_state()
+{
+ // Reset evidence list
+ client_sock->write("LE##%");
+
+ // Reset timers
+ client_sock->write("TI#0#3#0#%");
+ client_sock->write("TI#0#1#0#%");
+ client_sock->write("TI#1#1#0#%");
+ client_sock->write("TI#1#3#0#%");
+ client_sock->write("TI#2#1#0#%");
+ client_sock->write("TI#2#3#0#%");
+ client_sock->write("TI#3#1#0#%");
+ client_sock->write("TI#3#3#0#%");
+ client_sock->write("TI#4#1#0#%");
+ client_sock->write("TI#4#3#0#%");
+
+ // Set the BG to default (also breaks up the message queue)
+ client_sock->write("BN#default#wit#%");
+
+ // Stop the wait packet timer
+ timer->stop();
+}
+
void DemoServer::playback()
{
if (demo_data.isEmpty())