MCPcopy Create free account
hub / github.com/OpenXcom/OpenXcom / getSaveInfo

Method getSaveInfo

src/Savegame/SavedGame.cpp:214–281  ·  view source on GitHub ↗

* Gets the info of a specific save file. * @param file Save filename. * @param lang Loaded language. */

Source from the content-addressed store, hash-verified

212 * @param lang Loaded language.
213 */
214SaveInfo SavedGame::getSaveInfo(const std::string &file, Language *lang)
215{
216 std::string fullname = Options::getUserFolder() + file;
217 YAML::Node doc = YAML::LoadFile(fullname);
218 SaveInfo save;
219
220 save.fileName = file;
221
222 if (save.fileName == QUICKSAVE)
223 {
224 save.displayName = lang->getString("STR_QUICK_SAVE_SLOT");
225 save.reserved = true;
226 }
227 else if (save.fileName == AUTOSAVE_GEOSCAPE)
228 {
229 save.displayName = lang->getString("STR_AUTO_SAVE_GEOSCAPE_SLOT");
230 save.reserved = true;
231 }
232 else if (save.fileName == AUTOSAVE_BATTLESCAPE)
233 {
234 save.displayName = lang->getString("STR_AUTO_SAVE_BATTLESCAPE_SLOT");
235 save.reserved = true;
236 }
237 else
238 {
239 if (doc["name"])
240 {
241 save.displayName = Language::utf8ToWstr(doc["name"].as<std::string>());
242 }
243 else
244 {
245 save.displayName = Language::fsToWstr(CrossPlatform::noExt(file));
246 }
247 save.reserved = false;
248 }
249
250 save.timestamp = CrossPlatform::getDateModified(fullname);
251 std::pair<std::wstring, std::wstring> str = CrossPlatform::timeToString(save.timestamp);
252 save.isoDate = str.first;
253 save.isoTime = str.second;
254
255 std::wostringstream details;
256 if (doc["turn"])
257 {
258 details << lang->getString("STR_BATTLESCAPE") << L": " << lang->getString(doc["mission"].as<std::string>()) << L", ";
259 details << lang->getString("STR_TURN").arg(doc["turn"].as<int>());
260 }
261 else
262 {
263 GameTime time = GameTime(6, 1, 1, 1999, 12, 0, 0);
264 time.load(doc["time"]);
265 details << lang->getString("STR_GEOSCAPE") << L": ";
266 details << time.getDayString(lang) << L" " << lang->getString(time.getMonthString()) << L" " << time.getYear() << L", ";
267 details << time.getHour() << L":" << std::setfill(L'0') << std::setw(2) << time.getMinute();
268 }
269 if (doc["ironman"].as<bool>(false))
270 {
271 details << L" (" << lang->getString("STR_IRONMAN") << L")";

Callers

nothing calls this directly

Calls 13

getUserFolderFunction · 0.85
noExtFunction · 0.85
getDateModifiedFunction · 0.85
timeToStringFunction · 0.85
getDayStringMethod · 0.80
getMonthStringMethod · 0.80
getYearMethod · 0.80
getHourMethod · 0.80
getMinuteMethod · 0.80
GameTimeClass · 0.70
argMethod · 0.60
getStringMethod · 0.45

Tested by

no test coverage detected