* Gets the info of a specific save file. * @param file Save filename. * @param lang Loaded language. */
| 212 | * @param lang Loaded language. |
| 213 | */ |
| 214 | SaveInfo 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")"; |
nothing calls this directly
no test coverage detected