Fix dummy disconnecting on hot reload

This commit is contained in:
KebsCS 2024-09-06 22:05:37 +02:00
parent 0948a53648
commit 36542327b0
No known key found for this signature in database
GPG key ID: 5A8C0761A75E7309
2 changed files with 25 additions and 0 deletions

View file

@ -1470,6 +1470,7 @@ void CClient::ProcessServerPacket(CNetChunk *pPacket, int Conn, bool Dummy)
m_MapDetailsPresent = true;
(void)MapSize;
str_copy(m_aPreviousMapDetailsName, m_aMapDetailsName);
str_copy(m_aMapDetailsName, pMap);
m_MapDetailsSha256 = *pMapSha256;
m_MapDetailsCrc = MapCrc;
@ -1525,6 +1526,12 @@ void CClient::ProcessServerPacket(CNetChunk *pPacket, int Conn, bool Dummy)
if(m_DummyConnected)
{
if(str_comp(m_aMapDetailsName, m_aPreviousMapDetailsName) == 0)
{
m_DummyReconnectOnLoad = true;
m_DummySwapOnReconnect = g_Config.m_ClDummy == 1 ? false : true;
}
DummyDisconnect(0);
}
@ -1655,6 +1662,11 @@ void CClient::ProcessServerPacket(CNetChunk *pPacket, int Conn, bool Dummy)
else if(Conn == CONN_MAIN && (pPacket->m_Flags & NET_CHUNKFLAG_VITAL) != 0 && Msg == NETMSG_CON_READY)
{
GameClient()->OnConnected();
if(m_DummyReconnectOnLoad)
{
m_DummyReconnectOnLoad = false;
DummyConnect();
}
}
else if(Conn == CONN_DUMMY && Msg == NETMSG_CON_READY)
{
@ -2747,6 +2759,16 @@ void CClient::Update()
}
}
if(m_DummySwapOnReconnect && g_Config.m_ClDummy == 1)
{
m_DummySwapOnReconnect = false;
g_Config.m_ClDummy = 0;
}
else if(!m_DummyConnected && m_DummySwapOnReconnect)
{
m_DummySwapOnReconnect = false;
}
m_LastDummy = (bool)g_Config.m_ClDummy;
}

View file

@ -156,6 +156,7 @@ class CClient : public IClient, public CDemoPlayer::IListener
bool m_MapDetailsPresent = false;
char m_aMapDetailsName[256] = "";
char m_aPreviousMapDetailsName[256] = "";
int m_MapDetailsCrc = 0;
SHA256_DIGEST m_MapDetailsSha256 = SHA256_ZEROED;
char m_aMapDetailsUrl[256] = "";
@ -182,6 +183,8 @@ class CClient : public IClient, public CDemoPlayer::IListener
bool m_DummyConnecting = false;
bool m_DummyConnected = false;
float m_LastDummyConnectTime = 0.0f;
bool m_DummyReconnectOnLoad = false;
bool m_DummySwapOnReconnect = false;
// graphs
CGraph m_InputtimeMarginGraph;