aboutsummaryrefslogtreecommitdiff
path: root/src/demoserver.h
diff options
context:
space:
mode:
authorTrickyLeifa <date.epoch@gmail.com>2024-05-15 00:00:17 +0200
committerTrickyLeifa <date.epoch@gmail.com>2024-05-15 00:04:16 +0200
commitc9f52b7223685d2e7fca925594171f94dd8c6e3b (patch)
tree740bb32a40da98a4d52836432f59a16b31333900 /src/demoserver.h
parent951766666621fa77e257e6b5616fe4ab1eb2a52f (diff)
Ported to CMake, ...
* Ported the project to CMake * Android and Mac support dropped for the time being. * Tests, BASS and Discord-RPC are now options * Restructured and reformated the project. * Merged `include` and `src` * Renamed `resource` to `data` * Renamed various files * External libraries headers are no longer included in `src` * Replaced header guards with #pragma once * Multiple refactors (keywords, headers) * Added Qt6 compatibility * Removed various unused functions and headers * Reworked AOPacket * When content is passed to AOPacket, it should be ensured that the content is already decoded. * Encoding/decoding are now static methods. * Fixed various memory leaks * Removed animation code for AOImage * AOImage is always using static images * Simplified ChatLogPiece
Diffstat (limited to 'src/demoserver.h')
-rw-r--r--src/demoserver.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/demoserver.h b/src/demoserver.h
new file mode 100644
index 00000000..f52fbc7e
--- /dev/null
+++ b/src/demoserver.h
@@ -0,0 +1,60 @@
+#pragma once
+
+#include "aopacket.h"
+
+#include <QDebug>
+#include <QFileDialog>
+#include <QMessageBox>
+#include <QObject>
+#include <QQueue>
+#include <QTcpServer>
+#include <QTcpSocket>
+#include <QTimer>
+
+class DemoServer : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit DemoServer(QObject *parent = nullptr);
+
+ int port();
+
+ void set_demo_file(QString filepath);
+
+private:
+ bool m_server_started = false;
+ int m_port = 0;
+ int m_max_wait = -1;
+
+ QTcpServer *tcp_server;
+ QTcpSocket *client_sock = nullptr;
+ bool client_connected = false;
+ bool partial_packet = false;
+ bool debug_mode = false;
+ QString temp_packet;
+ QQueue<QString> demo_data;
+ QString sc_packet;
+ int num_chars = 0;
+ QString p_path;
+ QTimer *timer;
+ int elapsed_time = 0;
+ QString filename;
+
+ void handle_packet(AOPacket packet);
+ void load_demo(QString filename);
+ void reset_state();
+
+private Q_SLOTS:
+ void accept_connection();
+ void destroy_connection();
+ void recv_data();
+ void client_disconnect();
+ void playback();
+
+public Q_SLOTS:
+ void start_server();
+
+Q_SIGNALS:
+ void skip_timers(qint64 msecs);
+};