diff options
author | Johannes Schickel | 2008-09-14 21:00:24 +0000 |
---|---|---|
committer | Johannes Schickel | 2008-09-14 21:00:24 +0000 |
commit | 92fc264461e1870725310cba38916afaece13022 (patch) | |
tree | 0b15336970ad872afb01a34917401d9528e93b33 /engines/kyra | |
parent | 6dd62f650cc161617ab4f48607c550a1644be8a1 (diff) | |
download | scummvm-rg350-92fc264461e1870725310cba38916afaece13022.tar.gz scummvm-rg350-92fc264461e1870725310cba38916afaece13022.tar.bz2 scummvm-rg350-92fc264461e1870725310cba38916afaece13022.zip |
- Added thumbnail support to launcher load dialog.
- Adopted KYRA to support displaying thumbnails in load dialog (SCUMM engine has yet to follow)
svn-id: r34539
Diffstat (limited to 'engines/kyra')
-rw-r--r-- | engines/kyra/detection.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/engines/kyra/detection.cpp b/engines/kyra/detection.cpp index 834f9f70c6..06d96d57bb 100644 --- a/engines/kyra/detection.cpp +++ b/engines/kyra/detection.cpp @@ -1068,6 +1068,7 @@ public: bool createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const; SaveStateList listSaves(const char *target) const; void removeSaveState(const char *target, int slot) const; + Graphics::Surface *loadThumbnailFromSlot(const char *target, int slot) const; }; bool KyraMetaEngine::hasFeature(MetaEngineFeature f) const { @@ -1075,7 +1076,8 @@ bool KyraMetaEngine::hasFeature(MetaEngineFeature f) const { (f == kSupportsRTL) || (f == kSupportsListSaves) || (f == kSupportsDirectLoad) || - (f == kSupportsDeleteSave); + (f == kSupportsDeleteSave) || + (f == kSupportsThumbnails); } bool KyraMetaEngine::createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const { @@ -1201,6 +1203,22 @@ void KyraMetaEngine::removeSaveState(const char *target, int slot) const { } +Graphics::Surface *KyraMetaEngine::loadThumbnailFromSlot(const char *target, int slot) const { + char extension[6]; + snprintf(extension, sizeof(extension), ".%03d", slot); + + Common::String filename = target; + filename += extension; + + Common::InSaveFile *in = g_system->getSavefileManager()->openForLoading(filename.c_str()); + Kyra::KyraEngine_v1::SaveHeader header; + + if (in && Kyra::KyraEngine_v1::readSaveHeader(in, true, header) == Kyra::KyraEngine_v1::kRSHENoError) + return header.thumbnail; + + return 0; +} + #if PLUGIN_ENABLED_DYNAMIC(KYRA) REGISTER_PLUGIN_DYNAMIC(KYRA, PLUGIN_TYPE_ENGINE, KyraMetaEngine); #else |