diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/aoapplication.h | 9 | ||||
| -rw-r--r-- | include/aooptionsdialog.h | 7 | ||||
| -rw-r--r-- | include/lobby.h | 2 | ||||
| -rw-r--r-- | include/networkmanager.h | 68 |
4 files changed, 37 insertions, 49 deletions
diff --git a/include/aoapplication.h b/include/aoapplication.h index 0c5359ad..d8d3c9a1 100644 --- a/include/aoapplication.h +++ b/include/aoapplication.h @@ -78,7 +78,6 @@ public: void ms_packet_received(AOPacket *p_packet); void server_packet_received(AOPacket *p_packet); - void send_ms_packet(AOPacket *p_packet); void send_server_packet(AOPacket *p_packet, bool encoded = true); void call_settings_menu(); @@ -136,7 +135,7 @@ public: QVector<server_type> &get_favorite_list() { return favorite_list; } void add_favorite_server(int p_server); - void set_server_list(); + void set_server_list(QVector<server_type> &servers) { server_list = servers; } QVector<server_type> &get_server_list() { return server_list; } // reads the theme from config.ini and sets it accordingly @@ -519,6 +518,9 @@ public: // Get a list of custom mount paths QStringList get_mount_paths(); + // Get whether to opt out of player count metrics sent to the master server + bool get_player_count_optout(); + // Currently defined subtheme QString subtheme; @@ -558,9 +560,6 @@ private: QHash<uint, QString> dir_listing_cache; QSet<uint> dir_listing_exist_cache; -private slots: - void ms_connect_finished(bool connected, bool will_retry); - public slots: void server_disconnected(); void loading_cancelled(); diff --git a/include/aooptionsdialog.h b/include/aooptionsdialog.h index 77d19a43..84a96484 100644 --- a/include/aooptionsdialog.h +++ b/include/aooptionsdialog.h @@ -24,6 +24,7 @@ #include <QDirIterator> #include <QListWidget> +#include <QTextBrowser> #include <QTextStream> class Lobby; @@ -188,6 +189,12 @@ private: QPushButton *ui_mount_down; QPushButton *ui_mount_clear_cache; + QWidget *ui_privacy_tab; + QVBoxLayout *ui_privacy_layout; + QCheckBox *ui_privacy_optout_cb; + QFrame *ui_privacy_separator; + QTextBrowser *ui_privacy_policy; + bool asset_cache_dirty = false; bool needs_default_audiodev(); diff --git a/include/lobby.h b/include/lobby.h index 0f1610f9..80832491 100644 --- a/include/lobby.h +++ b/include/lobby.h @@ -30,6 +30,8 @@ public: void set_widgets(); void list_servers(); void list_favorites(); + void get_motd(); + void check_for_updates(); void append_chatmessage(QString f_name, QString f_message); void append_error(QString f_message); void set_player_count(int players_online, int max_players); diff --git a/include/networkmanager.h b/include/networkmanager.h index ed57a956..2e61291f 100644 --- a/include/networkmanager.h +++ b/include/networkmanager.h @@ -1,28 +1,23 @@ #ifndef NETWORKMANAGER_H #define NETWORKMANAGER_H -// Qt for Android has stubbed QDnsLookup. This is not documented in any part of -// their wiki. This prevents SRV lookup/failover behavior from functioning. -// https://bugreports.qt.io/browse/QTBUG-56143 -#ifndef ANDROID -#define MS_FAILOVER_SUPPORTED -#endif - -//#define LOCAL_MS - -#ifdef LOCAL_MS -#undef MS_FAILOVER_SUPPORTED -#endif - #include "aoapplication.h" #include "aopacket.h" #include <QDnsLookup> +#include <QNetworkAccessManager> #include <QTcpSocket> #include <QTime> #include <QTimer> + #include <cstring> +enum MSDocumentType { + PrivacyPolicy, + Motd, + ClientVersion +}; + class NetworkManager : public QObject { Q_OBJECT @@ -31,53 +26,38 @@ public: ~NetworkManager(); AOApplication *ao_app; - QTcpSocket *ms_socket; + QNetworkAccessManager *http; QTcpSocket *server_socket; - QDnsLookup *ms_dns; - QTimer *ms_reconnect_timer; - - const QString ms_srv_hostname = "_aoms._tcp.aceattorneyonline.com"; -#ifdef LOCAL_MS - QString ms_nosrv_hostname = "localhost"; -#else - QString ms_nosrv_hostname = "master.aceattorneyonline.com"; -#endif + QTimer *heartbeat_timer; - const quint16 ms_port = 27016; - const int timeout_milliseconds = 2000; + QString ms_baseurl = "https://servers.aceattorneyonline.com"; - // in seconds - const int ms_reconnect_delay = 7; - - bool ms_partial_packet = false; - QString ms_temp_packet = ""; + const int heartbeat_interval = 60 * 5; bool partial_packet = false; QString temp_packet = ""; unsigned int s_decryptor = 5; - void connect_to_master(); - void connect_to_master_nosrv(); void connect_to_server(server_type p_server); public slots: - void ship_ms_packet(QString p_packet); + void get_server_list(const std::function<void()> &cb); void ship_server_packet(QString p_packet); + void handle_server_packet(); -signals: - void ms_connect_finished(bool success, bool will_retry); + void request_document(MSDocumentType document_type, + const std::function<void(QString)> &cb); + void send_heartbeat(); +private slots: + void ms_request_finished(QNetworkReply *reply, + const std::function<void()> &cb); private: - void perform_srv_lookup(); - -private slots: - void on_srv_lookup(); - void handle_ms_packet(); - void handle_server_packet(); - void on_ms_nosrv_connect_success(); - void on_ms_socket_error(QAbstractSocket::SocketError error); - void retry_ms_connect(); + QString get_user_agent() const { + return QStringLiteral("AttorneyOnline/%1 (Desktop)") + .arg(ao_app->get_version_string()); + } }; #endif // NETWORKMANAGER_H |
