Fixed leaving a game which has not yet been started.

This commit is contained in:
lotodore
2008-05-16 20:42:46 +00:00
parent d4fbe6f23b
commit d4350fa806
3 changed files with 23 additions and 9 deletions
+2 -1
View File
@@ -20,7 +20,8 @@
#include <net/clientcontext.h>
ClientContext::ClientContext()
: m_protocol(0), m_addrFamily(AF_INET), m_useServerList(false), m_serverPort(0)
: m_protocol(0), m_addrFamily(AF_INET), m_useServerList(false), m_serverPort(0),
m_hasSubscribedLobbyMsg(true)
{
bzero(&m_clientSockaddr, sizeof(m_clientSockaddr));
}
+16 -8
View File
@@ -591,19 +591,27 @@ ClientThread::SetUnknownAvatar(unsigned playerId)
void
ClientThread::UnsubscribeLobbyMsg()
{
// Send unsubscribe request.
boost::shared_ptr<NetPacket> unsubscr(new NetPacketUnsubscribeGameList);
GetSender().Send(GetContext().GetSessionData(), unsubscr);
if (GetContext().GetSubscribeLobbyMsg())
{
// Send unsubscribe request.
boost::shared_ptr<NetPacket> unsubscr(new NetPacketUnsubscribeGameList);
GetSender().Send(GetContext().GetSessionData(), unsubscr);
GetContext().SetSubscribeLobbyMsg(false);
}
}
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);
if (!GetContext().GetSubscribeLobbyMsg())
{
// Clear game info map as it is outdated.
ClearGameInfoMap();
// Send resubscribe request.
boost::shared_ptr<NetPacket> resubscr(new NetPacketResubscribeGameList);
GetSender().Send(GetContext().GetSessionData(), resubscr);
GetContext().SetSubscribeLobbyMsg(true);
}
}
const ClientContext &