[Scummvm-cvs-logs] SF.net SVN: scummvm:[33652] scummvm/branches/gsoc2008-rtl/gui

cpage88 at users.sourceforge.net cpage88 at users.sourceforge.net
Wed Aug 6 03:48:47 CEST 2008


Revision: 33652
          http://scummvm.svn.sourceforge.net/scummvm/?rev=33652&view=rev
Author:   cpage88
Date:     2008-08-06 01:48:46 +0000 (Wed, 06 Aug 2008)

Log Message:
-----------
Added a check to make sure there is an active engine available when trying to load a game from the launcher

Modified Paths:
--------------
    scummvm/branches/gsoc2008-rtl/gui/launcher.cpp
    scummvm/branches/gsoc2008-rtl/gui/launcher.h

Modified: scummvm/branches/gsoc2008-rtl/gui/launcher.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/gui/launcher.cpp	2008-08-05 23:58:45 UTC (rev 33651)
+++ scummvm/branches/gsoc2008-rtl/gui/launcher.cpp	2008-08-06 01:48:46 UTC (rev 33652)
@@ -919,33 +919,40 @@
 }
 
 void LauncherDialog::loadGame(int item) {
-	int idx;
-	_loadDialog->setList(generateSavegameList(item));
-	idx = _loadDialog->runModal();
-	if (idx >= 0) {
-		ConfMan.setInt("save_slot", idx);
-		ConfMan.setActiveDomain(_domains[item]);
-		close();
-	}	
+	String gameId = ConfMan.get("gameid", _domains[item]);
+	if (gameId.empty())
+		gameId = _domains[item];
+
+	const EnginePlugin *plugin = 0;
+	GameDescriptor game = EngineMan.findGame(gameId, &plugin);
+	
+	if (plugin) {
+		_loadDialog->setList(generateSavegameList(item, plugin));
+		int idx = _loadDialog->runModal();
+		if (idx >= 0) {
+			ConfMan.setInt("save_slot", idx);
+			ConfMan.setActiveDomain(_domains[item]);
+			close();
+		}
+	} else {
+		MessageDialog dialog("ScummVM could not find any engine capable of running the selected game!", "OK");
+		dialog.runModal();
+	}
 }
 
-Common::StringList LauncherDialog::generateSavegameList(int item) {
+Common::StringList LauncherDialog::generateSavegameList(int item, const EnginePlugin *plugin) {
 	String gameId = ConfMan.get("gameid", _domains[item]);
 	if (gameId.empty())
 		gameId = _domains[item];
-	
+
 	String description = _domains[item];
 	description.toLowercase();
 	
-	const EnginePlugin *plugin = 0;
-	GameDescriptor game = EngineMan.findGame(gameId, &plugin);
-	
+	StringList saveNames;
 	SaveStateList saveList = (*plugin)->listSaves(description.c_str());
-	StringList saveNames;
 
-	for (SaveStateList::const_iterator x = saveList.begin(); x != saveList.end(); ++x) {
+	for (SaveStateList::const_iterator x = saveList.begin(); x != saveList.end(); ++x)
 		saveNames.push_back(x->description().c_str());
-	}
 
 	return saveNames;
 }

Modified: scummvm/branches/gsoc2008-rtl/gui/launcher.h
===================================================================
--- scummvm/branches/gsoc2008-rtl/gui/launcher.h	2008-08-05 23:58:45 UTC (rev 33651)
+++ scummvm/branches/gsoc2008-rtl/gui/launcher.h	2008-08-06 01:48:46 UTC (rev 33652)
@@ -75,7 +75,7 @@
 	void editGame(int item);
 	void loadGame(int item);
 	
-	StringList generateSavegameList(int item);
+	StringList generateSavegameList(int item, const EnginePlugin *plugin);
 
 	void selectGame(const String &name);
 };


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list