#ifndef DEMOSERVER_H #define DEMOSERVER_H #include "aopacket.h" #include #include #include #include #include #include #include #include class DemoServer : public QObject { Q_OBJECT public: explicit DemoServer(QObject *parent = nullptr); bool server_started = false; int port = 27088; int max_wait = -1; void set_demo_file(QString filepath); private: void handle_packet(AOPacket *packet); void load_demo(QString filename); void reset_state(); QTcpServer* tcp_server; QTcpSocket* client_sock = nullptr; bool client_connected = false; bool partial_packet = false; bool debug_mode = false; QString temp_packet = ""; QQueue demo_data; QString sc_packet; int num_chars = 0; QString p_path; QTimer *timer; int elapsed_time = 0; QString filename; private slots: void accept_connection(); void destroy_connection(); void recv_data(); void client_disconnect(); void playback(); public slots: void start_server(); signals: void skip_timers(qint64 msecs); }; #endif // DEMOSERVER_H