mirror of
https://github.com/vcmi/vcmi.git
synced 2025-03-25 21:38:59 +02:00
Reconnection works
This commit is contained in:
parent
16a5414247
commit
722acb2a1d
@ -563,6 +563,7 @@ void CServerHandler::startGameplay(CGameState * gameState)
|
||||
Settings saveUuid = settings.write["server"]["uuid"];
|
||||
saveUuid->String() = uuid;
|
||||
Settings saveNames = settings.write["server"]["names"];
|
||||
saveNames->Vector().clear();
|
||||
for(auto & name : myNames)
|
||||
{
|
||||
JsonNode jsonName;
|
||||
|
@ -353,8 +353,9 @@ void PlayerReinitInterface::applyCl(CClient * cl)
|
||||
plSettings.connectedPlayerIDs.clear();
|
||||
cl->initPlayerEnvironments();
|
||||
cl->initPlayerInterfaces();
|
||||
if(cl->gameState()->currentPlayer == player)
|
||||
callOnlyThatInterface(cl, player, &CGameInterface::yourTurn);
|
||||
auto currentPlayer = cl->gameState()->currentPlayer;
|
||||
callAllInterfaces(cl, &IGameEventsReceiver::playerStartsTurn, currentPlayer);
|
||||
callOnlyThatInterface(cl, currentPlayer, &CGameInterface::yourTurn);
|
||||
}
|
||||
else if(playerConnectionId == CSH->c->connectionID)
|
||||
{
|
||||
|
@ -327,10 +327,23 @@ void CVCMIServer::connectionAccepted(const boost::system::error_code & ec)
|
||||
connections.insert(c);
|
||||
c->handler = std::make_shared<boost::thread>(&CVCMIServer::threadHandleClient, this, c);
|
||||
|
||||
if(!hangingConnections.empty())
|
||||
if(!hangingConnections.empty() && gh)
|
||||
{
|
||||
//TODO: check client uuid
|
||||
logNetwork->info("Reconnection player");
|
||||
c->connectionID = (*hangingConnections.begin())->connectionID;
|
||||
for(auto & playerConnection : gh->connections)
|
||||
{
|
||||
for(auto & existingConnection : playerConnection.second)
|
||||
{
|
||||
if(existingConnection == *hangingConnections.begin())
|
||||
{
|
||||
playerConnection.second.erase(existingConnection);
|
||||
playerConnection.second.insert(c);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
//hangingConnections.clear();
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user