The subscribe/unsubscribe lobby messages system has been integrated in the client.

This commit is contained in:
lotodore
2008-05-12 10:50:19 +00:00
parent a4cd9aa927
commit d1e0e5e30d
3 changed files with 21 additions and 3 deletions
@@ -206,6 +206,7 @@ void gameLobbyDialogImpl::refresh(int actionID) {
if (actionID == MSG_NET_GAME_CLIENT_START)
{
treeWidget_GameList->clear();
this->accept();
}
}
+8 -3
View File
@@ -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;
+12
View File
@@ -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.
}
}
}