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; m_MapDetailsPresent = true;
(void)MapSize; (void)MapSize;
str_copy(m_aPreviousMapDetailsName, m_aMapDetailsName);
str_copy(m_aMapDetailsName, pMap); str_copy(m_aMapDetailsName, pMap);
m_MapDetailsSha256 = *pMapSha256; m_MapDetailsSha256 = *pMapSha256;
m_MapDetailsCrc = MapCrc; m_MapDetailsCrc = MapCrc;
@ -1525,6 +1526,12 @@ void CClient::ProcessServerPacket(CNetChunk *pPacket, int Conn, bool Dummy)
if(m_DummyConnected) 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); 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) else if(Conn == CONN_MAIN && (pPacket->m_Flags & NET_CHUNKFLAG_VITAL) != 0 && Msg == NETMSG_CON_READY)
{ {
GameClient()->OnConnected(); GameClient()->OnConnected();
if(m_DummyReconnectOnLoad)
{
m_DummyReconnectOnLoad = false;
DummyConnect();
}
} }
else if(Conn == CONN_DUMMY && Msg == NETMSG_CON_READY) 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; m_LastDummy = (bool)g_Config.m_ClDummy;
} }

View file

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