1,079
edits
(One LaTeX TODO resolved) |
(Removed some obsolete TODOs) |
||
Line 131: | Line 131: | ||
=== Plugins === | === Plugins === | ||
* Add a plugin API that allows querying a plugin for the savegames associated with a given game; that is, you pass the name of a target from the config to the plugin, and it returns a list of savegames. How that list would look like exactly is debatable; but it should be possible to extract a user friendly name; a slot ID corresponding to the "-x" command line param; and possibly a filename. Justification: This API would make it possible to directly load savegames from the launcher. | * Add a plugin API that allows querying a plugin for the savegames associated with a given game; that is, you pass the name of a target from the config to the plugin, and it returns a list of savegames. How that list would look like exactly is debatable; but it should be possible to extract a user friendly name; a slot ID corresponding to the "-x" command line param; and possibly a filename. Justification: This API would make it possible to directly load savegames from the launcher.<br>This savegame API could return additional (optional) information for each savegame entry: name; creation date; thumbnail screenshot | ||
* On OSX: Support a plugin build in the bundle target: *.plugin files should be put into ScummVM.app/Contents/PlugIns/; this also means that the loader needs to search in the plugin dir of the active bundle. So use the CF bundle API, inside a #ifdef MACOSX block. | * On OSX: Support a plugin build in the bundle target: *.plugin files should be put into ScummVM.app/Contents/PlugIns/; this also means that the loader needs to search in the plugin dir of the active bundle. So use the CF bundle API, inside a #ifdef MACOSX block. | ||
* When creating an engine instance, there is currently no way for the plugin to indicate an error, except for returning a NULL value. It would be nice if the engine could specify why creating the engine instance failed (e.g. due to lack of memory, because a file couldn't be found, because the game was not recognized, etc.). | * When creating an engine instance, there is currently no way for the plugin to indicate an error, except for returning a NULL value. It would be nice if the engine could specify why creating the engine instance failed (e.g. due to lack of memory, because a file couldn't be found, because the game was not recognized, etc.). | ||
* Split base/plugins.h into the part needed to implement a plugin, and the part needed by client code. Maybe also move DetectedGame and GameSettings to a new file base/game.h | * Split base/plugins.h into the part needed to implement a plugin, and the part needed by client code. Maybe also move DetectedGame and GameSettings to a new file base/game.h | ||
* Replace DetectedGame by a 'map' containing essentially the same data that the config file would contain -- i.e. gameid, description, language, platform; but also any further data, like e.g. basename, target_md5, or *anything* the engine deems important. -> far more flexible, and helps to simplify the launcher code, too. | * Replace DetectedGame by a 'map' containing essentially the same data that the config file would contain -- i.e. gameid, description, language, platform; but also any further data, like e.g. basename, target_md5, or *anything* the engine deems important. -> far more flexible, and helps to simplify the launcher code, too. |
edits