Do not kick the player from the server on game admin timeout - just remove the player from the game.
This commit is contained in:
@@ -811,6 +811,7 @@ Remove Reason:
|
|||||||
0x0001 - Game is full
|
0x0001 - Game is full
|
||||||
0x0002 - Game is already running
|
0x0002 - Game is already running
|
||||||
0x0003 - Kicked from the game
|
0x0003 - Kicked from the game
|
||||||
|
0x0004 - Timeout
|
||||||
0xFFFF - Other reason
|
0xFFFF - Other reason
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3060,6 +3060,7 @@ void mainWindowImpl::paintStartSplash() {
|
|||||||
|
|
||||||
void mainWindowImpl::networkError(int errorID, int /*osErrorID*/) {
|
void mainWindowImpl::networkError(int errorID, int /*osErrorID*/) {
|
||||||
|
|
||||||
|
hideTimeoutDialog();
|
||||||
switch (errorID) {
|
switch (errorID) {
|
||||||
case ERR_SOCK_SERVERADDR_NOT_SET:
|
case ERR_SOCK_SERVERADDR_NOT_SET:
|
||||||
{QMessageBox::warning(this, tr("Network Error"),
|
{QMessageBox::warning(this, tr("Network Error"),
|
||||||
@@ -3272,7 +3273,6 @@ void mainWindowImpl::networkError(int errorID, int /*osErrorID*/) {
|
|||||||
QMessageBox::Close); }
|
QMessageBox::Close); }
|
||||||
}
|
}
|
||||||
// close dialogs
|
// close dialogs
|
||||||
hideTimeoutDialog();
|
|
||||||
myGameLobbyDialog->reject();
|
myGameLobbyDialog->reject();
|
||||||
myConnectToServerDialog->reject();
|
myConnectToServerDialog->reject();
|
||||||
myStartNetworkGameDialog->reject();
|
myStartNetworkGameDialog->reject();
|
||||||
@@ -3280,6 +3280,7 @@ void mainWindowImpl::networkError(int errorID, int /*osErrorID*/) {
|
|||||||
|
|
||||||
void mainWindowImpl::networkNotification(int notificationId)
|
void mainWindowImpl::networkNotification(int notificationId)
|
||||||
{
|
{
|
||||||
|
hideTimeoutDialog();
|
||||||
switch (notificationId)
|
switch (notificationId)
|
||||||
{
|
{
|
||||||
case NTF_NET_REMOVED_KICKED:
|
case NTF_NET_REMOVED_KICKED:
|
||||||
@@ -3299,6 +3300,11 @@ void mainWindowImpl::networkNotification(int notificationId)
|
|||||||
tr("Unable to join - the server has already started the game."),
|
tr("Unable to join - the server has already started the game."),
|
||||||
QMessageBox::Close); }
|
QMessageBox::Close); }
|
||||||
break;
|
break;
|
||||||
|
case NTF_NET_REMOVED_TIMEOUT:
|
||||||
|
{ QMessageBox::warning(this, tr("Network Notification"),
|
||||||
|
tr("Your admin state timed out due to inactivity. Feel free to create a new game!"),
|
||||||
|
QMessageBox::Close); }
|
||||||
|
break;
|
||||||
case NTF_NET_JOIN_INVALID_PASSWORD:
|
case NTF_NET_JOIN_INVALID_PASSWORD:
|
||||||
{ QMessageBox::warning(this, tr("Network Notification"),
|
{ QMessageBox::warning(this, tr("Network Notification"),
|
||||||
tr("Invalid password when joining the game.\nPlease reenter the password and try again."),
|
tr("Invalid password when joining the game.\nPlease reenter the password and try again."),
|
||||||
|
|||||||
@@ -97,6 +97,7 @@ using namespace std;
|
|||||||
#define NET_REMOVED_GAME_FULL 0x0001
|
#define NET_REMOVED_GAME_FULL 0x0001
|
||||||
#define NET_REMOVED_GAME_ALREADY_RUNNING 0x0002
|
#define NET_REMOVED_GAME_ALREADY_RUNNING 0x0002
|
||||||
#define NET_REMOVED_KICKED 0x0003
|
#define NET_REMOVED_KICKED 0x0003
|
||||||
|
#define NET_REMOVED_TIMEOUT 0x0004
|
||||||
#define NET_REMOVED_OTHER_REASON 0xFFFF
|
#define NET_REMOVED_OTHER_REASON 0xFFFF
|
||||||
|
|
||||||
// Reasons for timeout warning
|
// Reasons for timeout warning
|
||||||
@@ -4268,6 +4269,9 @@ NetPacketRemovedFromGame::SetData(const NetPacketRemovedFromGame::Data &inData)
|
|||||||
case NTF_NET_REMOVED_KICKED :
|
case NTF_NET_REMOVED_KICKED :
|
||||||
tmpData->removeReason = htons(NET_REMOVED_KICKED);
|
tmpData->removeReason = htons(NET_REMOVED_KICKED);
|
||||||
break;
|
break;
|
||||||
|
case NTF_NET_REMOVED_TIMEOUT :
|
||||||
|
tmpData->removeReason = htons(NET_REMOVED_TIMEOUT);
|
||||||
|
break;
|
||||||
default :
|
default :
|
||||||
tmpData->removeReason = htons(NET_REMOVED_OTHER_REASON);
|
tmpData->removeReason = htons(NET_REMOVED_OTHER_REASON);
|
||||||
break;
|
break;
|
||||||
@@ -4297,6 +4301,9 @@ NetPacketRemovedFromGame::GetData(NetPacketRemovedFromGame::Data &outData) const
|
|||||||
case NET_REMOVED_KICKED :
|
case NET_REMOVED_KICKED :
|
||||||
outData.removeReason = NTF_NET_REMOVED_KICKED;
|
outData.removeReason = NTF_NET_REMOVED_KICKED;
|
||||||
break;
|
break;
|
||||||
|
case NET_REMOVED_TIMEOUT :
|
||||||
|
outData.removeReason = NTF_NET_REMOVED_TIMEOUT;
|
||||||
|
break;
|
||||||
default :
|
default :
|
||||||
outData.removeReason = NTF_NET_INTERNAL;
|
outData.removeReason = NTF_NET_INTERNAL;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -340,7 +340,7 @@ ServerGameStateInit::Process(ServerGameThread &server)
|
|||||||
SessionWrapper session = server.GetSessionManager().GetSessionByUniquePlayerId(server.GetAdminPlayerId());
|
SessionWrapper session = server.GetSessionManager().GetSessionByUniquePlayerId(server.GetAdminPlayerId());
|
||||||
if (session.sessionData.get())
|
if (session.sessionData.get())
|
||||||
{
|
{
|
||||||
server.RemovePlayer(session.playerData->GetUniqueId(), ERR_NET_SESSION_TIMED_OUT);
|
server.MoveSessionToLobby(session, NTF_NET_REMOVED_TIMEOUT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return AbstractServerGameStateReceiving::Process(server);
|
return AbstractServerGameStateReceiving::Process(server);
|
||||||
|
|||||||
@@ -90,15 +90,16 @@
|
|||||||
#define NTF_NET_REMOVED_GAME_FULL 203
|
#define NTF_NET_REMOVED_GAME_FULL 203
|
||||||
#define NTF_NET_REMOVED_ALREADY_RUNNING 204
|
#define NTF_NET_REMOVED_ALREADY_RUNNING 204
|
||||||
#define NTF_NET_REMOVED_KICKED 205
|
#define NTF_NET_REMOVED_KICKED 205
|
||||||
|
#define NTF_NET_REMOVED_TIMEOUT 206
|
||||||
|
|
||||||
// Notifications - join failed
|
// Notifications - join failed
|
||||||
#define NTF_NET_JOIN_GAME_FULL 206
|
#define NTF_NET_JOIN_GAME_FULL 210
|
||||||
#define NTF_NET_JOIN_ALREADY_RUNNING 207
|
#define NTF_NET_JOIN_ALREADY_RUNNING 211
|
||||||
#define NTF_NET_JOIN_INVALID_PASSWORD 208
|
#define NTF_NET_JOIN_INVALID_PASSWORD 212
|
||||||
|
|
||||||
// Notifications - version
|
// Notifications - version
|
||||||
#define NTF_NET_NEW_RELEASE_AVAILABLE 209
|
#define NTF_NET_NEW_RELEASE_AVAILABLE 220
|
||||||
#define NTF_NET_OUTDATED_BETA 210
|
#define NTF_NET_OUTDATED_BETA 221
|
||||||
|
|
||||||
// This is an internal message which is not reported.
|
// This is an internal message which is not reported.
|
||||||
#define MSG_SOCK_INTERNAL_PENDING 0
|
#define MSG_SOCK_INTERNAL_PENDING 0
|
||||||
|
|||||||
Reference in New Issue
Block a user