本文整理汇总了C++中Savegame::Load方法的典型用法代码示例。如果您正苦于以下问题:C++ Savegame::Load方法的具体用法?C++ Savegame::Load怎么用?C++ Savegame::Load使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Savegame
的用法示例。
在下文中一共展示了Savegame::Load方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: RefreshTable
void iwSaveLoad::RefreshTable()
{
static bool loadedOnce = false;
GetCtrl<ctrlTable>(0)->DeleteAllItems();
std::vector<std::string> saveFiles = ListDir(GetFilePath(FILE_PATHS[85]), "sav");
for(std::vector<std::string>::iterator it = saveFiles.begin(); it != saveFiles.end(); ++it)
{
Savegame save;
// Datei öffnen
if(!save.Load(*it, false, false))
{
// Show errors only first time this is loaded
if(!loadedOnce)
{
LOG.write(_("Invalid Savegame %1%! Reason: %2%\n"))
% *it
% (save.GetLastErrorMsg().empty() ? _("Unknown") : save.GetLastErrorMsg());
}
continue;
}
// Zeitstring erstellen
std::string dateStr = TIME.FormatTime("%d.%m.%Y - %H:%i", &save.save_time);
// Dateiname noch rausextrahieren aus dem Pfad
bfs::path path = *it;
if(!path.has_filename())
continue;
bfs::path fileName = path.filename();
// ".sav" am Ende weg
RTTR_Assert(fileName.has_extension());
fileName.replace_extension();
std::string fileNameStr = cvWideStringToUTF8(fileName.wstring());
std::string startGF = helpers::toString(save.start_gf);
// Und das Zeug zur Tabelle hinzufügen
GetCtrl<ctrlTable>(0)->AddRow(0, fileNameStr.c_str(), save.mapName.c_str(), dateStr.c_str(), startGF.c_str(), it->c_str());
}
// Nach Zeit Sortieren
bool bFalse = false;
GetCtrl<ctrlTable>(0)->SortRows(2, &bFalse);
loadedOnce = true;
}
示例2: RefreshTable
void iwSaveLoad::RefreshTable()
{
static bool loadedOnce = false;
GetCtrl<ctrlTable>(0)->DeleteAllItems();
std::vector<std::string> saveFiles = ListDir(RTTRCONFIG.ExpandPath(FILE_PATHS[85]), "sav");
for(auto& saveFile : saveFiles)
{
Savegame save;
// Datei öffnen
if(!save.Load(saveFile, false, false))
{
// Show errors only first time this is loaded
if(!loadedOnce)
{
LOG.write(_("Invalid Savegame %1%! Reason: %2%\n")) % saveFile
% (save.GetLastErrorMsg().empty() ? _("Unknown") : save.GetLastErrorMsg());
}
continue;
}
// Zeitstring erstellen
std::string dateStr = s25util::Time::FormatTime("%d.%m.%Y - %H:%i", save.GetSaveTime());
// Dateiname noch rausextrahieren aus dem Pfad
bfs::path path = saveFile;
if(!path.has_filename())
continue;
// Just filename w/o extension
bfs::path fileName = path.stem();
std::string startGF = helpers::toString(save.start_gf);
// Und das Zeug zur Tabelle hinzufügen
GetCtrl<ctrlTable>(0)->AddRow(0, fileName.string().c_str(), save.GetMapName().c_str(), dateStr.c_str(), startGF.c_str(),
saveFile.c_str());
}
// Nach Zeit Sortieren
bool bFalse = false;
GetCtrl<ctrlTable>(0)->SortRows(2, &bFalse);
loadedOnce = true;
}
示例3: Msg_ButtonClick
void dskSinglePlayer::Msg_ButtonClick(const unsigned int ctrl_id)
{
switch(ctrl_id)
{
case 3: // "Letztes Spiel fortsetzen"
{
std::list<std::string> liste;
std::string tmp = GetFilePath(FILE_PATHS[85]);
tmp += "*.sav";
ListDir(tmp.c_str(), false, NULL, NULL, &liste);
std::string path;
unser_time_t recent = 0;
for(std::list<std::string>::iterator it = liste.begin(); it != liste.end(); ++it)
{
Savegame save;
// Datei öffnen
if (!save.Load(*it, false, false))
continue;
if (save.save_time > recent)
{
recent = save.save_time;
path = *it;
}
}
if (recent != 0)
{
// Dateiname noch rausextrahieren aus dem Pfad
size_t pos = path.find_last_of('/');
if(pos == std::string::npos)
return;
std::string extracted_filename = path.substr(pos + 1);
// ".sav" am Ende weg
assert(extracted_filename.length() >= 4);
extracted_filename.erase(extracted_filename.length() - 4);
// Server info
CreateServerInfo csi;
csi.gamename = extracted_filename;
csi.password = "localgame";
csi.port = 3665;
csi.type = NP_LOCAL;
csi.ipv6 = false;
csi.use_upnp = false;
WindowManager::inst().Switch(new dskSelectMap(csi));
if(GAMESERVER.TryToStart(csi, path, MAPTYPE_SAVEGAME))
{
WindowManager::inst().Draw();
WindowManager::inst().Show(new iwPleaseWait);
}
else
{
WindowManager::inst().Show(new iwMsgbox(_("Error"), _("The specified file couldn't be loaded!"), this, MSB_OK, MSB_EXCLAMATIONRED));
}
}
else
{
WindowManager::inst().Show(new iwMsgbox(_("Error"), _("The specified file couldn't be loaded!"), this, MSB_OK, MSB_EXCLAMATIONRED));
}
liste.clear();
} break;
case 4: // "Replay abspielen"
{
WindowManager::inst().Show(new iwPlayReplay);
} break;
case 5: // "Kampagne"
{
/// @todo Hier dann Auswahl zwischen Kampagne(n) und "Freies Spiel"
WindowManager::inst().Show(new iwMsgbox(_("Not available"), _("Please use \'Unlimited Play\' to create a Singleplayer game."), this, MSB_OK, MSB_EXCLAMATIONGREEN));
} break;
case 6: // "Freies Spiel"
{
PrepareSinglePlayerServer();
} break;
case 7: // "Spiel laden"
{
PrepareLoadGame();
} break;
case 8: // "Zurück"
{
WindowManager::inst().Switch(new dskMainMenu);
} break;
}
}
示例4: Msg_ButtonClick
void dskSinglePlayer::Msg_ButtonClick(const unsigned int ctrl_id)
{
switch(ctrl_id)
{
case 3: // "Letztes Spiel fortsetzen"
{
std::vector<std::string> savFiles = ListDir(GetFilePath(FILE_PATHS[85]), "sav");
bfs::path path;
unser_time_t recent = 0;
for(std::vector<std::string>::iterator it = savFiles.begin(); it != savFiles.end(); ++it)
{
Savegame save;
// Datei öffnen
if (!save.Load(*it, false, false))
continue;
if (save.save_time > recent)
{
recent = save.save_time;
path = *it;
}
}
if (recent != 0)
{
// Dateiname noch rausextrahieren aus dem Pfad
if(!path.has_filename())
return;
bfs::path fileName = path.filename();
// ".sav" am Ende weg
RTTR_Assert(fileName.has_extension());
fileName.replace_extension();
// Server info
CreateServerInfo csi;
csi.gamename = fileName.string();
csi.password = "localgame";
csi.port = 3665;
csi.type = ServerType::LOCAL;
csi.ipv6 = false;
csi.use_upnp = false;
WINDOWMANAGER.Switch(new dskSelectMap(csi));
if(GAMESERVER.TryToStart(csi, path.string(), MAPTYPE_SAVEGAME))
WINDOWMANAGER.ShowAfterSwitch(new iwPleaseWait);
else
WINDOWMANAGER.Show(new iwMsgbox(_("Error"), _("The specified file couldn't be loaded!"), NULL, MSB_OK, MSB_EXCLAMATIONRED));
}
else
WINDOWMANAGER.Show(new iwMsgbox(_("Error"), _("The specified file couldn't be loaded!"), NULL, MSB_OK, MSB_EXCLAMATIONRED));
} break;
case 4: // "Replay abspielen"
{
WINDOWMANAGER.Show(new iwPlayReplay);
} break;
case 5: // "Kampagne"
{
/// @todo Hier dann Auswahl zwischen Kampagne(n) und "Freies Spiel"
WINDOWMANAGER.Show(new iwMsgbox(_("Not available"), _("Please use \'Unlimited Play\' to create a Singleplayer game."), this, MSB_OK, MSB_EXCLAMATIONGREEN));
} break;
case 6: // "Freies Spiel"
{
PrepareSinglePlayerServer();
} break;
case 7: // "Spiel laden"
{
PrepareLoadGame();
} break;
case 8: // "Zurück"
{
WINDOWMANAGER.Switch(new dskMainMenu);
} break;
}
}