New semantics is as follows:
[-p <dir>] --add adds all games in <dir> or
working dir
[-p <dir>] --detect enumerates dectected games in
<dir> with their ids
[-p <dir>] --game <id> --add adds just game <id> if found
in <dir> and not already added
[-p <dir>] --recursive --add adds all games in <dir> and
subdirs if not already added
[-p <dir>] --recursive --game <id> --add
adds just game <id> if found
in <dir> or its subdirs and
not already added
[-p <dir>] --recursive --detect enumerates games in <dir>
and subdirs
[-p <dir>] --auto-detect launches the first game
found in <dir>
[-p <dir>] --recursive --auto-detect
displays error message
The reason for the displaying an error message when attempting to do
autodetection on a whole tree is mainly one of UX, IMO it *might* get
confusing on a sufficiently large/deep tree.
The relevant if() can be removed safely if it's concluded that's not the
case.
This implements the behaviour as discussed in PR926:
https://github.com/scummvm/scummvm/pull/926#discussion_r126132411
Essentially:
[-p <dir>] --add adds all games in <dir> or working dir
[-p <dir>] --detect enumerates dectected games with their
ids
[-p <dir>] --game <id> --add adds just game <id>
This fixes tons of warnings with clang from a recent xcode version on
macOS (and possibly other systems) complaining that an instantiation
of _singleton is required but no definition is available.
Exposed to command line via --[no-]dirtyrects.
As dirty rectangles make the workload vary a lot between frames, it makes
performance regressions harder to spot. Disabling it produces lower, but
much more regular FPS counts.
32, 16 and 0 (default) are supported, 0 currently falling back to
32 as it was the previous default (should auto-detect eventually).
Only supported by software renderer for now.
There were several issues.
The first one was introduced recently and caused the preferred target
to be used as a game ID, which resulted in an error when this is not
a valid game ID. Thus this fixes bug #9754.
The other issues were here since the auto-detect command was added and
caused other command line options, suh as the path, to be lost. This
usually resulted in a failure to start the game as the data files could
not be found (unless the ID happened to be the same name as a target
previously added). This also caused a reappearance of the old bug
This is automatically added by Xcode when not toggling off the
"Allow debugging when using document Versions Browser". Since
this is on by default, and to avoid everybody having to google it,
I have decided to just ignore it on OS X.
Allows to display games in the current directory that are compatible with ScummVM.
This option enables the user to find games in the directory from which ScummVM was launched. In terminal it looks like:
--------------------------------------------------------------------------------------
$ scummvm --auto-detect
ID Description
-------------------- ---------------------------------------------------------
drascula Drascula: The Vampire Strikes Back (DOS/English)
queen Flight of the Amazon Queen (Talkie/DOS/English)
--------------------------------------------------------------------------------------
The current directory is defined as dir(".") then using EngineMan.detectGames to recognise games.
Registering the OSDMessageQueue instance as an event source is now done
right after the event manager is initialised. This ensures that it is created in a
sensible place and not for example in another thread). Also registering the
event source is moved to a separate function instead of being in the constructor
to remove any issue in case some code tries to display a OSD Message very early
on (the instance would be created then, but it would be registered as an event
source later).
In most cases that's the right one to check. USE_CLOUD is defined when
either USE_LIBCURL or USE_SDL_NET are, which means if there is no curl,
USE_CLOUD still could be defined and linking errors would appear.
This commit adds:
* ConfMan's new "cloud" domain;
* CloudManager's init() method, where it loads keys from "cloud" configs
domain;
* CurlJsonRequest's addHeader() and addPostField() methods;
* temporary Storage's printInfo() method;
* DropboxStorage's implementation of printInfo(), which is using access
token and user id;
* DropboxStorage's loadFromConfig() static method to load access token
and user id from configs and create a Storage instance with those;
* temporary DropboxStorage's authThroughConsole() static method, which
guides user through auth process from the console.
So, in CloudManager's init() implementation ScummVM checks that there is
"current_storage_type" key in "cloud" domain of configs, and loads
corresponding storage if there is such key.
If there is no such key, ScummVM offers user to auth with Dropbox.
That's done through console, and thus it's temporary (it also requires
restarting ScummVM twice and manually editing config.ini file).
This commit introduces Common::CloudManager, which can be accessed from
OSystem.
The backend for this manager is Cloud::Manager (defined in
backends/cloud/manager.h). It should load all users storages from
configs and provide access to current Storage instance. For now it just
creates a new one.
Cloud::Storage (backends/cloud/storage.h) provides an API to interact
with cloud storage, for example, create new directory or sync files.
Right now it's not ready and has only two dummy methods: listDirectory()
and syncSaves().
There is Cloud::Dropbox::DropboxStorage backend
(backends/cloud/dropbox/dropboxstorage.h) for Cloud::Storage. Right now
it implements both listDirectory() and syncSaves() with starting timer
task and handling it by printing out some JSON examples.
This commit also adds CloudThread class, which work() method is called
every second by TimerManager.
Right now it prints JSON examples on the console, so that's why it's
introduced with SimpleJSON library.
Many of our systems currently generate significant amount of debug
output on deeper levels. Now, when your engine is using Debug Channels,
you might want to show that debug information only, which is currently
not possible, as the generic output will be mixed in your output.
Alternative solution would be to implement possibility to specify
per-channel debug levels.
The error message was not correct.
When you add a game data dir to launcher and after do this
rename game data dir the error was wrong.
It said that the "path wasn't a directory",
the expected error message was
"Path does not exists" because we had changed.
How to solve this:
We split in two the validation of the path, first
we check if it's a existing path and then if the path is a directory.
if (!dir.exists())
err = Common::kPathDoesNotExist;
else if (!dir.isDirectory())
err = Common::kPathNotDirectory;
Solve Bug: 6765 Wrong error code if directory missing
Prior to OS X 10.9, the OS was passing the process serial number
as an additional argument on OS X when starting an application bundle.
For whatever reason, when compiling with SDL 1.2 this gets suppressed
before getting to the place where we handle command line arguments.
But when compiling with SDL2 this additional argument remains so we
need to ignore it to avoid erroring out.
Instead of returning to the launcher, a game may now specify a list
of "chained" games and optional save slots. The first game is popped
from the list and started. Quitting still quits the entire ScummVM.
It seemed like the sensible thing to do.
AmigaOS features a "version" command which can read out version information if stored in a sepcific way.
To get to that information it parses the exe for "$VER:" and prints out everything behind it.
This adds such a version information to ScummVM so users on AmigaOS can read it out without the need to use "scummvm --version"
This is a (temporary) hack to assure that when the launcher is set up as an
SurfaceSDL graphics mode and the game is using an OpenGL graphics mode
everything will work as expected.
This is a manual merge of a slightly adapted pull request #296.
The changes made are:
- Each time the theme format changes, the version was increased
- default.inc has been regenerated in the same commit as the theme changes
To help people familiar with Qsynth (I'm not, but it seems to be
one of the more polished FluidSynth front ends), use the same
presentation and terminology for the FluidSynth settings.
More to follow.
I don't really understand what these parameters do, or what the
sensible values are, so for now the sliders are limited only by
the allowed (or, in one case, "safe") values.
Clang will produce plenty of warnings (most of them seem to be of
the "if the stars align the wrong way, this may happen" variety),
but I don't have the time or patience to look at all of them.
This allows opening the dialog on (nearly) the same page again as when it was
closed. Sadly due to the different number of entries in the save and load
version this is not always exactly the same page as before. Same goes for
resolution changes.
Thanks to wjp for suggesting this.
On some systems, passing signed chars to macros like isspace() etc. lead
to a runtime error. Hence, mark these macros as forbidden by default,
and introduce otherwise equivalent alternatives for them.