diff --git a/doomsday/apps/libdoomsday/include/doomsday/game.h b/doomsday/apps/libdoomsday/include/doomsday/game.h index e70fb88d0e..e9278e4027 100644 --- a/doomsday/apps/libdoomsday/include/doomsday/game.h +++ b/doomsday/apps/libdoomsday/include/doomsday/game.h @@ -96,6 +96,10 @@ class LIBDOOMSDAY_PUBLIC Game : public de::IObject void addRequiredPackage(de::String const &packageId); + void setUserFiles(de::StringList const &nativePaths); + + de::StringList const &userFiles() const; + /** * Returns the list of required package IDs for loading the game. */ diff --git a/doomsday/apps/libdoomsday/src/game.cpp b/doomsday/apps/libdoomsday/src/game.cpp index 68178f3b16..d9e3e4caf1 100644 --- a/doomsday/apps/libdoomsday/src/game.cpp +++ b/doomsday/apps/libdoomsday/src/game.cpp @@ -52,6 +52,7 @@ DENG2_PIMPL(Game) pluginid_t pluginId = 0; ///< Unique identifier of the registering plugin. Record params; StringList requiredPackages; ///< Packages required for starting the game. + StringList userFiles; Manifests manifests; ///< Required resource files (e.g., doomu.wad). @@ -113,6 +114,16 @@ void Game::addRequiredPackage(String const &packageId) d->requiredPackages.append(packageId); } +void Game::setUserFiles(StringList const &nativePaths) +{ + d->userFiles = nativePaths; +} + +StringList const &Game::userFiles() const +{ + return d->userFiles; +} + StringList Game::requiredPackages() const { return d->requiredPackages; @@ -175,15 +186,15 @@ String Game::description() const _E(l) "ID: " _E(.) "%3 " _E(l) "PluginId: " _E(.) "%4\n" _E(D)_E(b) "Packages:\n" _E(.)_E(.) "%5\n" - _E(D)_E(b) "Startup resources:\n" _E(.)_E(.) "%6\n" - _E(D)_E(b) "Other resources:\n" _E(.)_E(.) "%7\n" + //_E(D)_E(b) "Startup resources:\n" _E(.)_E(.) "%6\n" + _E(D)_E(b) "Custom resources:\n" _E(.)_E(.) "%7\n" _E(D)_E(b) "Status: " _E(.) "%8") .arg(title()) .arg(author()) .arg(id()) .arg(int(pluginId())) .arg(" - " _E(>) + String::join(d->requiredPackages, _E(<) "\n - " _E(>)) + _E(<)) - .arg(filesAsText(FF_STARTUP)) + //.arg(filesAsText(FF_STARTUP)) .arg(filesAsText(0, false)) .arg(statusAsText()); } diff --git a/doomsday/apps/libdoomsday/src/game_init.cpp b/doomsday/apps/libdoomsday/src/game_init.cpp index 56c9b5d642..f8c914abe8 100644 --- a/doomsday/apps/libdoomsday/src/game_init.cpp +++ b/doomsday/apps/libdoomsday/src/game_init.cpp @@ -291,6 +291,13 @@ int loadAddonResourcesBusyWorker(void *context) { DoomsdayApp::GameChangeParameters &parms = *(DoomsdayApp::GameChangeParameters *) context; + // User-selected files specified in the game itself. + for(String const &path : DoomsdayApp::game().userFiles()) + { + NativePath const nativePath(path); + Session::profile().resourceFiles << nativePath.withSeparators('/'); + } + char const *startupFiles = CVar_String(Con_FindVariable("file-startup")); /**