void SaveLoad_ns::doSaveGame(uint16 slot, const char* name) { Common::OutSaveFile *f = getOutSaveFile(slot); if (f == 0) { Common::String buf = Common::String::format(_("Can't save game in slot %i\n\n"), slot); GUI::MessageDialog dialog(buf); dialog.runModal(); return; } char s[200]; memset(s, 0, sizeof(s)); if (!name || name[0] == '\0') { sprintf(s, "default_%i", slot); } else { strncpy(s, name, 199); } f->writeString(s); f->writeString("\n"); sprintf(s, "%s\n", _vm->_char.getFullName()); f->writeString(s); sprintf(s, "%s\n", g_saveData1); f->writeString(s); sprintf(s, "%d\n", _vm->_char._ani->getX()); f->writeString(s); sprintf(s, "%d\n", _vm->_char._ani->getY()); f->writeString(s); sprintf(s, "%d\n", _vm->_score); f->writeString(s); sprintf(s, "%u\n", g_globalFlags); f->writeString(s); sprintf(s, "%d\n", _vm->_numLocations); f->writeString(s); for (uint16 _si = 0; _si < _vm->_numLocations; _si++) { sprintf(s, "%s\n%u\n", _vm->_locationNames[_si], _vm->_localFlags[_si]); f->writeString(s); } const InventoryItem *item; for (uint16 _si = 0; _si < 30; _si++) { item = _vm->getInventoryItem(_si); sprintf(s, "%u\n%d\n", item->_id, item->_index); f->writeString(s); } delete f; }
void SaveLoad_ns::setPartComplete(const char *part) { Common::String s; bool alreadyPresent = false; Common::InSaveFile *inFile = getInSaveFile(SPECIAL_SAVESLOT); if (inFile) { s = inFile->readLine(); delete inFile; if (s.contains(part)) { alreadyPresent = true; } } if (!alreadyPresent) { Common::OutSaveFile *outFile = getOutSaveFile(SPECIAL_SAVESLOT); outFile->writeString(s); outFile->writeString(part); outFile->finalize(); delete outFile; } }