diff options
author | Paul Gilbert | 2012-05-16 00:05:48 +1000 |
---|---|---|
committer | Paul Gilbert | 2012-05-17 19:38:57 +1000 |
commit | 59942d9a41cf7d43b95e9775aca66c241884b516 (patch) | |
tree | 7f8b0b671cff28dfb233c57ee6f3502f084db538 /engines/tony/detection.cpp | |
parent | 88762667b52e4b904c56ecc94bf304c1a91e9feb (diff) | |
download | scummvm-rg350-59942d9a41cf7d43b95e9775aca66c241884b516.tar.gz scummvm-rg350-59942d9a41cf7d43b95e9775aca66c241884b516.tar.bz2 scummvm-rg350-59942d9a41cf7d43b95e9775aca66c241884b516.zip |
TONY: Work on enabling GMM saving and loading
Diffstat (limited to 'engines/tony/detection.cpp')
-rw-r--r-- | engines/tony/detection.cpp | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/engines/tony/detection.cpp b/engines/tony/detection.cpp index 944f717f26..5b1092d2c0 100644 --- a/engines/tony/detection.cpp +++ b/engines/tony/detection.cpp @@ -25,6 +25,7 @@ #include "engines/advancedDetector.h" #include "common/system.h" +#include "graphics/surface.h" #include "tony/tony.h" #include "tony/game.h" @@ -75,18 +76,23 @@ public: virtual SaveStateList listSaves(const char *target) const; virtual int getMaximumSaveSlot() const; virtual void removeSaveState(const char *target, int slot) const; + SaveStateDescriptor TonyMetaEngine::querySaveMetaInfos(const char *target, int slot) const; }; bool TonyMetaEngine::hasFeature(MetaEngineFeature f) const { return (f == kSupportsListSaves) || -// (f == kSupportsLoadingDuringStartup) || - (f == kSupportsDeleteSave); + (f == kSupportsLoadingDuringStartup) || + (f == kSupportsDeleteSave) || + (f == kSavesSupportMetaInfo) || + (f == kSavesSupportThumbnail); } bool Tony::TonyEngine::hasFeature(EngineFeature f) const { return - (f == kSupportsRTL); + (f == kSupportsRTL) || + (f == kSupportsLoadingDuringRuntime) || + (f == kSupportsSavingDuringRuntime); } bool TonyMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const { @@ -136,6 +142,30 @@ void TonyMetaEngine::removeSaveState(const char *target, int slot) const { g_system->getSavefileManager()->removeSavefile(filename); } +SaveStateDescriptor TonyMetaEngine::querySaveMetaInfos(const char *target, int slot) const { + Tony::RMString saveName; + byte difficulty; + + Graphics::PixelFormat pixelFormat(2, 5, 5, 5, 0, 10, 5, 0, 0); + Graphics::Surface *thumbnail = new Graphics::Surface(); + thumbnail->create(160, 120, pixelFormat); + + if (Tony::RMOptionScreen::LoadThumbnailFromSaveState(slot, (byte *)thumbnail->pixels, saveName, difficulty)) { + // Create the return descriptor + SaveStateDescriptor desc(slot, (const char *)saveName); + desc.setDeletableFlag(true); + desc.setWriteProtectedFlag(false); + desc.setThumbnail(thumbnail); + + return desc; + } + + thumbnail->free(); + delete thumbnail; + return SaveStateDescriptor(); +} + + #if PLUGIN_ENABLED_DYNAMIC(TONY) REGISTER_PLUGIN_DYNAMIC(TONY, PLUGIN_TYPE_ENGINE, TonyMetaEngine); #else |