1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-27 22:49:25 +02:00

- fixed save games issues (#1044)

- hopefully some speedup for filesystem loading (#1048)
This commit is contained in:
Ivan Savenko
2012-08-07 11:28:52 +00:00
parent 708ad6ac7f
commit 8040a81eec
17 changed files with 268 additions and 283 deletions

View File

@@ -1,5 +1,7 @@
#include "StdInc.h"
#include "../lib/Filesystem/CResourceLoader.h"
#include "../lib/Filesystem/CFileInfo.h"
#include "../lib/int3.h"
#include "../lib/CCampaignHandler.h"
#include "../lib/StartInfo.h"
@@ -2247,12 +2249,16 @@ void CGameHandler::sendAndApply( NewStructures * info )
checkLossVictory(getTown(info->tid)->tempOwner);
}
void CGameHandler::save( const std::string &fname )
void CGameHandler::save(const std::string & filename )
{
tlog1 << "Saving to " << filename << "\n";
CFileInfo info(filename);
CResourceHandler::get()->createResource(info.getStem() + ".vlgm1");
CResourceHandler::get()->createResource(info.getStem() + ".vsgm1");
{
tlog0 << "Ordering clients to serialize...\n";
SaveGame sg(fname);
SaveGame sg(info.getStem() + ".vcgm1");
sendToAllClients(&sg);
}
@@ -2260,14 +2266,14 @@ void CGameHandler::save( const std::string &fname )
{
{
tlog0 << "Serializing game info...\n";
CSaveFile save(GVCMIDirs.UserPath + "/Games/" + fname + ".vlgm1");
CSaveFile save(CResourceHandler::get()->getResourceName(ResourceID(info.getStem(), EResType::LIB_SAVEGAME)));
char hlp[8] = "VCMISVG";
save << hlp << static_cast<CMapHeader&>(*gs->map) << gs->scenarioOps << *VLC << gs;
}
{
tlog0 << "Serializing server info...\n";
CSaveFile save(GVCMIDirs.UserPath + "/Games/" + fname + ".vsgm1");
CSaveFile save(CResourceHandler::get()->getResourceName(ResourceID(info.getStem(), EResType::SERVER_SAVEGAME)));
save << *this;
}
tlog0 << "Game has been successfully saved!\n";