The subscribe/unsubscribe lobby messages system has been integrated in the client.
This commit is contained in:
@@ -206,6 +206,7 @@ void gameLobbyDialogImpl::refresh(int actionID) {
|
||||
|
||||
if (actionID == MSG_NET_GAME_CLIENT_START)
|
||||
{
|
||||
treeWidget_GameList->clear();
|
||||
this->accept();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1017,9 +1017,8 @@ ClientStateSynchronizeStart::Process(ClientThread &client)
|
||||
boost::shared_ptr<NetPacket> startAck(new NetPacketStartEventAck);
|
||||
client.GetSender().Send(client.GetContext().GetSessionData(), startAck);
|
||||
// Unsubscribe lobby messages.
|
||||
// TODO
|
||||
//boost::shared_ptr<NetPacket> unsubscr(new NetPacketUnsubscribeGameList);
|
||||
//client.GetSender().Send(client.GetContext().GetSessionData(), unsubscr);
|
||||
boost::shared_ptr<NetPacket> unsubscr(new NetPacketUnsubscribeGameList);
|
||||
client.GetSender().Send(client.GetContext().GetSessionData(), unsubscr);
|
||||
|
||||
client.SetState(ClientStateWaitStart::Instance());
|
||||
}
|
||||
@@ -1150,6 +1149,12 @@ 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);
|
||||
// Show Lobby dialog.
|
||||
client.GetCallback().SignalNetClientWaitDialog();
|
||||
client.SetState(ClientStateWaitGame::Instance());
|
||||
retVal = MSG_NET_GAME_CLIENT_END;
|
||||
|
||||
@@ -981,6 +981,18 @@ ServerLobbyThread::InternalResubscribeMsg(SessionWrapper session)
|
||||
{
|
||||
session.sessionData->SetWantsLobbyMsg();
|
||||
SendGameList(session.sessionData);
|
||||
// Send new statistics information.
|
||||
boost::shared_ptr<NetPacket> packet(new NetPacketStatisticsChanged);
|
||||
NetPacketStatisticsChanged::Data statData;
|
||||
statData.stats.numberOfPlayersOnServer = m_sessionManager.GetRawSessionCount() + m_gameSessionManager.GetRawSessionCount();
|
||||
try {
|
||||
static_cast<NetPacketStatisticsChanged *>(packet.get())->SetData(statData);
|
||||
|
||||
GetSender().Send(session.sessionData, packet);
|
||||
} catch (const NetException &)
|
||||
{
|
||||
// Ignore errors for now.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user