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