give an error when a local save isn't saved properly, instead of exiting and pretending it worked

This commit is contained in:
jacob1 2013-07-15 14:59:15 -04:00
parent c2a9b5c6f6
commit f4432b4759
4 changed files with 25 additions and 13 deletions

View File

@ -515,8 +515,9 @@ int Client::MakeDirectory(const char * dirName)
#endif #endif
} }
void Client::WriteFile(std::vector<unsigned char> fileData, std::string filename) bool Client::WriteFile(std::vector<unsigned char> fileData, std::string filename)
{ {
bool saveError = false;
try try
{ {
std::ofstream fileStream; std::ofstream fileStream;
@ -526,12 +527,15 @@ void Client::WriteFile(std::vector<unsigned char> fileData, std::string filename
fileStream.write((char*)&fileData[0], fileData.size()); fileStream.write((char*)&fileData[0], fileData.size());
fileStream.close(); fileStream.close();
} }
else
saveError = true;
} }
catch (std::exception & e) catch (std::exception & e)
{ {
std::cerr << "WriteFile:" << e.what() << std::endl; std::cerr << "WriteFile:" << e.what() << std::endl;
throw; saveError = true;
} }
return saveError;
} }
bool Client::FileExists(std::string filename) bool Client::FileExists(std::string filename)
@ -554,8 +558,9 @@ bool Client::FileExists(std::string filename)
return exists; return exists;
} }
void Client::WriteFile(std::vector<char> fileData, std::string filename) bool Client::WriteFile(std::vector<char> fileData, std::string filename)
{ {
bool saveError = false;
try try
{ {
std::ofstream fileStream; std::ofstream fileStream;
@ -565,12 +570,15 @@ void Client::WriteFile(std::vector<char> fileData, std::string filename)
fileStream.write(&fileData[0], fileData.size()); fileStream.write(&fileData[0], fileData.size());
fileStream.close(); fileStream.close();
} }
else
saveError = true;
} }
catch (std::exception & e) catch (std::exception & e)
{ {
std::cerr << "WriteFile:" << e.what() << std::endl; std::cerr << "WriteFile:" << e.what() << std::endl;
throw; saveError = true;
} }
return saveError;
} }
std::vector<unsigned char> Client::ReadFile(std::string filename) std::vector<unsigned char> Client::ReadFile(std::string filename)

View File

@ -111,8 +111,8 @@ public:
void SetProxy(std::string proxy); void SetProxy(std::string proxy);
int MakeDirectory(const char * dirname); int MakeDirectory(const char * dirname);
void WriteFile(std::vector<unsigned char> fileData, std::string filename); bool WriteFile(std::vector<unsigned char> fileData, std::string filename);
void WriteFile(std::vector<char> fileData, std::string filename); bool WriteFile(std::vector<char> fileData, std::string filename);
bool FileExists(std::string filename); bool FileExists(std::string filename);
void AddListener(ClientListener * listener); void AddListener(ClientListener * listener);

View File

@ -1059,7 +1059,8 @@ void GameController::OpenLocalSaveWindow(bool asCurrent)
else if (gameModel->GetSaveFile()) else if (gameModel->GetSaveFile())
{ {
Client::Ref().MakeDirectory(LOCAL_SAVE_DIR); Client::Ref().MakeDirectory(LOCAL_SAVE_DIR);
Client::Ref().WriteFile(gameSave->Serialise(), gameModel->GetSaveFile()->GetName()); if (Client::Ref().WriteFile(gameSave->Serialise(), gameModel->GetSaveFile()->GetName()))
new ErrorMessage("Error", "Unable to write save file.");
} }
} }
} }

View File

@ -81,7 +81,6 @@ void LocalSaveActivity::Save()
if (result == ConfirmPrompt::ResultOkay) if (result == ConfirmPrompt::ResultOkay)
{ {
a->saveWrite(filename); a->saveWrite(filename);
a->Exit();
} }
} }
virtual ~FileOverwriteConfirmation() { } virtual ~FileOverwriteConfirmation() { }
@ -99,7 +98,6 @@ void LocalSaveActivity::Save()
else else
{ {
saveWrite(finalFilename); saveWrite(finalFilename);
Exit();
} }
} }
else else
@ -111,8 +109,13 @@ void LocalSaveActivity::Save()
void LocalSaveActivity::saveWrite(std::string finalFilename) void LocalSaveActivity::saveWrite(std::string finalFilename)
{ {
Client::Ref().MakeDirectory(LOCAL_SAVE_DIR); Client::Ref().MakeDirectory(LOCAL_SAVE_DIR);
Client::Ref().WriteFile(save.GetGameSave()->Serialise(), finalFilename); if (Client::Ref().WriteFile(save.GetGameSave()->Serialise(), finalFilename))
callback->FileSaved(&save); new ErrorMessage("Error", "Unable to write save file.");
else
{
callback->FileSaved(&save);
Exit();
}
} }
void LocalSaveActivity::OnDraw() void LocalSaveActivity::OnDraw()