Fixed lobby update after leaving a game.

This commit is contained in:
lotodore
2008-05-16 16:46:45 +00:00
parent 626b778c77
commit 269eab4774
4 changed files with 27 additions and 7 deletions
+5 -6
View File
@@ -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());