Move spectators to lobby before closing a game.
This commit is contained in:
@@ -371,6 +371,7 @@ message RemovedFromGameMessage {
|
|||||||
gameIsRunning = 3;
|
gameIsRunning = 3;
|
||||||
gameTimeout = 4;
|
gameTimeout = 4;
|
||||||
removedStartFailed = 5;
|
removedStartFailed = 5;
|
||||||
|
gameClosed = 6;
|
||||||
}
|
}
|
||||||
required RemovedFromGameReason removedFromGameReason = 2;
|
required RemovedFromGameReason removedFromGameReason = 2;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -589,6 +589,9 @@ AbstractClientStateReceiving::HandlePacket(boost::shared_ptr<ClientThread> clien
|
|||||||
case RemovedFromGameMessage::removedStartFailed :
|
case RemovedFromGameMessage::removedStartFailed :
|
||||||
removeReason = NTF_NET_REMOVED_START_FAILED;
|
removeReason = NTF_NET_REMOVED_START_FAILED;
|
||||||
break;
|
break;
|
||||||
|
case RemovedFromGameMessage::gameClosed :
|
||||||
|
removeReason = NTF_NET_REMOVED_GAME_CLOSED;
|
||||||
|
break;
|
||||||
default :
|
default :
|
||||||
removeReason = NTF_NET_REMOVED_ON_REQUEST;
|
removeReason = NTF_NET_REMOVED_ON_REQUEST;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -198,6 +198,21 @@ ServerGame::RemoveAllSessions()
|
|||||||
SetState(ServerGameStateFinal::Instance());
|
SetState(ServerGameStateFinal::Instance());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ServerGame::MoveSpectatorsToLobby()
|
||||||
|
{
|
||||||
|
PlayerIdList spectatorList = GetSpectatorIdList();
|
||||||
|
PlayerIdList::const_iterator i = spectatorList.begin();
|
||||||
|
PlayerIdList::const_iterator end = spectatorList.end();
|
||||||
|
while (i != end) {
|
||||||
|
boost::shared_ptr<SessionData> tmpSession = GetSessionManager().GetSessionByUniquePlayerId(*i);
|
||||||
|
// Only remove if the spectator was found.
|
||||||
|
if (tmpSession)
|
||||||
|
MoveSessionToLobby(tmpSession, NTF_NET_REMOVED_GAME_CLOSED);
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ServerGame::TimerVoteKick(const boost::system::error_code &ec)
|
ServerGame::TimerVoteKick(const boost::system::error_code &ec)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1835,6 +1835,7 @@ ServerLobbyThread::TimerRemoveGame(const boost::system::error_code &ec)
|
|||||||
++next;
|
++next;
|
||||||
boost::shared_ptr<ServerGame> tmpGame = i->second;
|
boost::shared_ptr<ServerGame> tmpGame = i->second;
|
||||||
if (!tmpGame->GetSessionManager().HasSessionWithState(SessionData::Game))
|
if (!tmpGame->GetSessionManager().HasSessionWithState(SessionData::Game))
|
||||||
|
tmpGame->MoveSpectatorsToLobby();
|
||||||
InternalRemoveGame(tmpGame); // This will delete the game.
|
InternalRemoveGame(tmpGame); // This will delete the game.
|
||||||
i = next;
|
i = next;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,6 +80,7 @@ public:
|
|||||||
void SendToAllPlayers(boost::shared_ptr<NetPacket> packet, int state);
|
void SendToAllPlayers(boost::shared_ptr<NetPacket> packet, int state);
|
||||||
void SendToAllButOnePlayers(boost::shared_ptr<NetPacket> packet, SessionId except, int state);
|
void SendToAllButOnePlayers(boost::shared_ptr<NetPacket> packet, SessionId except, int state);
|
||||||
void RemoveAllSessions();
|
void RemoveAllSessions();
|
||||||
|
void MoveSpectatorsToLobby();
|
||||||
|
|
||||||
bool IsPasswordProtected() const;
|
bool IsPasswordProtected() const;
|
||||||
bool CheckPassword(const std::string &password) const;
|
bool CheckPassword(const std::string &password) const;
|
||||||
|
|||||||
@@ -116,6 +116,7 @@
|
|||||||
#define NTF_NET_REMOVED_KICKED 205
|
#define NTF_NET_REMOVED_KICKED 205
|
||||||
#define NTF_NET_REMOVED_TIMEOUT 206
|
#define NTF_NET_REMOVED_TIMEOUT 206
|
||||||
#define NTF_NET_REMOVED_START_FAILED 207
|
#define NTF_NET_REMOVED_START_FAILED 207
|
||||||
|
#define NTF_NET_REMOVED_GAME_CLOSED 208
|
||||||
|
|
||||||
// Notifications - join failed
|
// Notifications - join failed
|
||||||
#define NTF_NET_JOIN_GAME_INVALID 210
|
#define NTF_NET_JOIN_GAME_INVALID 210
|
||||||
|
|||||||
+2
@@ -9732,6 +9732,7 @@ bool RemovedFromGameMessage_RemovedFromGameReason_IsValid(int value) {
|
|||||||
case 3:
|
case 3:
|
||||||
case 4:
|
case 4:
|
||||||
case 5:
|
case 5:
|
||||||
|
case 6:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
@@ -9745,6 +9746,7 @@ const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage::gameI
|
|||||||
const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage::gameIsRunning;
|
const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage::gameIsRunning;
|
||||||
const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage::gameTimeout;
|
const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage::gameTimeout;
|
||||||
const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage::removedStartFailed;
|
const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage::removedStartFailed;
|
||||||
|
const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage::gameClosed;
|
||||||
const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage::RemovedFromGameReason_MIN;
|
const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage::RemovedFromGameReason_MIN;
|
||||||
const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage::RemovedFromGameReason_MAX;
|
const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage::RemovedFromGameReason_MAX;
|
||||||
const int RemovedFromGameMessage::RemovedFromGameReason_ARRAYSIZE;
|
const int RemovedFromGameMessage::RemovedFromGameReason_ARRAYSIZE;
|
||||||
|
|||||||
+4
-2
@@ -224,11 +224,12 @@ enum RemovedFromGameMessage_RemovedFromGameReason {
|
|||||||
RemovedFromGameMessage_RemovedFromGameReason_gameIsFull = 2,
|
RemovedFromGameMessage_RemovedFromGameReason_gameIsFull = 2,
|
||||||
RemovedFromGameMessage_RemovedFromGameReason_gameIsRunning = 3,
|
RemovedFromGameMessage_RemovedFromGameReason_gameIsRunning = 3,
|
||||||
RemovedFromGameMessage_RemovedFromGameReason_gameTimeout = 4,
|
RemovedFromGameMessage_RemovedFromGameReason_gameTimeout = 4,
|
||||||
RemovedFromGameMessage_RemovedFromGameReason_removedStartFailed = 5
|
RemovedFromGameMessage_RemovedFromGameReason_removedStartFailed = 5,
|
||||||
|
RemovedFromGameMessage_RemovedFromGameReason_gameClosed = 6
|
||||||
};
|
};
|
||||||
bool RemovedFromGameMessage_RemovedFromGameReason_IsValid(int value);
|
bool RemovedFromGameMessage_RemovedFromGameReason_IsValid(int value);
|
||||||
const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage_RemovedFromGameReason_RemovedFromGameReason_MIN = RemovedFromGameMessage_RemovedFromGameReason_removedOnRequest;
|
const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage_RemovedFromGameReason_RemovedFromGameReason_MIN = RemovedFromGameMessage_RemovedFromGameReason_removedOnRequest;
|
||||||
const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage_RemovedFromGameReason_RemovedFromGameReason_MAX = RemovedFromGameMessage_RemovedFromGameReason_removedStartFailed;
|
const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage_RemovedFromGameReason_RemovedFromGameReason_MAX = RemovedFromGameMessage_RemovedFromGameReason_gameClosed;
|
||||||
const int RemovedFromGameMessage_RemovedFromGameReason_RemovedFromGameReason_ARRAYSIZE = RemovedFromGameMessage_RemovedFromGameReason_RemovedFromGameReason_MAX + 1;
|
const int RemovedFromGameMessage_RemovedFromGameReason_RemovedFromGameReason_ARRAYSIZE = RemovedFromGameMessage_RemovedFromGameReason_RemovedFromGameReason_MAX + 1;
|
||||||
|
|
||||||
enum RejectGameInvitationMessage_RejectGameInvReason {
|
enum RejectGameInvitationMessage_RejectGameInvReason {
|
||||||
@@ -4685,6 +4686,7 @@ class RemovedFromGameMessage : public ::google::protobuf::MessageLite {
|
|||||||
static const RemovedFromGameReason gameIsRunning = RemovedFromGameMessage_RemovedFromGameReason_gameIsRunning;
|
static const RemovedFromGameReason gameIsRunning = RemovedFromGameMessage_RemovedFromGameReason_gameIsRunning;
|
||||||
static const RemovedFromGameReason gameTimeout = RemovedFromGameMessage_RemovedFromGameReason_gameTimeout;
|
static const RemovedFromGameReason gameTimeout = RemovedFromGameMessage_RemovedFromGameReason_gameTimeout;
|
||||||
static const RemovedFromGameReason removedStartFailed = RemovedFromGameMessage_RemovedFromGameReason_removedStartFailed;
|
static const RemovedFromGameReason removedStartFailed = RemovedFromGameMessage_RemovedFromGameReason_removedStartFailed;
|
||||||
|
static const RemovedFromGameReason gameClosed = RemovedFromGameMessage_RemovedFromGameReason_gameClosed;
|
||||||
static inline bool RemovedFromGameReason_IsValid(int value) {
|
static inline bool RemovedFromGameReason_IsValid(int value) {
|
||||||
return RemovedFromGameMessage_RemovedFromGameReason_IsValid(value);
|
return RemovedFromGameMessage_RemovedFromGameReason_IsValid(value);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21967,6 +21967,10 @@ public final class ProtoBuf {
|
|||||||
* <code>removedStartFailed = 5;</code>
|
* <code>removedStartFailed = 5;</code>
|
||||||
*/
|
*/
|
||||||
removedStartFailed(5, 5),
|
removedStartFailed(5, 5),
|
||||||
|
/**
|
||||||
|
* <code>gameClosed = 6;</code>
|
||||||
|
*/
|
||||||
|
gameClosed(6, 6),
|
||||||
;
|
;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -21997,6 +22001,10 @@ public final class ProtoBuf {
|
|||||||
* <code>removedStartFailed = 5;</code>
|
* <code>removedStartFailed = 5;</code>
|
||||||
*/
|
*/
|
||||||
public static final int removedStartFailed_VALUE = 5;
|
public static final int removedStartFailed_VALUE = 5;
|
||||||
|
/**
|
||||||
|
* <code>gameClosed = 6;</code>
|
||||||
|
*/
|
||||||
|
public static final int gameClosed_VALUE = 6;
|
||||||
|
|
||||||
|
|
||||||
public final int getNumber() { return value; }
|
public final int getNumber() { return value; }
|
||||||
@@ -22009,6 +22017,7 @@ public final class ProtoBuf {
|
|||||||
case 3: return gameIsRunning;
|
case 3: return gameIsRunning;
|
||||||
case 4: return gameTimeout;
|
case 4: return gameTimeout;
|
||||||
case 5: return removedStartFailed;
|
case 5: return removedStartFailed;
|
||||||
|
case 6: return gameClosed;
|
||||||
default: return null;
|
default: return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user