From bae25fc2aab4fe0438b59dba4ac507ce6462a0e1 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 12:34:51 +1100 Subject: MORTEVIELLE: Implemented ScummVM savegame functionality with metadata --- engines/mortevielle/saveload.cpp | 318 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 318 insertions(+) create mode 100644 engines/mortevielle/saveload.cpp (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp new file mode 100644 index 0000000000..d0cd603845 --- /dev/null +++ b/engines/mortevielle/saveload.cpp @@ -0,0 +1,318 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#include "common/file.h" +#include "common/system.h" +#include "mortevielle/alert.h" +#include "mortevielle/mor.h" +#include "mortevielle/mor2.h" +#include "mortevielle/mortevielle.h" +#include "mortevielle/mouse.h" +#include "mortevielle/ovd1.h" +#include "mortevielle/prog.h" +#include "mortevielle/saveload.h" +#include "mortevielle/var_mor.h" + +namespace Mortevielle { + +static const char SAVEGAME_ID[4] = { 'M', 'O', 'R', 'T' }; + +Common::String SavegameManager::generateSaveName(int slotNumber) { + return Common::String::format("sav%d.mor", slotNumber); +} + +/** + * Handle saving or loading savegame data + */ +void SavegameManager::sync_save(Common::Serializer &sz) { + sz.syncAsSint16LE(s1.conf); + sz.syncBytes((byte *)&s1.pourc[0], 11); + sz.syncBytes((byte *)&s1.teauto[0], 43); + sz.syncBytes((byte *)&s1.sjer[0], 31); + sz.syncAsSint16LE(s1.mlieu); + sz.syncAsSint16LE(s1.iboul); + sz.syncAsSint16LE(s1.ibag); + sz.syncAsSint16LE(s1.icave); + sz.syncAsSint16LE(s1.ivier); + sz.syncAsSint16LE(s1.ipuit); + sz.syncAsSint16LE(s1.derobj); + sz.syncAsSint16LE(s1.iloic); + sz.syncAsSint16LE(s1.icryp); + sz.syncAsByte(s1.ipre); + sz.syncAsByte(s1.heure); + + sz.syncBytes(bufcha, 391); +} + +/** + * Inner code for loading a saved game + */ +void SavegameManager::takesav(int n) { + int i; + Common::String st; + + // -- Load the file + Common::String filename = generateSaveName(n); + + // Try loading first from the save area + Common::SeekableReadStream *stream = g_system->getSavefileManager()->openForLoading(filename); + + // If not present, try loading from the program folder + Common::File f; + if (stream == NULL) { + if (!f.open(filename)) + error("Unable to open save file '%s'", filename); + + stream = f.readStream(f.size()); + f.close(); + } + + // Check whether it's a ScummVM saved game + char buffer[4]; + stream->read(buffer, 4); + if (!strncmp(&buffer[0], &SAVEGAME_ID[0], 4)) { + // Yes, it is, so skip over the savegame header + SavegameHeader header; + readSavegameHeader(stream, header); + delete header.thumbnail; + } else { + stream->seek(0); + } + + // Read the game contents + Common::Serializer sz(stream, NULL); + sync_save(sz); + + s = s1; + for (i = 0; i <= 389; i ++) tabdon[i + acha] = bufcha[i]; + + // Close the stream + delete stream; +} + +/** + * Load a saved game + */ +Common::Error SavegameManager::loadGame(int n) { + hide_mouse(); + maivid(); + takesav(n); + + /* Initialization */ + theure(); + dprog(); + antegame(); + show_mouse(); + return Common::kNoError; +} + +/** + * Save the game + */ +Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { + Common::OutSaveFile *f; + int i; + + hide_mouse(); + tmaj3(); + + for (i = 0; i <= 389; i ++) + bufcha[i] = tabdon[i + acha]; + s1 = s; + if (s1.mlieu == 26) + s1.mlieu = 15; + + Common::String filename = generateSaveName(n); + f = g_system->getSavefileManager()->openForSaving(filename); + + // Write out the savegame header + f->write(&SAVEGAME_ID[0], 4); + + // Write out the header + SavegameHeader header; + writeSavegameHeader(f, saveName); + + // Write out the savegame contents + Common::Serializer sz(NULL, f); + sync_save(sz); + + // Close the save file + f->finalize(); + delete f; + + dem2(); + show_mouse(); + return Common::kNoError; +} + +void SavegameManager::writeSavegameHeader(Common::OutSaveFile *out, const Common::String &saveName) { + // Write out a savegame header + out->writeByte(SAVEGAME_VERSION); + + // Write savegame name + out->writeString(saveName); + out->writeByte(0); + + // Get the active palette + uint8 thumbPalette[256 * 3]; + g_system->getPaletteManager()->grabPalette(thumbPalette, 0, 256); + + // Create a thumbnail and save it + Graphics::Surface *thumb = new Graphics::Surface(); + Graphics::Surface s = g_vm->_screenSurface.lockArea(Common::Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)); + + ::createThumbnail(thumb, (const byte *)s.pixels, SCREEN_WIDTH, SCREEN_HEIGHT, thumbPalette); + Graphics::saveThumbnail(*out, *thumb); + thumb->free(); + delete thumb; + + // Write out the save date/time + TimeDate td; + g_system->getTimeAndDate(td); + out->writeSint16LE(td.tm_year + 1900); + out->writeSint16LE(td.tm_mon + 1); + out->writeSint16LE(td.tm_mday); + out->writeSint16LE(td.tm_hour); + out->writeSint16LE(td.tm_min); +} + +bool SavegameManager::readSavegameHeader(Common::InSaveFile *in, SavegameHeader &header) { + header.thumbnail = NULL; + + // Get the savegame version + header.version = in->readByte(); + + // Read in the save name + header.saveName.clear(); + char ch; + while ((ch = (char)in->readByte()) != '\0') + header.saveName += ch; + + // Get the thumbnail + header.thumbnail = Graphics::loadThumbnail(*in); + if (!header.thumbnail) + return false; + + // Read in save date/time + header.saveYear = in->readSint16LE(); + header.saveMonth = in->readSint16LE(); + header.saveDay = in->readSint16LE(); + header.saveHour = in->readSint16LE(); + header.saveMinutes = in->readSint16LE(); + + return true; +} + +SaveStateList SavegameManager::listSaves(const char *target) { + Common::String pattern = "sav*.mor"; + Common::StringArray files = g_system->getSavefileManager()->listSavefiles(pattern); + sort(files.begin(), files.end()); // Sort (hopefully ensuring we are sorted numerically..) + + SaveStateList saveList; + for (Common::StringArray::const_iterator file = files.begin(); file != files.end(); ++file) { + // Obtain the last 3 digits of the filename, since they correspond to the save slot + const Common::String &fname = *file; + int slotNumber = atoi(fname.c_str() + 3); + + Common::InSaveFile *in = g_system->getSavefileManager()->openForLoading(fname); + if (in) { + // There can be two types of savegames: original interpreter savegames, and ScummVM savegames. + // Original interpreter savegames are 497 bytes, and still need to be supported because the + // initial game state is stored as a savegame + bool validFlag = false; + Common::String saveDescription; + + char buffer[4]; + in->read(buffer, 4); + if (!strncmp(&buffer[0], &SAVEGAME_ID[0], 4)) { + // ScummVm savegame. Read in the header to get the savegame name + SavegameHeader header; + validFlag = readSavegameHeader(in, header); + + if (validFlag) { + delete header.thumbnail; + saveDescription = header.saveName; + } + } else if (file->size() == 497) { + // Form an appropriate savegame name + saveDescription = (slotNumber == 0) ? "Initial game state" : + Common::String::format("Savegame #%d", slotNumber); + validFlag = true; + } + + if (validFlag) + // Got a valid savegame + saveList.push_back(SaveStateDescriptor(slotNumber, saveDescription)); + + delete in; + } + } + + return saveList; +} + +SaveStateDescriptor SavegameManager::querySaveMetaInfos(int slot) { + Common::String fileName = Mortevielle::SavegameManager::generateSaveName(slot); + Common::InSaveFile *f = g_system->getSavefileManager()->openForLoading(fileName); + + if (f) { + // Check to see if it's a ScummVM savegame or not + char buffer[4]; + f->read(buffer, 4); + + bool hasHeader = !strncmp(&buffer[0], &SAVEGAME_ID[0], 4); + + if (!hasHeader) { + // Original savegame perhaps? + delete f; + + SaveStateDescriptor desc(slot, Common::String::format("Savegame #%d", slot)); + desc.setDeletableFlag(slot != 0); + desc.setWriteProtectedFlag(slot == 0); + return desc; + } else { + // Get the savegame header information + SavegameHeader header; + readSavegameHeader(f, header); + delete f; + + // Create the return descriptor + SaveStateDescriptor desc(slot, header.saveName); + desc.setDeletableFlag(true); + desc.setWriteProtectedFlag(false); + desc.setThumbnail(header.thumbnail); + desc.setSaveDate(header.saveYear, header.saveMonth, header.saveDay); + desc.setSaveTime(header.saveHour, header.saveMinutes); + + return desc; + } + } + + return SaveStateDescriptor(); +} + +} // End of namespace Mortevielle -- cgit v1.2.3 From 231315420b0ac7b199237a9221cae1445edf80a9 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 14:22:56 +1100 Subject: MORTEVIELLE: Renamed main loop methods, along with quit/end/lose variables --- engines/mortevielle/saveload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index d0cd603845..4f37c2839b 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -125,7 +125,7 @@ Common::Error SavegameManager::loadGame(int n) { /* Initialization */ theure(); dprog(); - antegame(); + g_vm->gameLoaded(); show_mouse(); return Common::kNoError; } -- cgit v1.2.3 From d738576f1c966d4e515c3a3ee64bd0972b3efdca Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Mon, 13 Feb 2012 20:51:36 +1100 Subject: MORTEVIELLE: Convert f3/f8 dialog, alert dialog, and ques dialogs into classes --- engines/mortevielle/saveload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 4f37c2839b..0b3946af0b 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -27,7 +27,7 @@ #include "common/file.h" #include "common/system.h" -#include "mortevielle/alert.h" +#include "mortevielle/dialogs.h" #include "mortevielle/mor.h" #include "mortevielle/mor2.h" #include "mortevielle/mortevielle.h" -- cgit v1.2.3 From d8686819760db1e8fec28a99ef989c98f116c77a Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 19 Feb 2012 21:15:57 +0100 Subject: MORTEVIELLE: Rename mouse functions, various formatting fixes --- engines/mortevielle/saveload.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 0b3946af0b..c2c43953d0 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -118,7 +118,7 @@ void SavegameManager::takesav(int n) { * Load a saved game */ Common::Error SavegameManager::loadGame(int n) { - hide_mouse(); + hideMouse(); maivid(); takesav(n); @@ -126,7 +126,7 @@ Common::Error SavegameManager::loadGame(int n) { theure(); dprog(); g_vm->gameLoaded(); - show_mouse(); + showMouse(); return Common::kNoError; } @@ -137,7 +137,7 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { Common::OutSaveFile *f; int i; - hide_mouse(); + hideMouse(); tmaj3(); for (i = 0; i <= 389; i ++) @@ -165,7 +165,7 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { delete f; dem2(); - show_mouse(); + showMouse(); return Common::kNoError; } -- cgit v1.2.3 From a54dfa48457750a22d744beabe5d6f9e12542621 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 21 Feb 2012 18:51:44 +0100 Subject: MORTEVIELLE: Some more code formatting, rename sonoff --- engines/mortevielle/saveload.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index c2c43953d0..929b0880f6 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -108,7 +108,8 @@ void SavegameManager::takesav(int n) { sync_save(sz); s = s1; - for (i = 0; i <= 389; i ++) tabdon[i + acha] = bufcha[i]; + for (i = 0; i <= 389; ++i) + tabdon[i + acha] = bufcha[i]; // Close the stream delete stream; @@ -140,7 +141,7 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { hideMouse(); tmaj3(); - for (i = 0; i <= 389; i ++) + for (i = 0; i <= 389; ++i) bufcha[i] = tabdon[i + acha]; s1 = s; if (s1.mlieu == 26) -- cgit v1.2.3 From 1a70cee6a6e59290819f516736bb3123f232e342 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 2 Mar 2012 02:04:43 +0100 Subject: MORTEVIELLE: Silent a bunch of GCC warnings and errors --- engines/mortevielle/saveload.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 929b0880f6..7afaa47da0 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -85,7 +85,7 @@ void SavegameManager::takesav(int n) { Common::File f; if (stream == NULL) { if (!f.open(filename)) - error("Unable to open save file '%s'", filename); + error("Unable to open save file '%s'", filename.c_str()); stream = f.readStream(f.size()); f.close(); @@ -107,7 +107,7 @@ void SavegameManager::takesav(int n) { Common::Serializer sz(stream, NULL); sync_save(sz); - s = s1; + g_s = s1; for (i = 0; i <= 389; ++i) tabdon[i + acha] = bufcha[i]; @@ -143,7 +143,7 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { for (i = 0; i <= 389; ++i) bufcha[i] = tabdon[i + acha]; - s1 = s; + s1 = g_s; if (s1.mlieu == 26) s1.mlieu = 15; -- cgit v1.2.3 From b2b16cefce08dbdad76b9057ff97d08c7e14c56e Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 3 Mar 2012 00:23:27 +0100 Subject: MORTEVIELLE: rename more globals and constants, remove t_nhom usage --- engines/mortevielle/saveload.cpp | 46 ++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 23 deletions(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 7afaa47da0..cbff7b7d3f 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -49,23 +49,23 @@ Common::String SavegameManager::generateSaveName(int slotNumber) { * Handle saving or loading savegame data */ void SavegameManager::sync_save(Common::Serializer &sz) { - sz.syncAsSint16LE(s1.conf); - sz.syncBytes((byte *)&s1.pourc[0], 11); - sz.syncBytes((byte *)&s1.teauto[0], 43); - sz.syncBytes((byte *)&s1.sjer[0], 31); - sz.syncAsSint16LE(s1.mlieu); - sz.syncAsSint16LE(s1.iboul); - sz.syncAsSint16LE(s1.ibag); - sz.syncAsSint16LE(s1.icave); - sz.syncAsSint16LE(s1.ivier); - sz.syncAsSint16LE(s1.ipuit); - sz.syncAsSint16LE(s1.derobj); - sz.syncAsSint16LE(s1.iloic); - sz.syncAsSint16LE(s1.icryp); - sz.syncAsByte(s1.ipre); - sz.syncAsByte(s1.heure); - - sz.syncBytes(bufcha, 391); + sz.syncAsSint16LE(g_s1._conf); + sz.syncBytes((byte *)&g_s1._pourc[0], 11); + sz.syncBytes((byte *)&g_s1._teauto[0], 43); + sz.syncBytes((byte *)&g_s1._sjer[0], 31); + sz.syncAsSint16LE(g_s1._mlieu); + sz.syncAsSint16LE(g_s1._iboul); + sz.syncAsSint16LE(g_s1._ibag); + sz.syncAsSint16LE(g_s1._icave); + sz.syncAsSint16LE(g_s1._ivier); + sz.syncAsSint16LE(g_s1._ipuit); + sz.syncAsSint16LE(g_s1._derobj); + sz.syncAsSint16LE(g_s1._iloic); + sz.syncAsSint16LE(g_s1._icryp); + sz.syncAsByte(g_s1._ipre); + sz.syncAsByte(g_s1._heure); + + sz.syncBytes(g_bufcha, 391); } /** @@ -107,9 +107,9 @@ void SavegameManager::takesav(int n) { Common::Serializer sz(stream, NULL); sync_save(sz); - g_s = s1; + g_s = g_s1; for (i = 0; i <= 389; ++i) - tabdon[i + acha] = bufcha[i]; + g_tabdon[i + acha] = g_bufcha[i]; // Close the stream delete stream; @@ -142,10 +142,10 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { tmaj3(); for (i = 0; i <= 389; ++i) - bufcha[i] = tabdon[i + acha]; - s1 = g_s; - if (s1.mlieu == 26) - s1.mlieu = 15; + g_bufcha[i] = g_tabdon[i + acha]; + g_s1 = g_s; + if (g_s1._mlieu == 26) + g_s1._mlieu = 15; Common::String filename = generateSaveName(n); f = g_system->getSavefileManager()->openForSaving(filename); -- cgit v1.2.3 From e92369be21638bf2daa94aa8c8b52faf5a3afe00 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 4 Mar 2012 10:17:27 +0100 Subject: MORTEVIELLE: Rename some variables and functions related to 'Search' action --- engines/mortevielle/saveload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index cbff7b7d3f..53a147c86c 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -59,7 +59,7 @@ void SavegameManager::sync_save(Common::Serializer &sz) { sz.syncAsSint16LE(g_s1._icave); sz.syncAsSint16LE(g_s1._ivier); sz.syncAsSint16LE(g_s1._ipuit); - sz.syncAsSint16LE(g_s1._derobj); + sz.syncAsSint16LE(g_s1._selectedObjectId); sz.syncAsSint16LE(g_s1._iloic); sz.syncAsSint16LE(g_s1._icryp); sz.syncAsByte(g_s1._ipre); -- cgit v1.2.3 From 573925641204aac35361c1750af73658641edd8a Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 5 Mar 2012 00:00:48 +0100 Subject: MORTEVIELLE: rename several globals --- engines/mortevielle/saveload.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 53a147c86c..386fd95ef5 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -53,15 +53,15 @@ void SavegameManager::sync_save(Common::Serializer &sz) { sz.syncBytes((byte *)&g_s1._pourc[0], 11); sz.syncBytes((byte *)&g_s1._teauto[0], 43); sz.syncBytes((byte *)&g_s1._sjer[0], 31); - sz.syncAsSint16LE(g_s1._mlieu); - sz.syncAsSint16LE(g_s1._iboul); - sz.syncAsSint16LE(g_s1._ibag); - sz.syncAsSint16LE(g_s1._icave); - sz.syncAsSint16LE(g_s1._ivier); - sz.syncAsSint16LE(g_s1._ipuit); + sz.syncAsSint16LE(g_s1._currPlace); + sz.syncAsSint16LE(g_s1._atticBallHoleObjectId); + sz.syncAsSint16LE(g_s1._atticRodHoleObjectId); + sz.syncAsSint16LE(g_s1._cellarObjectId); + sz.syncAsSint16LE(g_s1._secretPassageObjectId); + sz.syncAsSint16LE(g_s1._wellObjectId); sz.syncAsSint16LE(g_s1._selectedObjectId); - sz.syncAsSint16LE(g_s1._iloic); - sz.syncAsSint16LE(g_s1._icryp); + sz.syncAsSint16LE(g_s1._purpleRoomObjectId); + sz.syncAsSint16LE(g_s1._cryptObjectId); sz.syncAsByte(g_s1._ipre); sz.syncAsByte(g_s1._heure); @@ -144,8 +144,8 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { for (i = 0; i <= 389; ++i) g_bufcha[i] = g_tabdon[i + acha]; g_s1 = g_s; - if (g_s1._mlieu == 26) - g_s1._mlieu = 15; + if (g_s1._currPlace == 26) + g_s1._currPlace = 15; Common::String filename = generateSaveName(n); f = g_system->getSavefileManager()->openForSaving(filename); -- cgit v1.2.3 From 1ee4429601c0e009196d66d3e676deeb85b11b49 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 5 Mar 2012 07:45:43 +0100 Subject: MORTEVIELLE: Rename some more functions and globals --- engines/mortevielle/saveload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 386fd95ef5..a53d218c86 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -49,7 +49,7 @@ Common::String SavegameManager::generateSaveName(int slotNumber) { * Handle saving or loading savegame data */ void SavegameManager::sync_save(Common::Serializer &sz) { - sz.syncAsSint16LE(g_s1._conf); + sz.syncAsSint16LE(g_s1._faithScore); sz.syncBytes((byte *)&g_s1._pourc[0], 11); sz.syncBytes((byte *)&g_s1._teauto[0], 43); sz.syncBytes((byte *)&g_s1._sjer[0], 31); -- cgit v1.2.3 From 6217fa5e3ee08790cfe5b775256740eeec8a0a1a Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 7 Mar 2012 08:33:48 +0100 Subject: MORTEVIELLE: some more renaming, match menu item size in setText() --- engines/mortevielle/saveload.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index a53d218c86..0efafe7fba 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -164,8 +164,9 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { // Close the save file f->finalize(); delete f; + + // Skipped: dialog asking to swap floppy - dem2(); showMouse(); return Common::kNoError; } -- cgit v1.2.3 From 79dd91803338380c62a6a1aa2ba3dd0690e565be Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 10 Mar 2012 09:46:51 +0100 Subject: MORTEVIELLE: regroup several files --- engines/mortevielle/saveload.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 0efafe7fba..2c2af49a5f 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -29,7 +29,6 @@ #include "common/system.h" #include "mortevielle/dialogs.h" #include "mortevielle/mor.h" -#include "mortevielle/mor2.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/ovd1.h" -- cgit v1.2.3 From b5d2fa7e5f11ed02bc8b52459265a07c9d61440b Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 10 Mar 2012 10:06:44 +0100 Subject: MORTEVIELLE: Merge prog and mor files --- engines/mortevielle/saveload.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 2c2af49a5f..a86432253c 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -32,7 +32,6 @@ #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/ovd1.h" -#include "mortevielle/prog.h" #include "mortevielle/saveload.h" #include "mortevielle/var_mor.h" -- cgit v1.2.3 From 0f37695385de9a1b39950a38f956a24da6695ac0 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 13 Mar 2012 00:06:15 +0100 Subject: MORTEVIELLE: More renaming and moving --- engines/mortevielle/saveload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index a86432253c..37b33766ff 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -123,7 +123,7 @@ Common::Error SavegameManager::loadGame(int n) { /* Initialization */ theure(); - dprog(); + g_vm->initGame(); g_vm->gameLoaded(); showMouse(); return Common::kNoError; -- cgit v1.2.3 From 09195469171fe713964af8478c1cc4e5e28dc7cb Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 14 Mar 2012 23:06:23 +0100 Subject: MORTEVIELLE: Some more renaming --- engines/mortevielle/saveload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 37b33766ff..9e17252734 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -60,7 +60,7 @@ void SavegameManager::sync_save(Common::Serializer &sz) { sz.syncAsSint16LE(g_s1._selectedObjectId); sz.syncAsSint16LE(g_s1._purpleRoomObjectId); sz.syncAsSint16LE(g_s1._cryptObjectId); - sz.syncAsByte(g_s1._ipre); + sz.syncAsByte(g_s1._alreadyEnteredManor); sz.syncAsByte(g_s1._heure); sz.syncBytes(g_bufcha, 391); -- cgit v1.2.3 From 01e899b965721a21704746948ed2541a950f31df Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 14 Mar 2012 23:29:42 +0100 Subject: MORTEVIELLE: Remove some useless g_vm uses, some more renaming --- engines/mortevielle/saveload.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 9e17252734..4113ff0e01 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -48,9 +48,13 @@ Common::String SavegameManager::generateSaveName(int slotNumber) { */ void SavegameManager::sync_save(Common::Serializer &sz) { sz.syncAsSint16LE(g_s1._faithScore); - sz.syncBytes((byte *)&g_s1._pourc[0], 11); - sz.syncBytes((byte *)&g_s1._teauto[0], 43); - sz.syncBytes((byte *)&g_s1._sjer[0], 31); + for (int i = 0; i < 11; ++i) + sz.syncAsByte(g_s1._pourc[i]); + for (int i = 0; i < 43; ++i) + sz.syncAsByte(g_s1._teauto[i]); + for (int i = 0; i < 31; ++i) + sz.syncAsByte(g_s1._sjer[i]); + sz.syncAsSint16LE(g_s1._currPlace); sz.syncAsSint16LE(g_s1._atticBallHoleObjectId); sz.syncAsSint16LE(g_s1._atticRodHoleObjectId); -- cgit v1.2.3 From fb096b135bc2ed5cc56137a8c6e58de730758d13 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 16 Mar 2012 07:32:43 +0100 Subject: MORTEVIELLE: Some more renaming --- engines/mortevielle/saveload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 4113ff0e01..f6a3defab3 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -65,7 +65,7 @@ void SavegameManager::sync_save(Common::Serializer &sz) { sz.syncAsSint16LE(g_s1._purpleRoomObjectId); sz.syncAsSint16LE(g_s1._cryptObjectId); sz.syncAsByte(g_s1._alreadyEnteredManor); - sz.syncAsByte(g_s1._heure); + sz.syncAsByte(g_s1._fullHour); sz.syncBytes(g_bufcha, 391); } -- cgit v1.2.3 From fc14ffbcb53aedfb23ac7ecc862d2bf9a454fb73 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 18 Mar 2012 09:44:05 +0100 Subject: MORTEVIELLE: Some more renaming --- engines/mortevielle/saveload.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index f6a3defab3..d054308cf3 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -72,11 +72,9 @@ void SavegameManager::sync_save(Common::Serializer &sz) { /** * Inner code for loading a saved game + * @remarks Originally called 'takesav' */ -void SavegameManager::takesav(int n) { - int i; - Common::String st; - +void SavegameManager::loadSavegame(int n) { // -- Load the file Common::String filename = generateSaveName(n); @@ -110,7 +108,7 @@ void SavegameManager::takesav(int n) { sync_save(sz); g_s = g_s1; - for (i = 0; i <= 389; ++i) + for (int i = 0; i <= 389; ++i) g_tabdon[i + acha] = g_bufcha[i]; // Close the stream @@ -123,10 +121,10 @@ void SavegameManager::takesav(int n) { Common::Error SavegameManager::loadGame(int n) { hideMouse(); maivid(); - takesav(n); + loadSavegame(n); /* Initialization */ - theure(); + g_vm->charToHour(); g_vm->initGame(); g_vm->gameLoaded(); showMouse(); @@ -141,7 +139,7 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { int i; hideMouse(); - tmaj3(); + g_vm->hourToChar(); for (i = 0; i <= 389; ++i) g_bufcha[i] = g_tabdon[i + acha]; -- cgit v1.2.3 From 1c283507ee0dab8f960bdbe249f837a95c4b6e2b Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 19 Mar 2012 07:44:56 +0100 Subject: MORTEVIELLE: Some more renaming, introduce MouseHandler --- engines/mortevielle/saveload.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index d054308cf3..9458da38bc 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -119,7 +119,7 @@ void SavegameManager::loadSavegame(int n) { * Load a saved game */ Common::Error SavegameManager::loadGame(int n) { - hideMouse(); + g_vm->_mouse.hideMouse(); maivid(); loadSavegame(n); @@ -127,7 +127,7 @@ Common::Error SavegameManager::loadGame(int n) { g_vm->charToHour(); g_vm->initGame(); g_vm->gameLoaded(); - showMouse(); + g_vm->_mouse.showMouse(); return Common::kNoError; } @@ -138,7 +138,7 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { Common::OutSaveFile *f; int i; - hideMouse(); + g_vm->_mouse.hideMouse(); g_vm->hourToChar(); for (i = 0; i <= 389; ++i) @@ -167,7 +167,7 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { // Skipped: dialog asking to swap floppy - showMouse(); + g_vm->_mouse.showMouse(); return Common::kNoError; } -- cgit v1.2.3 From 76f7858096a607b2de97572c89e8fc84c1a05efb Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 21 Mar 2012 08:32:36 +0100 Subject: MORTEVIELLE: More renaming --- engines/mortevielle/saveload.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 9458da38bc..7ddd8b707c 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -109,7 +109,7 @@ void SavegameManager::loadSavegame(int n) { g_s = g_s1; for (int i = 0; i <= 389; ++i) - g_tabdon[i + acha] = g_bufcha[i]; + g_tabdon[i + kAcha] = g_bufcha[i]; // Close the stream delete stream; @@ -142,7 +142,7 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { g_vm->hourToChar(); for (i = 0; i <= 389; ++i) - g_bufcha[i] = g_tabdon[i + acha]; + g_bufcha[i] = g_tabdon[i + kAcha]; g_s1 = g_s; if (g_s1._currPlace == 26) g_s1._currPlace = 15; -- cgit v1.2.3 From c1e8ff3adabac16d6c37041ac22ff1e41eaf36ed Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 22 Mar 2012 00:13:11 +0100 Subject: MORTEVIELLE: Rename more globals and move functions to MortevielleEngine. Remove ovd1 files. --- engines/mortevielle/saveload.cpp | 41 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 21 deletions(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 7ddd8b707c..c99804f34c 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -31,7 +31,6 @@ #include "mortevielle/mor.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" -#include "mortevielle/ovd1.h" #include "mortevielle/saveload.h" #include "mortevielle/var_mor.h" @@ -47,25 +46,25 @@ Common::String SavegameManager::generateSaveName(int slotNumber) { * Handle saving or loading savegame data */ void SavegameManager::sync_save(Common::Serializer &sz) { - sz.syncAsSint16LE(g_s1._faithScore); + sz.syncAsSint16LE(g_vm->g_s1._faithScore); for (int i = 0; i < 11; ++i) - sz.syncAsByte(g_s1._pourc[i]); + sz.syncAsByte(g_vm->g_s1._pourc[i]); for (int i = 0; i < 43; ++i) - sz.syncAsByte(g_s1._teauto[i]); + sz.syncAsByte(g_vm->g_s1._teauto[i]); for (int i = 0; i < 31; ++i) - sz.syncAsByte(g_s1._sjer[i]); - - sz.syncAsSint16LE(g_s1._currPlace); - sz.syncAsSint16LE(g_s1._atticBallHoleObjectId); - sz.syncAsSint16LE(g_s1._atticRodHoleObjectId); - sz.syncAsSint16LE(g_s1._cellarObjectId); - sz.syncAsSint16LE(g_s1._secretPassageObjectId); - sz.syncAsSint16LE(g_s1._wellObjectId); - sz.syncAsSint16LE(g_s1._selectedObjectId); - sz.syncAsSint16LE(g_s1._purpleRoomObjectId); - sz.syncAsSint16LE(g_s1._cryptObjectId); - sz.syncAsByte(g_s1._alreadyEnteredManor); - sz.syncAsByte(g_s1._fullHour); + sz.syncAsByte(g_vm->g_s1._sjer[i]); + + sz.syncAsSint16LE(g_vm->g_s1._currPlace); + sz.syncAsSint16LE(g_vm->g_s1._atticBallHoleObjectId); + sz.syncAsSint16LE(g_vm->g_s1._atticRodHoleObjectId); + sz.syncAsSint16LE(g_vm->g_s1._cellarObjectId); + sz.syncAsSint16LE(g_vm->g_s1._secretPassageObjectId); + sz.syncAsSint16LE(g_vm->g_s1._wellObjectId); + sz.syncAsSint16LE(g_vm->g_s1._selectedObjectId); + sz.syncAsSint16LE(g_vm->g_s1._purpleRoomObjectId); + sz.syncAsSint16LE(g_vm->g_s1._cryptObjectId); + sz.syncAsByte(g_vm->g_s1._alreadyEnteredManor); + sz.syncAsByte(g_vm->g_s1._fullHour); sz.syncBytes(g_bufcha, 391); } @@ -107,7 +106,7 @@ void SavegameManager::loadSavegame(int n) { Common::Serializer sz(stream, NULL); sync_save(sz); - g_s = g_s1; + g_vm->g_s = g_vm->g_s1; for (int i = 0; i <= 389; ++i) g_tabdon[i + kAcha] = g_bufcha[i]; @@ -143,9 +142,9 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { for (i = 0; i <= 389; ++i) g_bufcha[i] = g_tabdon[i + kAcha]; - g_s1 = g_s; - if (g_s1._currPlace == 26) - g_s1._currPlace = 15; + g_vm->g_s1 = g_vm->g_s; + if (g_vm->g_s1._currPlace == 26) + g_vm->g_s1._currPlace = 15; Common::String filename = generateSaveName(n); f = g_system->getSavefileManager()->openForSaving(filename); -- cgit v1.2.3 From 1a9183e0ba06e13ed1385e893ea7287412645fba Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 22 Mar 2012 08:36:59 +0100 Subject: MORTEVIELLE: More renaming --- engines/mortevielle/saveload.cpp | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index c99804f34c..fa26132e9b 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -46,25 +46,25 @@ Common::String SavegameManager::generateSaveName(int slotNumber) { * Handle saving or loading savegame data */ void SavegameManager::sync_save(Common::Serializer &sz) { - sz.syncAsSint16LE(g_vm->g_s1._faithScore); + sz.syncAsSint16LE(g_vm->_saveStruct._faithScore); for (int i = 0; i < 11; ++i) - sz.syncAsByte(g_vm->g_s1._pourc[i]); + sz.syncAsByte(g_vm->_saveStruct._pourc[i]); for (int i = 0; i < 43; ++i) - sz.syncAsByte(g_vm->g_s1._teauto[i]); + sz.syncAsByte(g_vm->_saveStruct._teauto[i]); for (int i = 0; i < 31; ++i) - sz.syncAsByte(g_vm->g_s1._sjer[i]); - - sz.syncAsSint16LE(g_vm->g_s1._currPlace); - sz.syncAsSint16LE(g_vm->g_s1._atticBallHoleObjectId); - sz.syncAsSint16LE(g_vm->g_s1._atticRodHoleObjectId); - sz.syncAsSint16LE(g_vm->g_s1._cellarObjectId); - sz.syncAsSint16LE(g_vm->g_s1._secretPassageObjectId); - sz.syncAsSint16LE(g_vm->g_s1._wellObjectId); - sz.syncAsSint16LE(g_vm->g_s1._selectedObjectId); - sz.syncAsSint16LE(g_vm->g_s1._purpleRoomObjectId); - sz.syncAsSint16LE(g_vm->g_s1._cryptObjectId); - sz.syncAsByte(g_vm->g_s1._alreadyEnteredManor); - sz.syncAsByte(g_vm->g_s1._fullHour); + sz.syncAsByte(g_vm->_saveStruct._sjer[i]); + + sz.syncAsSint16LE(g_vm->_saveStruct._currPlace); + sz.syncAsSint16LE(g_vm->_saveStruct._atticBallHoleObjectId); + sz.syncAsSint16LE(g_vm->_saveStruct._atticRodHoleObjectId); + sz.syncAsSint16LE(g_vm->_saveStruct._cellarObjectId); + sz.syncAsSint16LE(g_vm->_saveStruct._secretPassageObjectId); + sz.syncAsSint16LE(g_vm->_saveStruct._wellObjectId); + sz.syncAsSint16LE(g_vm->_saveStruct._selectedObjectId); + sz.syncAsSint16LE(g_vm->_saveStruct._purpleRoomObjectId); + sz.syncAsSint16LE(g_vm->_saveStruct._cryptObjectId); + sz.syncAsByte(g_vm->_saveStruct._alreadyEnteredManor); + sz.syncAsByte(g_vm->_saveStruct._fullHour); sz.syncBytes(g_bufcha, 391); } @@ -106,7 +106,7 @@ void SavegameManager::loadSavegame(int n) { Common::Serializer sz(stream, NULL); sync_save(sz); - g_vm->g_s = g_vm->g_s1; + g_vm->_coreVar = g_vm->_saveStruct; for (int i = 0; i <= 389; ++i) g_tabdon[i + kAcha] = g_bufcha[i]; @@ -142,9 +142,9 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { for (i = 0; i <= 389; ++i) g_bufcha[i] = g_tabdon[i + kAcha]; - g_vm->g_s1 = g_vm->g_s; - if (g_vm->g_s1._currPlace == 26) - g_vm->g_s1._currPlace = 15; + g_vm->_saveStruct = g_vm->_coreVar; + if (g_vm->_saveStruct._currPlace == 26) + g_vm->_saveStruct._currPlace = 15; Common::String filename = generateSaveName(n); f = g_system->getSavefileManager()->openForSaving(filename); -- cgit v1.2.3 From 09e8c82e8fc29472ec18d0a7ff2c69cc9b31975d Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 23 Mar 2012 00:35:19 +0100 Subject: MORTEVIELLE: More renaming --- engines/mortevielle/saveload.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index fa26132e9b..d71e2fd8b7 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -66,7 +66,7 @@ void SavegameManager::sync_save(Common::Serializer &sz) { sz.syncAsByte(g_vm->_saveStruct._alreadyEnteredManor); sz.syncAsByte(g_vm->_saveStruct._fullHour); - sz.syncBytes(g_bufcha, 391); + sz.syncBytes(_tabdonSaveBuffer, 391); } /** @@ -108,7 +108,7 @@ void SavegameManager::loadSavegame(int n) { g_vm->_coreVar = g_vm->_saveStruct; for (int i = 0; i <= 389; ++i) - g_tabdon[i + kAcha] = g_bufcha[i]; + g_vm->_tabdon[i + kAcha] = _tabdonSaveBuffer[i]; // Close the stream delete stream; @@ -141,10 +141,10 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { g_vm->hourToChar(); for (i = 0; i <= 389; ++i) - g_bufcha[i] = g_tabdon[i + kAcha]; + _tabdonSaveBuffer[i] = g_vm->_tabdon[i + kAcha]; g_vm->_saveStruct = g_vm->_coreVar; - if (g_vm->_saveStruct._currPlace == 26) - g_vm->_saveStruct._currPlace = 15; + if (g_vm->_saveStruct._currPlace == ROOM26) + g_vm->_saveStruct._currPlace = LANDING; Common::String filename = generateSaveName(n); f = g_system->getSavefileManager()->openForSaving(filename); -- cgit v1.2.3 From a87b992e8dd144c869db8498925662119f822d20 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 24 Mar 2012 09:47:36 +0100 Subject: MORTEVIELLE: Move functions out of mor.cpp --- engines/mortevielle/saveload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index d71e2fd8b7..daa59b231b 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -119,7 +119,7 @@ void SavegameManager::loadSavegame(int n) { */ Common::Error SavegameManager::loadGame(int n) { g_vm->_mouse.hideMouse(); - maivid(); + g_vm->displayEmptyHand(); loadSavegame(n); /* Initialization */ -- cgit v1.2.3 From 7b94de6408f6c83287870ceb137471f2055f76f9 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 24 Mar 2012 15:19:54 +0100 Subject: MORTEVIELLE: Get rid of mor.cpp --- engines/mortevielle/saveload.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index daa59b231b..4c5e6252d5 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -28,7 +28,6 @@ #include "common/file.h" #include "common/system.h" #include "mortevielle/dialogs.h" -#include "mortevielle/mor.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/saveload.h" -- cgit v1.2.3 From cdea613e51db56477ab213a3a0e87c3773348d08 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 27 Mar 2012 22:54:50 +0200 Subject: MORTEVIELLE: Remove trailing spaces --- engines/mortevielle/saveload.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 4c5e6252d5..8ce97fbac0 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -110,7 +110,7 @@ void SavegameManager::loadSavegame(int n) { g_vm->_tabdon[i + kAcha] = _tabdonSaveBuffer[i]; // Close the stream - delete stream; + delete stream; } /** @@ -120,7 +120,7 @@ Common::Error SavegameManager::loadGame(int n) { g_vm->_mouse.hideMouse(); g_vm->displayEmptyHand(); loadSavegame(n); - + /* Initialization */ g_vm->charToHour(); g_vm->initGame(); @@ -138,13 +138,13 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { g_vm->_mouse.hideMouse(); g_vm->hourToChar(); - + for (i = 0; i <= 389; ++i) _tabdonSaveBuffer[i] = g_vm->_tabdon[i + kAcha]; g_vm->_saveStruct = g_vm->_coreVar; if (g_vm->_saveStruct._currPlace == ROOM26) g_vm->_saveStruct._currPlace = LANDING; - + Common::String filename = generateSaveName(n); f = g_system->getSavefileManager()->openForSaving(filename); @@ -162,7 +162,7 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { // Close the save file f->finalize(); delete f; - + // Skipped: dialog asking to swap floppy g_vm->_mouse.showMouse(); @@ -252,18 +252,18 @@ SaveStateList SavegameManager::listSaves(const char *target) { // ScummVm savegame. Read in the header to get the savegame name SavegameHeader header; validFlag = readSavegameHeader(in, header); - + if (validFlag) { delete header.thumbnail; saveDescription = header.saveName; } } else if (file->size() == 497) { // Form an appropriate savegame name - saveDescription = (slotNumber == 0) ? "Initial game state" : + saveDescription = (slotNumber == 0) ? "Initial game state" : Common::String::format("Savegame #%d", slotNumber); validFlag = true; } - + if (validFlag) // Got a valid savegame saveList.push_back(SaveStateDescriptor(slotNumber, saveDescription)); @@ -278,7 +278,7 @@ SaveStateList SavegameManager::listSaves(const char *target) { SaveStateDescriptor SavegameManager::querySaveMetaInfos(int slot) { Common::String fileName = Mortevielle::SavegameManager::generateSaveName(slot); Common::InSaveFile *f = g_system->getSavefileManager()->openForLoading(fileName); - + if (f) { // Check to see if it's a ScummVM savegame or not char buffer[4]; @@ -311,7 +311,7 @@ SaveStateDescriptor SavegameManager::querySaveMetaInfos(int slot) { return desc; } } - + return SaveStateDescriptor(); } -- cgit v1.2.3 From 16194412155e82b64736eb46cd37e702463e1416 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 28 Mar 2012 20:39:42 +0200 Subject: MORTEVIELLE: Remove var_mor --- engines/mortevielle/saveload.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 8ce97fbac0..af00de265e 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -31,7 +31,6 @@ #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/saveload.h" -#include "mortevielle/var_mor.h" namespace Mortevielle { -- cgit v1.2.3 From b27b77b3547dd0d3045da48ee7944bc65d19cd17 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 29 Mar 2012 16:39:18 +0200 Subject: MORTEVIELLE: Modify copyright string to include 1987. --- engines/mortevielle/saveload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index af00de265e..48ae04678d 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -22,7 +22,7 @@ /* * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor + * Copyright (c) 1987-1989 Lankhor */ #include "common/file.h" -- cgit v1.2.3 From ad3c7febd7b5f03d72b30e6ff1d0e8cbd2114b8f Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 14 Oct 2012 10:28:03 +0200 Subject: MORTEVIELLE: Some more renaming --- engines/mortevielle/saveload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 48ae04678d..e4fb38c20a 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -50,7 +50,7 @@ void SavegameManager::sync_save(Common::Serializer &sz) { for (int i = 0; i < 43; ++i) sz.syncAsByte(g_vm->_saveStruct._teauto[i]); for (int i = 0; i < 31; ++i) - sz.syncAsByte(g_vm->_saveStruct._sjer[i]); + sz.syncAsByte(g_vm->_saveStruct._inventory[i]); sz.syncAsSint16LE(g_vm->_saveStruct._currPlace); sz.syncAsSint16LE(g_vm->_saveStruct._atticBallHoleObjectId); -- cgit v1.2.3 From 3f60cd79fed0e245dffe97e8cd33a7990ae90f48 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 14 Oct 2012 21:59:27 +0200 Subject: MORTEVIELLE: More renaming --- engines/mortevielle/saveload.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index e4fb38c20a..093f22e9cf 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -46,9 +46,9 @@ Common::String SavegameManager::generateSaveName(int slotNumber) { void SavegameManager::sync_save(Common::Serializer &sz) { sz.syncAsSint16LE(g_vm->_saveStruct._faithScore); for (int i = 0; i < 11; ++i) - sz.syncAsByte(g_vm->_saveStruct._pourc[i]); + sz.syncAsByte(g_vm->_saveStruct._pctHintFound[i]); for (int i = 0; i < 43; ++i) - sz.syncAsByte(g_vm->_saveStruct._teauto[i]); + sz.syncAsByte(g_vm->_saveStruct._availableQuestion[i]); for (int i = 0; i < 31; ++i) sz.syncAsByte(g_vm->_saveStruct._inventory[i]); -- cgit v1.2.3 From e14278eb583253504e85c3f4db9d56d3b3d945fb Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 13 Jul 2013 19:10:03 -0400 Subject: MORTEVIELLE: Changed savegames to use the game target to generate filenames --- engines/mortevielle/saveload.cpp | 42 +++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 16 deletions(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 093f22e9cf..382fd14277 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -36,8 +36,8 @@ namespace Mortevielle { static const char SAVEGAME_ID[4] = { 'M', 'O', 'R', 'T' }; -Common::String SavegameManager::generateSaveName(int slotNumber) { - return Common::String::format("sav%d.mor", slotNumber); +void SavegameManager::setParent(MortevielleEngine *vm) { + _vm = vm; } /** @@ -71,14 +71,10 @@ void SavegameManager::sync_save(Common::Serializer &sz) { * Inner code for loading a saved game * @remarks Originally called 'takesav' */ -void SavegameManager::loadSavegame(int n) { - // -- Load the file - Common::String filename = generateSaveName(n); - +void SavegameManager::loadSavegame(const Common::String &filename) { // Try loading first from the save area Common::SeekableReadStream *stream = g_system->getSavefileManager()->openForLoading(filename); - // If not present, try loading from the program folder Common::File f; if (stream == NULL) { if (!f.open(filename)) @@ -115,10 +111,10 @@ void SavegameManager::loadSavegame(int n) { /** * Load a saved game */ -Common::Error SavegameManager::loadGame(int n) { +Common::Error SavegameManager::loadGame(const Common::String &filename) { g_vm->_mouse.hideMouse(); g_vm->displayEmptyHand(); - loadSavegame(n); + loadSavegame(filename); /* Initialization */ g_vm->charToHour(); @@ -144,7 +140,7 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { if (g_vm->_saveStruct._currPlace == ROOM26) g_vm->_saveStruct._currPlace = LANDING; - Common::String filename = generateSaveName(n); + Common::String filename = _vm->generateSaveFilename(n); f = g_system->getSavefileManager()->openForSaving(filename); // Write out the savegame header @@ -168,6 +164,14 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { return Common::kNoError; } +Common::Error SavegameManager::loadGame(int slot) { + return loadGame(_vm->generateSaveFilename(slot)); +} + +Common::Error SavegameManager::saveGame(int slot) { + return saveGame(slot, _vm->generateSaveFilename(slot)); +} + void SavegameManager::writeSavegameHeader(Common::OutSaveFile *out, const Common::String &saveName) { // Write out a savegame header out->writeByte(SAVEGAME_VERSION); @@ -226,8 +230,10 @@ bool SavegameManager::readSavegameHeader(Common::InSaveFile *in, SavegameHeader return true; } -SaveStateList SavegameManager::listSaves(const char *target) { - Common::String pattern = "sav*.mor"; +SaveStateList SavegameManager::listSaves(const Common::String &target) { + Common::String pattern = target; + pattern += ".???"; + Common::StringArray files = g_system->getSavefileManager()->listSavefiles(pattern); sort(files.begin(), files.end()); // Sort (hopefully ensuring we are sorted numerically..) @@ -235,7 +241,7 @@ SaveStateList SavegameManager::listSaves(const char *target) { for (Common::StringArray::const_iterator file = files.begin(); file != files.end(); ++file) { // Obtain the last 3 digits of the filename, since they correspond to the save slot const Common::String &fname = *file; - int slotNumber = atoi(fname.c_str() + 3); + int slotNumber = atoi(fname.c_str() + fname.size() - 3); Common::InSaveFile *in = g_system->getSavefileManager()->openForLoading(fname); if (in) { @@ -274,11 +280,15 @@ SaveStateList SavegameManager::listSaves(const char *target) { return saveList; } -SaveStateDescriptor SavegameManager::querySaveMetaInfos(int slot) { - Common::String fileName = Mortevielle::SavegameManager::generateSaveName(slot); +SaveStateDescriptor SavegameManager::querySaveMetaInfos(const Common::String &fileName) { Common::InSaveFile *f = g_system->getSavefileManager()->openForLoading(fileName); if (f) { + // Get the slot number + int slot = 1; + if (fileName.size() > 4 && fileName[fileName.size() - 4] == '.') + slot = atoi(fileName.c_str() + fileName.size() - 3); + // Check to see if it's a ScummVM savegame or not char buffer[4]; f->read(buffer, 4); @@ -289,7 +299,7 @@ SaveStateDescriptor SavegameManager::querySaveMetaInfos(int slot) { // Original savegame perhaps? delete f; - SaveStateDescriptor desc(slot, Common::String::format("Savegame #%d", slot)); + SaveStateDescriptor desc(slot, Common::String::format("Savegame - %s", slot)); desc.setDeletableFlag(slot != 0); desc.setWriteProtectedFlag(slot == 0); return desc; -- cgit v1.2.3 From 67f900ed33bc56d586e3af54740060eab68273f9 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 19 Jul 2013 11:51:10 +0200 Subject: MORTEVIELLE: Reorder includes --- engines/mortevielle/saveload.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 382fd14277..ff3bee5c06 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -25,13 +25,14 @@ * Copyright (c) 1987-1989 Lankhor */ -#include "common/file.h" -#include "common/system.h" -#include "mortevielle/dialogs.h" #include "mortevielle/mortevielle.h" +#include "mortevielle/dialogs.h" #include "mortevielle/mouse.h" #include "mortevielle/saveload.h" +#include "common/file.h" +#include "common/system.h" + namespace Mortevielle { static const char SAVEGAME_ID[4] = { 'M', 'O', 'R', 'T' }; -- cgit v1.2.3 From ffef92a134a27790584d4d2656e8966a980b5063 Mon Sep 17 00:00:00 2001 From: D G Turner Date: Wed, 31 Jul 2013 03:36:16 +0100 Subject: MORTEVIELLE: Fix two GCC compiler warnings. The first is due to a variable set but never used i.e. destSurface, but I think this call is still needed to lock the area being copied, hence have removed the variable, but not the call. The second was a real bug in the type of the print format string used for savegame naming. slot is a number, not a string and can vary from 0 to 999, hence the 3 digit fixed size with zero padded prefix. --- engines/mortevielle/saveload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index ff3bee5c06..77c242c9e7 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -300,7 +300,7 @@ SaveStateDescriptor SavegameManager::querySaveMetaInfos(const Common::String &fi // Original savegame perhaps? delete f; - SaveStateDescriptor desc(slot, Common::String::format("Savegame - %s", slot)); + SaveStateDescriptor desc(slot, Common::String::format("Savegame - %03d", slot)); desc.setDeletableFlag(slot != 0); desc.setWriteProtectedFlag(slot == 0); return desc; -- cgit v1.2.3 From 2117feaeec980b06b996ad6d154e12761fcc9d5b Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sat, 3 Aug 2013 00:06:19 +0200 Subject: MORTEVIELLE: Prefer getBasePtr over direct Surface::pixels access. --- engines/mortevielle/saveload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 77c242c9e7..d46383a6fc 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -189,7 +189,7 @@ void SavegameManager::writeSavegameHeader(Common::OutSaveFile *out, const Common Graphics::Surface *thumb = new Graphics::Surface(); Graphics::Surface s = g_vm->_screenSurface.lockArea(Common::Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)); - ::createThumbnail(thumb, (const byte *)s.pixels, SCREEN_WIDTH, SCREEN_HEIGHT, thumbPalette); + ::createThumbnail(thumb, (const byte *)s.getBasePtr(0, 0), SCREEN_WIDTH, SCREEN_HEIGHT, thumbPalette); Graphics::saveThumbnail(*out, *thumb); thumb->free(); delete thumb; -- cgit v1.2.3 From 0c0f99eb96e9c7d13ae1430604a1d7569ec776cc Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sat, 3 Aug 2013 02:40:37 +0200 Subject: MORTEVIELLE: Take advantage of Surface::getPixels. --- engines/mortevielle/saveload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/mortevielle/saveload.cpp') diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index d46383a6fc..651ed07b65 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -189,7 +189,7 @@ void SavegameManager::writeSavegameHeader(Common::OutSaveFile *out, const Common Graphics::Surface *thumb = new Graphics::Surface(); Graphics::Surface s = g_vm->_screenSurface.lockArea(Common::Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)); - ::createThumbnail(thumb, (const byte *)s.getBasePtr(0, 0), SCREEN_WIDTH, SCREEN_HEIGHT, thumbPalette); + ::createThumbnail(thumb, (const byte *)s.getPixels(), SCREEN_WIDTH, SCREEN_HEIGHT, thumbPalette); Graphics::saveThumbnail(*out, *thumb); thumb->free(); delete thumb; -- cgit v1.2.3