[Scummvm-devel] New GUI options were added to ScummVM. ATTN all engine devs.
Max Horn
max at quendi.de
Sat Jun 6 21:46:44 CEST 2009
Am 06.06.2009 um 21:02 schrieb Eugene Sandulenko:
> Hi Team,
>
> I recently added new feature to ScummVM GUI which I called Game GUI
> options. This was an old planned thing from me and I finally got my
> hands over the implementation.
Awesome work. As are the other changes, like that new "search" widget
in the launcher :).
>
> In short, it is a 'guioptions=' key which is added on game detection,
> and it is a list of "no's" which is used to disable certain GUI
> widgets
> which are not used by some particular game.
>
> Since it is number of 'NO's' and not 'DO's', it does not break all
> existing scummvm.ini files, which will make our users happy. As a
> consequence, in order to benefit from GUI options, a user should
> redetect all his game collection. Mass add could help with it (which
> was also improved, btw ;) ).
But people (e.g. me) will *hate* to redetect, as that would break
existing target names. We really need an upgrade feature, which either
scans through all target (or just a subset, like a single one), and
updates them. While we are it, some users (e.g. me ;) might also like
having the feature to update the game desc to to the latest ones (our
current game desc strings are much more detailed. Of course, not
everybody will want that, i.e., those people who customized their
descs or are jus fond of them.
I propose we add an "--update-target-settings" command line option,
which does that. And add ways in the GUI to trigger it: For once, if
we start and notice that the gameoptions are missing (or that the .ini
version is "too old"... we don't use that version yet, right? well,
maybe we should); in that case, we should ask the user "do you want me
to upgrade your existing targets?". Or even better: Just do it
automatically, and display a progress dialog which says "Now upgrading
your game targets..." and which auto-closes once done.
If this sounds OK to people, I'll work on it.
>
> The currently implemented flags are (common/util.h & .cpp):
>
> GUIO_NOSUBTITLES -- disables all subtitle controls
> GUIO_NOMUSIC -- disables music volume controls
> GUIO_NOSPEECH -- disables speech volume controls
> GUIO_NOSFX -- disables SFX volume controls
> GUIO_NOMIDI -- disables whole MIDI tab
> GUIO_NOLAUNCHLOAD -- disable Load button
[...]
> detection tables and fix wrong entries.
>
> Some thoughts about potential flags and some rants on the
> implementation.
>
> I think that NOMT32 and NOADLIB could make sense since there are
> number of controls which could look weird to the end user who do not
> use, esp. Roland MT-32 device.
Aye. Actually, I think somewhat more fine grained information would be
even better: For each game, the supported music driver "kinds" should
be listed somehow (maybe as separate gui options, or maybe in a way
that does not yet exist; this is more or less part of the "revamp the
music driver API" project, I guess). So that for you are only shown
those drivers that make sense for the given game. Types would
include: pc speaker, pcjr, adlib, FM-TOWNS, MIDI/GM, MIDI/MT32, etc.
[...]
>
> Also currently there is no way to update already set GUI options,
> other
> that redetecting the game over again. This is a flaw in our current
> design, but I think it is quite possible with a bit of work to have a
> method like "redetectGame(id)" in engine implemented. This will let us
> to do more flexible things with our configuration file when engines
> evolve.
I already talked about this above. I think this can be done without
*any* extra code in the engines. Basically, you just grab an existing
target, and point the right (Meta)Engine at the directory specified in
the target, and ask it to detect. Then, compare it to the existing
target. If it seems to be "compatible", update the game options.
>
> Also since there is no way to update the flags, the list is turned
> into
> list of 'NO's,' whereas more natural would be to have it as list of
> 'DO's' as the games tend to use narrow subset of options.
Makes sense, I guess.
>
> Additionally, if a developer mistakenly puts some NO in GUI option,
> there is no current way to remove it, only by forcing the user to
> redetect the game. In my opinion this is really nasty and
> annoying drawback of our current architecture.
Another reason to have an "auto-update" mode. But it will never be
perfect, of course -- a user could just manually mess with those
options. As long as there is an easy way to reset them, though, that
won't be an issue.
Cheers,
Max
More information about the Scummvm-devel
mailing list