From 6fe65dc719f69c3a3cd3a90426e148972716037f Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 21 Apr 2015 03:48:21 -0500 Subject: SHERLOCK: Beginnins of SaveManager class --- engines/sherlock/saveload.h | 74 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 engines/sherlock/saveload.h (limited to 'engines/sherlock/saveload.h') diff --git a/engines/sherlock/saveload.h b/engines/sherlock/saveload.h new file mode 100644 index 0000000000..a0f1da4041 --- /dev/null +++ b/engines/sherlock/saveload.h @@ -0,0 +1,74 @@ +/* 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. + * + */ + +#ifndef SHERLOCK_SAVELOAD_H +#define SHERLOCK_SAVELOAD_H + +#include "common/scummsys.h" +#include "common/savefile.h" +#include "common/str-array.h" +#include "engines/savestate.h" +#include "graphics/surface.h" + +namespace Sherlock { + +#define NUM_SAVEGAME_SLOTS 99 +#define SHERLOCK_SAVEGAME_VERSION 1 + +struct SherlockSavegameHeader { + uint8 _version; + Common::String _saveName; + Graphics::Surface *_thumbnail; + int _year, _month, _day; + int _hour, _minute; + int _totalFrames; +}; + +class SherlockEngine; + +class SaveManager { +private: + SherlockEngine *_vm; + Common::String _target; + Common::StringArray _savegames; + Graphics::Surface *_saveThumb; + + void createSavegameList(); +public: + SaveManager(SherlockEngine *vm, const Common::String &target); + ~SaveManager(); + + void show(); + + void createThumbnail(); + + static SaveStateList getSavegameList(const Common::String &target); + + void writeSavegameHeader(Common::OutSaveFile *out, SherlockSavegameHeader &header); + + static bool readSavegameHeader(Common::InSaveFile *in, SherlockSavegameHeader &header); + +}; + +} // End of namespace Sherlock + +#endif -- cgit v1.2.3 From 31860163709b12a38856fc017a217eb5e32610a7 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 21 Apr 2015 18:25:06 -0500 Subject: SHERLOCK: Implemented save game dialog event handling --- engines/sherlock/saveload.h | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'engines/sherlock/saveload.h') diff --git a/engines/sherlock/saveload.h b/engines/sherlock/saveload.h index a0f1da4041..20ce4e6067 100644 --- a/engines/sherlock/saveload.h +++ b/engines/sherlock/saveload.h @@ -31,9 +31,13 @@ namespace Sherlock { -#define NUM_SAVEGAME_SLOTS 99 +#define MAX_SAVEGAME_SLOTS 99 #define SHERLOCK_SAVEGAME_VERSION 1 +enum SaveMode { SAVEMODE_NONE = 0, SAVEMODE_LOAD = 1, SAVEMODE_SAVE = 2 }; + +extern const int ENV_POINTS[6][3]; + struct SherlockSavegameHeader { uint8 _version; Common::String _saveName; @@ -49,15 +53,18 @@ class SaveManager { private: SherlockEngine *_vm; Common::String _target; - Common::StringArray _savegames; Graphics::Surface *_saveThumb; void createSavegameList(); +public: + Common::StringArray _savegames; + int _savegameIndex; + SaveMode _envMode; public: SaveManager(SherlockEngine *vm, const Common::String &target); ~SaveManager(); - void show(); + void drawInterface(); void createThumbnail(); @@ -67,6 +74,16 @@ public: static bool readSavegameHeader(Common::InSaveFile *in, SherlockSavegameHeader &header); + int getHighlightedButton() const; + + void highlightButtons(int btnIndex); + + void loadGame(int slot); + void saveGame(int slot, const Common::String &name); + + bool checkGameOnScreen(int slot); + + bool getFilename(int slot); }; } // End of namespace Sherlock -- cgit v1.2.3 From 0984405a0dbe718522117507d7c75dc619c586a8 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 21 Apr 2015 22:51:03 -0500 Subject: SHERLOCK: Implement savegame synchronization --- engines/sherlock/saveload.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'engines/sherlock/saveload.h') diff --git a/engines/sherlock/saveload.h b/engines/sherlock/saveload.h index 20ce4e6067..0dad6256ca 100644 --- a/engines/sherlock/saveload.h +++ b/engines/sherlock/saveload.h @@ -25,6 +25,7 @@ #include "common/scummsys.h" #include "common/savefile.h" +#include "common/serializer.h" #include "common/str-array.h" #include "engines/savestate.h" #include "graphics/surface.h" @@ -56,10 +57,15 @@ private: Graphics::Surface *_saveThumb; void createSavegameList(); + + Common::String generateSaveName(int slot); + + void synchronize(Common::Serializer &s); public: Common::StringArray _savegames; int _savegameIndex; SaveMode _envMode; + bool _justLoaded; public: SaveManager(SherlockEngine *vm, const Common::String &target); ~SaveManager(); -- cgit v1.2.3 From 8b0e8cd505eebf199aa9888ce65012f1574b1233 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Wed, 22 Apr 2015 06:25:04 -0500 Subject: SHERLOCK: Hook up savegames to launcher --- engines/sherlock/saveload.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'engines/sherlock/saveload.h') diff --git a/engines/sherlock/saveload.h b/engines/sherlock/saveload.h index 0dad6256ca..0865fd3856 100644 --- a/engines/sherlock/saveload.h +++ b/engines/sherlock/saveload.h @@ -58,8 +58,6 @@ private: void createSavegameList(); - Common::String generateSaveName(int slot); - void synchronize(Common::Serializer &s); public: Common::StringArray _savegames; @@ -76,6 +74,8 @@ public: static SaveStateList getSavegameList(const Common::String &target); + Common::String generateSaveName(int slot); + void writeSavegameHeader(Common::OutSaveFile *out, SherlockSavegameHeader &header); static bool readSavegameHeader(Common::InSaveFile *in, SherlockSavegameHeader &header); -- cgit v1.2.3 From 902b79116552b0605668f130e0695e4798ef87d5 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Sat, 9 May 2015 18:04:13 +0200 Subject: SHERLOCK: Make copyright headers consistent --- engines/sherlock/saveload.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'engines/sherlock/saveload.h') diff --git a/engines/sherlock/saveload.h b/engines/sherlock/saveload.h index 0865fd3856..c9a7286c6b 100644 --- a/engines/sherlock/saveload.h +++ b/engines/sherlock/saveload.h @@ -8,12 +8,12 @@ * 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. -- cgit v1.2.3 From 1df183ffcb08a69ed414afd69284a0596fee4e82 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 19 May 2015 07:37:55 -0400 Subject: SHERLOCK: Move method comments from cpp to headers --- engines/sherlock/saveload.h | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'engines/sherlock/saveload.h') diff --git a/engines/sherlock/saveload.h b/engines/sherlock/saveload.h index c9a7286c6b..371a6e4c79 100644 --- a/engines/sherlock/saveload.h +++ b/engines/sherlock/saveload.h @@ -56,8 +56,14 @@ private: Common::String _target; Graphics::Surface *_saveThumb; + /** + * Build up a savegame list, with empty slots given an explicit Empty message + */ void createSavegameList(); + /** + * Synchronize the data for a savegame + */ void synchronize(Common::Serializer &s); public: Common::StringArray _savegames; @@ -68,27 +74,65 @@ public: SaveManager(SherlockEngine *vm, const Common::String &target); ~SaveManager(); + /** + * Shows the in-game dialog interface for loading and saving games + */ void drawInterface(); + /** + * Creates a thumbnail for the current on-screen contents + */ void createThumbnail(); + /** + * Load a list of savegames + */ static SaveStateList getSavegameList(const Common::String &target); + /** + * Support method that generates a savegame name + * @param slot Slot number + */ Common::String generateSaveName(int slot); + /** + * Write out the header information for a savegame + */ void writeSavegameHeader(Common::OutSaveFile *out, SherlockSavegameHeader &header); + /** + * Read in the header information for a savegame + */ static bool readSavegameHeader(Common::InSaveFile *in, SherlockSavegameHeader &header); + /** + * Return the index of the button the mouse is over, if any + */ int getHighlightedButton() const; + /** + * Handle highlighting buttons + */ void highlightButtons(int btnIndex); + /** + * Load the game in the specified slot + */ void loadGame(int slot); + + /** + * Save the game in the specified slot with the given name + */ void saveGame(int slot, const Common::String &name); + /** + * Make sure that the selected savegame is on-screen + */ bool checkGameOnScreen(int slot); + /** + * Prompts the user to enter a filename in a given slot + */ bool getFilename(int slot); }; -- cgit v1.2.3 From fa35249a240d7bdfe5f5b7eb9ae073126d5080c4 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 19 May 2015 08:01:06 -0400 Subject: SHERLOCK: More syntactic fixes --- engines/sherlock/saveload.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/sherlock/saveload.h') diff --git a/engines/sherlock/saveload.h b/engines/sherlock/saveload.h index 371a6e4c79..07626a2082 100644 --- a/engines/sherlock/saveload.h +++ b/engines/sherlock/saveload.h @@ -133,7 +133,7 @@ public: /** * Prompts the user to enter a filename in a given slot */ - bool getFilename(int slot); + bool promptForFilename(int slot); }; } // End of namespace Sherlock -- cgit v1.2.3 From 033241eb434ff4916c140885a6cda84a593406d5 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 19 May 2015 09:19:42 -0400 Subject: SHERLOCK: Corrected incorrect method name in SaveManager --- engines/sherlock/saveload.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'engines/sherlock/saveload.h') diff --git a/engines/sherlock/saveload.h b/engines/sherlock/saveload.h index 07626a2082..a86d5be035 100644 --- a/engines/sherlock/saveload.h +++ b/engines/sherlock/saveload.h @@ -131,9 +131,9 @@ public: bool checkGameOnScreen(int slot); /** - * Prompts the user to enter a filename in a given slot + * Prompts the user to enter a description in a given slot */ - bool promptForFilename(int slot); + bool promptForDescription(int slot); }; } // End of namespace Sherlock -- cgit v1.2.3 From 6f9693102f99843501822f27431d839777fb43d5 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 19 May 2015 09:35:53 -0400 Subject: SHERLOCK: Further minor cleanups --- engines/sherlock/saveload.h | 1 + 1 file changed, 1 insertion(+) (limited to 'engines/sherlock/saveload.h') diff --git a/engines/sherlock/saveload.h b/engines/sherlock/saveload.h index a86d5be035..066d983b26 100644 --- a/engines/sherlock/saveload.h +++ b/engines/sherlock/saveload.h @@ -33,6 +33,7 @@ namespace Sherlock { #define MAX_SAVEGAME_SLOTS 99 +#define ONSCREEN_FILES_COUNT 5 #define SHERLOCK_SAVEGAME_VERSION 1 enum SaveMode { SAVEMODE_NONE = 0, SAVEMODE_LOAD = 1, SAVEMODE_SAVE = 2 }; -- cgit v1.2.3 From 46e85f389f4fb9f3d956c42e77345f79701d7a93 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Wed, 20 May 2015 21:15:33 -0400 Subject: SHERLOCK: Go to save mode when clicking empty save slot --- engines/sherlock/saveload.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'engines/sherlock/saveload.h') diff --git a/engines/sherlock/saveload.h b/engines/sherlock/saveload.h index 066d983b26..a7ed852a5f 100644 --- a/engines/sherlock/saveload.h +++ b/engines/sherlock/saveload.h @@ -135,6 +135,11 @@ public: * Prompts the user to enter a description in a given slot */ bool promptForDescription(int slot); + + /** + * Returns true if the given save slot is empty + */ + bool isSlotEmpty(int slot) const; }; } // End of namespace Sherlock -- cgit v1.2.3 From af2a1a33514ae101d1df52e6a978296ed0bef68b Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 7 Jun 2015 19:18:14 -0400 Subject: SHERLOCK: Refactoring, cleanup, and fixes for savegame code --- engines/sherlock/saveload.h | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'engines/sherlock/saveload.h') diff --git a/engines/sherlock/saveload.h b/engines/sherlock/saveload.h index a7ed852a5f..49ccc508ef 100644 --- a/engines/sherlock/saveload.h +++ b/engines/sherlock/saveload.h @@ -34,7 +34,11 @@ namespace Sherlock { #define MAX_SAVEGAME_SLOTS 99 #define ONSCREEN_FILES_COUNT 5 -#define SHERLOCK_SAVEGAME_VERSION 1 + +enum { + CURRENT_SAVEGAME_VERSION = 2, + MINIMUM_SAVEGAME_VERSION = 2 +}; enum SaveMode { SAVEMODE_NONE = 0, SAVEMODE_LOAD = 1, SAVEMODE_SAVE = 2 }; @@ -51,6 +55,20 @@ struct SherlockSavegameHeader { class SherlockEngine; + +/** + * Derived serializer class with extra synchronization types + */ +class Serializer : public Common::Serializer { +public: + Serializer(Common::SeekableReadStream *in, Common::WriteStream *out) : Common::Serializer(in, out) {} + + /** + * New method to allow setting the version + */ + void setSaveVersion(byte version) { _version = version; } +}; + class SaveManager { private: SherlockEngine *_vm; @@ -65,7 +83,7 @@ private: /** * Synchronize the data for a savegame */ - void synchronize(Common::Serializer &s); + void synchronize(Serializer &s); public: Common::StringArray _savegames; int _savegameIndex; -- cgit v1.2.3 From 92ac962718b07e9b82199d39bb5ce970717da57d Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Thu, 25 Jun 2015 20:42:02 -0400 Subject: SHERLOCK: RT: Further split-off of Scalpel-specific code --- engines/sherlock/saveload.h | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) (limited to 'engines/sherlock/saveload.h') diff --git a/engines/sherlock/saveload.h b/engines/sherlock/saveload.h index 49ccc508ef..e485cfc606 100644 --- a/engines/sherlock/saveload.h +++ b/engines/sherlock/saveload.h @@ -42,7 +42,7 @@ enum { enum SaveMode { SAVEMODE_NONE = 0, SAVEMODE_LOAD = 1, SAVEMODE_SAVE = 2 }; -extern const int ENV_POINTS[6][3]; +extern const char *const EMPTY_SAVEGAME_SLOT; struct SherlockSavegameHeader { uint8 _version; @@ -70,7 +70,7 @@ public: }; class SaveManager { -private: +protected: SherlockEngine *_vm; Common::String _target; Graphics::Surface *_saveThumb; @@ -90,14 +90,10 @@ public: SaveMode _envMode; bool _justLoaded; public: + static SaveManager *init(SherlockEngine *vm, const Common::String &target); SaveManager(SherlockEngine *vm, const Common::String &target); ~SaveManager(); - /** - * Shows the in-game dialog interface for loading and saving games - */ - void drawInterface(); - /** * Creates a thumbnail for the current on-screen contents */ @@ -144,16 +140,6 @@ public: */ void saveGame(int slot, const Common::String &name); - /** - * Make sure that the selected savegame is on-screen - */ - bool checkGameOnScreen(int slot); - - /** - * Prompts the user to enter a description in a given slot - */ - bool promptForDescription(int slot); - /** * Returns true if the given save slot is empty */ -- cgit v1.2.3 From 6d35a547ad86977b67077c5e8069b3679828a09b Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Thu, 25 Jun 2015 21:03:10 -0400 Subject: SHERLOCK: Add missing virtual prefix to SaveManager destructor --- engines/sherlock/saveload.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/sherlock/saveload.h') diff --git a/engines/sherlock/saveload.h b/engines/sherlock/saveload.h index e485cfc606..0aaa9cf801 100644 --- a/engines/sherlock/saveload.h +++ b/engines/sherlock/saveload.h @@ -92,7 +92,7 @@ public: public: static SaveManager *init(SherlockEngine *vm, const Common::String &target); SaveManager(SherlockEngine *vm, const Common::String &target); - ~SaveManager(); + virtual ~SaveManager(); /** * Creates a thumbnail for the current on-screen contents -- cgit v1.2.3 From fc0cf31fdea7dc2d796b7d2109324d2d613d2e0b Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 24 Jul 2015 22:14:40 -0400 Subject: SHERLOCK: RT: Skeleton class for Files dialog --- engines/sherlock/saveload.h | 1 - 1 file changed, 1 deletion(-) (limited to 'engines/sherlock/saveload.h') diff --git a/engines/sherlock/saveload.h b/engines/sherlock/saveload.h index 0aaa9cf801..b4e9b3e3f3 100644 --- a/engines/sherlock/saveload.h +++ b/engines/sherlock/saveload.h @@ -87,7 +87,6 @@ protected: public: Common::StringArray _savegames; int _savegameIndex; - SaveMode _envMode; bool _justLoaded; public: static SaveManager *init(SherlockEngine *vm, const Common::String &target); -- cgit v1.2.3 From ad72d862b228d30a098f07a82c0984f42590a185 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Thu, 30 Jul 2015 20:34:31 -0400 Subject: SHERLOCK: Bump up savegame version --- engines/sherlock/saveload.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'engines/sherlock/saveload.h') diff --git a/engines/sherlock/saveload.h b/engines/sherlock/saveload.h index b4e9b3e3f3..7f636792ac 100644 --- a/engines/sherlock/saveload.h +++ b/engines/sherlock/saveload.h @@ -36,8 +36,8 @@ namespace Sherlock { #define ONSCREEN_FILES_COUNT 5 enum { - CURRENT_SAVEGAME_VERSION = 2, - MINIMUM_SAVEGAME_VERSION = 2 + CURRENT_SAVEGAME_VERSION = 3, + MINIMUM_SAVEGAME_VERSION = 3 }; enum SaveMode { SAVEMODE_NONE = 0, SAVEMODE_LOAD = 1, SAVEMODE_SAVE = 2 }; -- cgit v1.2.3 From 621a37bbe30756a7983c1e5463389539898d41a5 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 15 Aug 2015 20:26:36 -0400 Subject: SHERLOCK: Fix saving/loading when characters are moving --- engines/sherlock/saveload.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'engines/sherlock/saveload.h') diff --git a/engines/sherlock/saveload.h b/engines/sherlock/saveload.h index 7f636792ac..f4f3e7cfd9 100644 --- a/engines/sherlock/saveload.h +++ b/engines/sherlock/saveload.h @@ -36,8 +36,8 @@ namespace Sherlock { #define ONSCREEN_FILES_COUNT 5 enum { - CURRENT_SAVEGAME_VERSION = 3, - MINIMUM_SAVEGAME_VERSION = 3 + CURRENT_SAVEGAME_VERSION = 4, + MINIMUM_SAVEGAME_VERSION = 4 }; enum SaveMode { SAVEMODE_NONE = 0, SAVEMODE_LOAD = 1, SAVEMODE_SAVE = 2 }; -- cgit v1.2.3