From 7e49b2e8a1ab7a856795bffdd1cee44ab5d114e9 Mon Sep 17 00:00:00 2001 From: Christopher Page Date: Fri, 15 Aug 2008 19:44:17 +0000 Subject: Fixes for Cine engine loading from launcher svn-id: r33914 --- engines/cine/detection.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'engines/cine') diff --git a/engines/cine/detection.cpp b/engines/cine/detection.cpp index 28a8404d28..7fb13fb7c3 100644 --- a/engines/cine/detection.cpp +++ b/engines/cine/detection.cpp @@ -554,14 +554,23 @@ bool CineMetaEngine::createInstance(OSystem *syst, Engine **engine, const Common SaveStateList CineMetaEngine::listSaves(const char *target) const { Common::SaveFileManager *saveFileMan = g_system->getSavefileManager(); SaveStateList saveList; + + Common::String pattern = target; + pattern += ".?"; + Common::StringList filenames = saveFileMan->listSavefiles(pattern.c_str()); + sort(filenames.begin(), filenames.end()); + Common::StringList::const_iterator file = filenames.begin(); + Common::String filename = target; filename += ".dir"; Common::InSaveFile *in = saveFileMan->openForLoading(filename.c_str()); if (in) { int8 ch; - int slotNum = 0; char saveDesc[20]; do { + // Obtain the last digit of the filename, since they correspond to the save slot + int slotNum = atoi(file->c_str() + file->size() - 1); + uint pos = 0; do { ch = in->readByte(); @@ -575,8 +584,8 @@ SaveStateList CineMetaEngine::listSaves(const char *target) const { } } while (ch >= 32 && !in->eos()); if (saveDesc[0] != 0) { - saveList.push_back(SaveStateDescriptor(slotNum, Common::String(saveDesc), filename)); - slotNum++; + saveList.push_back(SaveStateDescriptor(slotNum, Common::String(saveDesc), *file)); + file++; } } while (!in->eos()); } -- cgit v1.2.3