Fixed lobby update after leaving a game.
This commit is contained in:
@@ -103,6 +103,9 @@ protected:
|
||||
void CompleteTempAvatarData(unsigned playerId);
|
||||
void SetUnknownAvatar(unsigned playerId);
|
||||
|
||||
void UnsubscribeLobbyMsg();
|
||||
void ResubscribeLobbyMsg();
|
||||
|
||||
const ClientContext &GetContext() const;
|
||||
ClientContext &GetContext();
|
||||
|
||||
|
||||
@@ -672,6 +672,9 @@ AbstractClientStateReceiving::Process(ClientThread &client)
|
||||
NetPacketRemovedFromGame::Data removedData;
|
||||
tmpPacket->ToNetPacketRemovedFromGame()->GetData(removedData);
|
||||
client.ClearPlayerDataList();
|
||||
// Resubscribe Lobby messages.
|
||||
client.ResubscribeLobbyMsg();
|
||||
// Show Lobby.
|
||||
client.GetCallback().SignalNetClientWaitDialog();
|
||||
client.GetCallback().SignalNetClientRemovedFromGame(removedData.removeReason);
|
||||
client.SetState(ClientStateWaitJoin::Instance());
|
||||
@@ -1017,8 +1020,7 @@ ClientStateSynchronizeStart::Process(ClientThread &client)
|
||||
boost::shared_ptr<NetPacket> startAck(new NetPacketStartEventAck);
|
||||
client.GetSender().Send(client.GetContext().GetSessionData(), startAck);
|
||||
// Unsubscribe lobby messages.
|
||||
boost::shared_ptr<NetPacket> unsubscr(new NetPacketUnsubscribeGameList);
|
||||
client.GetSender().Send(client.GetContext().GetSessionData(), unsubscr);
|
||||
client.UnsubscribeLobbyMsg();
|
||||
|
||||
client.SetState(ClientStateWaitStart::Instance());
|
||||
}
|
||||
@@ -1149,11 +1151,8 @@ ClientStateWaitHand::InternalProcess(ClientThread &client, boost::shared_ptr<Net
|
||||
if (!tmpPlayer)
|
||||
throw ClientException(__FILE__, __LINE__, ERR_NET_UNKNOWN_PLAYER_ID, 0);
|
||||
client.GetGui().logPlayerWinGame(tmpPlayer->getMyName(), curGame->getMyGameID());
|
||||
// Clear game info map as it is outdated.
|
||||
client.ClearGameInfoMap();
|
||||
// Resubscribe Lobby messages.
|
||||
boost::shared_ptr<NetPacket> resubscr(new NetPacketResubscribeGameList);
|
||||
client.GetSender().Send(client.GetContext().GetSessionData(), resubscr);
|
||||
client.ResubscribeLobbyMsg();
|
||||
// Show Lobby dialog.
|
||||
client.GetCallback().SignalNetClientWaitDialog();
|
||||
client.SetState(ClientStateWaitGame::Instance());
|
||||
|
||||
@@ -588,6 +588,24 @@ ClientThread::SetUnknownAvatar(unsigned playerId)
|
||||
LOG_ERROR("Server reported unknown avatar for player: " << playerId);
|
||||
}
|
||||
|
||||
void
|
||||
ClientThread::UnsubscribeLobbyMsg()
|
||||
{
|
||||
// Send unsubscribe request.
|
||||
boost::shared_ptr<NetPacket> unsubscr(new NetPacketUnsubscribeGameList);
|
||||
GetSender().Send(GetContext().GetSessionData(), unsubscr);
|
||||
}
|
||||
|
||||
void
|
||||
ClientThread::ResubscribeLobbyMsg()
|
||||
{
|
||||
// Clear game info map as it is outdated.
|
||||
ClearGameInfoMap();
|
||||
// Send resubscribe request.
|
||||
boost::shared_ptr<NetPacket> resubscr(new NetPacketResubscribeGameList);
|
||||
GetSender().Send(GetContext().GetSessionData(), resubscr);
|
||||
}
|
||||
|
||||
const ClientContext &
|
||||
ClientThread::GetContext() const
|
||||
{
|
||||
|
||||
@@ -855,7 +855,7 @@ ServerLobbyThread::ResubscribeLobbyMsgLoop()
|
||||
SessionWrapper tmpSession = m_gameSessionManager.GetSessionById(*i);
|
||||
if (!tmpSession.sessionData.get())
|
||||
tmpSession = m_sessionManager.GetSessionById(*i);
|
||||
if (tmpSession.sessionData.get());
|
||||
if (tmpSession.sessionData.get())
|
||||
InternalResubscribeMsg(tmpSession);
|
||||
++i;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user