1,079
edits
(Moved RTL feature up, fixed page rendering) |
|||
Line 179: | Line 179: | ||
* Refactoring skills. | * Refactoring skills. | ||
* Knowledge of one or more ScummVM platform backends is desirable. | * Knowledge of one or more ScummVM platform backends is desirable. | ||
=== "Return to launcher" and global main menu === | |||
''Technical Contact'': [[User:Fingolfin|Max Horn]], [[User:JoostP|Joost Peters]] | |||
''Background:'' | |||
Presently we have to exit the ScummVM application completely when a users exit a game because most | |||
engines do not clean up memory properly on their exit. In particular, it is not possible to return to the | |||
launcher (short: Rtl) without restarting ScummVM, which is annoying, especially on systems where "exit" equals | |||
"reboot" (e.g. certain gaming consoles). | |||
Also, there is no uniform GUI in ScummVM which lets the user Quit/Return to launcher/Set game options. The SCUMM engine | |||
has such a dialog (shown when pressing F5), but most engines have custom dialogs for this, and not all offer everything | |||
(like there may be no button for quit, no way to change all game options available in the launcher, etc.) | |||
''The Task:'' | |||
The first part concerns the Rtl feature. | |||
What we need is to analyze what's going on there and plug all memory leaks, properly shut down | |||
subsystems like sound, so it will be possible to play more than a single game within one | |||
session. | |||
The task will require good use of a memory leak analyzer and C++. | |||
* Make sure engines cleanup all properly after themselves: Find & fix memoy leaks, make sure sounds are stopped, files are closed, etc. | |||
* Offer the user the option to return to the launcher (short: RTL), instead of quitting. | |||
** E.g. add a dialog which is shown upon a quit trigger which asks whether to quit, RTL or cancel. (See also the code handling the "confirm_exit" config variable in <code>backends/events/default/default-events.cpp</code> and elsewhere.) | |||
** In SCUMM, add a "RTL" button to the F5 menu. | |||
Make sure to reuse code when possible and appropriate (e.g. for the quit confirmation dialog). | |||
The next part of the task is to implement a "main menu" dialog (using our GUI code, modeled after the one in SCUMM). This dialog would have buttons for "About", "Options", "Quit", "Return to launcher", "Cancel", and should be extensible (so that e.g. the SCUMM main dialog could be a subclass of this, which adds extra buttons for "Save" and "Load"). The "main menu" dialog should be usable from all engines via a shared hotkey (so e.g. you might want to hook it up via the EventManager). | |||
As a bonus, make the dialog look cool, e.g. by displaying the ScummVM logo in it. | |||
== Audio related tasks == | == Audio related tasks == | ||
Line 339: | Line 373: | ||
If you don't have any of the required games, there are several [http://www.scummvm.org/demos.php demos] available. A 16bit graphics demo example would be the [http://quick.mixnmojo.com/demos/ffcovedemo.zip Freddi5 demo]. | If you don't have any of the required games, there are several [http://www.scummvm.org/demos.php demos] available. A 16bit graphics demo example would be the [http://quick.mixnmojo.com/demos/ffcovedemo.zip Freddi5 demo]. | ||
edits