Skip to content

Commit 2966210

Browse files
WisoAltredTrickyLeifastonedDiscord
authored
Add reconnect button to disconnection notice. (#1102)
* Add reconnect button to disconnection notice. Reads and begins the connection process to the last server the user disconnected from. Doesn't complete the connection process.. yet. * clang formatting * Remove class from debug_functions, add prompt into AoApplication instead. Co-Authored-By: Leifa <26681464+TrickyLeifa@users.noreply.github.com> * clang formatting 2 * clang formatting 3 * clang formatting 4 * Complete connection process Reconnects to last server fully. Sends to character select screen. * Add disconnection * Delete comments, unused class --------- Co-authored-by: Leifa <26681464+TrickyLeifa@users.noreply.github.com> Co-authored-by: stonedDiscord <Tukz@gmx.de>
1 parent cfb236e commit 2966210

3 files changed

Lines changed: 26 additions & 5 deletions

File tree

src/aoapplication.cpp

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#include "aoapplication.h"
22

33
#include "courtroom.h"
4-
#include "debug_functions.h"
54
#include "lobby.h"
65
#include "networkmanager.h"
76
#include "options.h"
@@ -20,6 +19,7 @@ AOApplication::AOApplication(QObject *parent)
2019
: QObject(parent)
2120
{
2221
net_manager = new NetworkManager(this);
22+
2323
discord = new AttorneyOnline::Discord();
2424

2525
asset_lookup_cache.reserve(2048);
@@ -138,16 +138,23 @@ QString AOApplication::find_image(QStringList p_list)
138138

139139
void AOApplication::server_disconnected()
140140
{
141+
bool try_reconnect = false;
141142
if (is_courtroom_constructed())
142143
{
143-
if (w_courtroom->isVisible())
144-
{
145-
call_notice(tr("Disconnected from server."));
146-
}
144+
try_reconnect = w_courtroom->isVisible();
147145
construct_lobby();
148146
destruct_courtroom();
149147
}
150148
Options::getInstance().setServerSubTheme(QString());
149+
150+
if (try_reconnect && QMessageBox::question(nullptr,
151+
tr("Server Disconnected"),
152+
tr("Connection to the server has been lost. "
153+
"Do you want to reconnect?"),
154+
QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes)
155+
{
156+
net_manager->reconnect_to_last_server();
157+
}
151158
}
152159

153160
void AOApplication::loading_cancelled()
@@ -158,6 +165,7 @@ void AOApplication::loading_cancelled()
158165
void AOApplication::call_settings_menu()
159166
{
160167
AOOptionsDialog *l_dialog = new AOOptionsDialog(this);
168+
161169
if (is_courtroom_constructed())
162170
{
163171
connect(l_dialog, &AOOptionsDialog::reloadThemeRequest, w_courtroom, &Courtroom::on_reload_theme_clicked);

src/networkmanager.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,8 @@ void NetworkManager::connect_to_server(ServerInfo server)
152152
{
153153
disconnect_from_server();
154154

155+
m_last_server = server;
156+
155157
qInfo().noquote() << QObject::tr("Connecting to %1").arg(server.toString());
156158
m_connection = new WebSocketConnection(ao_app, this);
157159

@@ -173,6 +175,13 @@ void NetworkManager::disconnect_from_server()
173175
}
174176
}
175177

178+
void NetworkManager::reconnect_to_last_server()
179+
{
180+
connect(this, &NetworkManager::server_connected, this, &NetworkManager::join_to_server);
181+
182+
connect_to_server(m_last_server);
183+
}
184+
176185
void NetworkManager::ship_server_packet(AOPacket packet)
177186
{
178187
if (!m_connection)
@@ -194,6 +203,7 @@ void NetworkManager::ship_server_packet(AOPacket packet)
194203

195204
void NetworkManager::join_to_server()
196205
{
206+
disconnect(this, &NetworkManager::server_connected, this, &NetworkManager::join_to_server);
197207
ship_server_packet(AOPacket("askchaa"));
198208
}
199209

src/networkmanager.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class NetworkManager : public QObject
2828

2929
void connect_to_server(ServerInfo p_server);
3030
void disconnect_from_server();
31+
void reconnect_to_last_server();
3132

3233
QString get_user_agent() const;
3334

@@ -60,4 +61,6 @@ private Q_SLOTS:
6061
const int heartbeat_interval = 60 * 5 * 1000;
6162

6263
unsigned int s_decryptor = 5;
64+
65+
ServerInfo m_last_server;
6366
};

0 commit comments

Comments
 (0)