From 3c8f200dd83d18839c8205ed630a104d67e0807d Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sun, 22 Jan 2012 17:46:40 +0000 Subject: Implemented autosave for single player games. --- src/game/base/game.cc | 61 ++++++++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 28 deletions(-) (limited to 'src/game/base/game.cc') diff --git a/src/game/base/game.cc b/src/game/base/game.cc index fc87403..0610377 100644 --- a/src/game/base/game.cc +++ b/src/game/base/game.cc @@ -1742,32 +1742,31 @@ void Game::player_load(core::Player *player) if (player->control()) return; - - if (!core::server()->mode() == core::GameServer::MultiPlayer) { - return; - } - - std::string guid(player->guid().str()); - std::string directory(guid.substr(0,4)); - - std::string filename; - filename.append("players"); - filename += '/'; - filename.append(directory); - filename += '/'; - filename.append(guid); - filesystem::IniFile inifile; - inifile.open(filename); - if (!inifile.is_open()) { - return; + if (!core::server()->mode() == core::GameServer::MultiPlayer) { + + std::string guid(player->guid().str()); + std::string directory(guid.substr(0,4)); + + std::string filename; + filename.append("players"); + filename += '/'; + filename.append(directory); + filename += '/'; + filename.append(guid); + + filesystem::IniFile inifile; + inifile.open(filename); + if (!inifile.is_open()) { + return; + } + + con_debug << "player " << player->id() << ": " << "loading data" << std::endl; + + SaveGame::load_game(player, inifile); + + inifile.close(); } - - con_debug << "player " << player->id() << ": " << "loading data" << std::endl; - - SaveGame::load_game(player, inifile); - - inifile.close(); } void Game::game_save(core::Player *player, std::ostream & os) @@ -1784,14 +1783,20 @@ void Game::game_save(core::Player *player, std::ostream & os) void Game::player_save(core::Player *player) { - if (!player->guid().is_valid()) { - return;} - if ((!player->control()) || (player->control()->moduletype() != ship_enttype)) { return; } - if (core::server()->mode() == core::GameServer::MultiPlayer) { + if (core::server()->mode() == core::GameServer::SinglePlayer) { + std::string command("savegame autosave AUTOSAVE"); + core::CommandBuffer::exec(command); + + } else if (core::server()->mode() == core::GameServer::MultiPlayer) { + + if (!player->guid().is_valid()) { + return; + } + con_debug << "player " << player->id() << ": " << "saving data" << std::endl; std::string guid(player->guid().str()); -- cgit v1.2.3