1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-24 22:14:36 +02:00

Revert "multiplayer load changes"

This reverts commit 368d2c8836cc6e3b5af9cf71e892bf4515f26bda.
This commit is contained in:
Patrick Simmons 2014-10-19 22:13:10 -04:00
parent 99a63c4bbd
commit 3685e96042
2 changed files with 64 additions and 90 deletions

View File

@ -247,8 +247,6 @@ void CClient::loadGame(const std::string & fname, const bool server, const std::
serv = sh.justConnectToServer(ipaddr,port=="" ? "3030" : port);
CStopWatch tmh;
if(server)
{
try
{
std::string clientSaveName = *CResourceHandler::get("local")->getResourceName(ResourceID(fname, EResType::CLIENT_SAVEGAME));
@ -290,24 +288,9 @@ void CClient::loadGame(const std::string & fname, const bool server, const std::
logGlobal->errorStream() << "Cannot load game " << fname << ". Error: " << e.what();
throw; //obviously we cannot continue here
}
}
if(server)
{
serv = sh.connectToServer();
(*serv) << *this;
}
else
{
(*serv) >> *this;
const_cast<CGameInfo*>(CGI)->mh = new CMapHandler();
CGI->mh->map = gs->map;
logNetwork->infoStream() <<"Creating mapHandler: "<<tmh.getDiff();
CGI->mh->init();
pathInfo = make_unique<CPathsInfo>(getMapSize());
logNetwork->infoStream() <<"Initializing mapHandler (together): "<<tmh.getDiff();
}
if(player_==-1)
player_ = player->getNum();
@ -330,13 +313,13 @@ void CClient::loadGame(const std::string & fname, const bool server, const std::
logNetwork->infoStream() << "Server opened savegame properly.";
}
std::set<PlayerColor> clientPlayers;
if(server)
{
*serv << ui32(gs->scenarioOps->playerInfos.size()+2-loadNumPlayers); //number of players + neutral
for(auto & elem : gs->scenarioOps->playerInfos)
if(!std::count(humanplayerindices.begin(),humanplayerindices.end(),elem.first.getNum()) || elem.first==player)
{
clientPlayers.insert(elem.first);
*serv << ui8(elem.first.getNum()); //players
if(elem.first!=player)
{
auto AiToGive = aiNameForPlayer(elem.second, false);
@ -348,21 +331,20 @@ void CClient::loadGame(const std::string & fname, const bool server, const std::
installNewPlayerInterface(make_shared<CPlayerInterface>(*player),*player);
}
}
clientPlayers.insert(PlayerColor::NEUTRAL);
*serv << ui8(PlayerColor::NEUTRAL.getNum());
}
else
{
clientPlayers.insert(*player);
*serv << ui32(1);
*serv << ui8(player->getNum());
installNewPlayerInterface(make_shared<CPlayerInterface>(*player),*player);
}
serv->enableStackSendingByID();
serv->disableSmartPointerSerialization();
(*serv) << clientPlayers;
logNetwork->infoStream() <<"Sent info to server: "<<tmh.getDiff();
serv->addStdVecItems(gs);
serv->enableStackSendingByID();
serv->disableSmartPointerSerialization();
loadNeutralBattleAI();

View File

@ -32,12 +32,6 @@
#include "../lib/UnlockGuard.h"
#include "../client/Client.h"
extern template void CClient::serialize<COSer<CSaveFile>>( COSer<CSaveFile> &h, const int version );
extern template void CClient::serialize<CISer<CConnection>>( CISer<CConnection> &h, const int version );
extern template void CClient::serialize<COSer<CConnection>>( COSer<CConnection> &h, const int version );
#if defined(__GNUC__) && !defined (__MINGW32__) && !defined(VCMI_ANDROID)
#include <execinfo.h>
#endif
@ -497,13 +491,11 @@ void CVCMIServer::loadGame()
c << ui8(0);
CConnection* cc; //tcp::socket * ss;
CClient client_in;
for(int i=0; i<clients; i++)
{
if(!i)
{
cc = &c;
(*cc) >> client_in;
}
else
{
@ -516,7 +508,7 @@ void CVCMIServer::loadGame()
continue;
}
cc = new CConnection(s,NAME);
(*cc) << client_in;
cc->addStdVecItems(gh.gs);
}
gh.conns.insert(cc);
}