diff options
-rw-r--r-- | engines/wintermute/POTFILES | 1 | ||||
-rw-r--r-- | engines/wintermute/base/base_file_manager.cpp | 4 | ||||
-rw-r--r-- | engines/wintermute/base/base_file_manager.h | 1 | ||||
-rw-r--r-- | engines/wintermute/base/file/base_package.cpp | 1 | ||||
-rw-r--r-- | engines/wintermute/wintermute.cpp | 17 |
5 files changed, 23 insertions, 1 deletions
diff --git a/engines/wintermute/POTFILES b/engines/wintermute/POTFILES index e9422415b2..79f5c5dfed 100644 --- a/engines/wintermute/POTFILES +++ b/engines/wintermute/POTFILES @@ -1 +1,2 @@ engines/wintermute/detection.cpp +engines/wintermute/wintermute.cpp diff --git a/engines/wintermute/base/base_file_manager.cpp b/engines/wintermute/base/base_file_manager.cpp index 05830ffcd8..b026bbee56 100644 --- a/engines/wintermute/base/base_file_manager.cpp +++ b/engines/wintermute/base/base_file_manager.cpp @@ -337,6 +337,10 @@ bool BaseFileManager::hasFile(const Common::String &filename) { return false; } +int BaseFileManager::listMatchingMembers(Common::ArchiveMemberList &list, const Common::String &pattern) { + return _packages.listMatchingMembers(list, pattern); +} + ////////////////////////////////////////////////////////////////////////// Common::SeekableReadStream *BaseFileManager::openFile(const Common::String &filename, bool absPathWarning, bool keepTrackOf) { if (strcmp(filename.c_str(), "") == 0) { diff --git a/engines/wintermute/base/base_file_manager.h b/engines/wintermute/base/base_file_manager.h index d953e44704..2c67d83462 100644 --- a/engines/wintermute/base/base_file_manager.h +++ b/engines/wintermute/base/base_file_manager.h @@ -42,6 +42,7 @@ public: bool closeFile(Common::SeekableReadStream *File); bool hasFile(const Common::String &filename); + int listMatchingMembers(Common::ArchiveMemberList &list, const Common::String &pattern); Common::SeekableReadStream *openFile(const Common::String &filename, bool absPathWarning = true, bool keepTrackOf = true); byte *readWholeFile(const Common::String &filename, uint32 *size = nullptr, bool mustExist = true); diff --git a/engines/wintermute/base/file/base_package.cpp b/engines/wintermute/base/file/base_package.cpp index ae4955390b..b80547f509 100644 --- a/engines/wintermute/base/file/base_package.cpp +++ b/engines/wintermute/base/file/base_package.cpp @@ -206,6 +206,7 @@ PackageSet::PackageSet(Common::FSNode file, const Common::String &filename, bool fileEntry->_length = length; fileEntry->_compressedLength = compLength; fileEntry->_flags = flags; + fileEntry->_filename = upcName; _files[upcName] = Common::ArchiveMemberPtr(fileEntry); } else { diff --git a/engines/wintermute/wintermute.cpp b/engines/wintermute/wintermute.cpp index 21e6c589ad..7ee28f0fe2 100644 --- a/engines/wintermute/wintermute.cpp +++ b/engines/wintermute/wintermute.cpp @@ -29,6 +29,7 @@ #include "common/file.h" #include "common/fs.h" #include "common/tokenizer.h" +#include "common/translation.h" #include "engines/util.h" #include "engines/wintermute/ad/ad_game.h" @@ -149,7 +150,7 @@ int WintermuteEngine::init() { // check dependencies for games with high resolution assets #if not defined(USE_PNG) || not defined(USE_JPEG) || not defined(USE_VORBIS) if (!(_gameDescription->adDesc.flags & GF_LOWSPEC_ASSETS)) { - GUI::MessageDialog dialog("This game requires PNG, JPEG and Vorbis support."); + GUI::MessageDialog dialog(_("This game requires PNG, JPEG and Vorbis support.")); dialog.runModal(); delete _game; _game = nullptr; @@ -157,6 +158,20 @@ int WintermuteEngine::init() { } #endif + Common::ArchiveMemberList actors3d; + if (BaseEngine::instance().getFileManager()->listMatchingMembers(actors3d, "*.act3d")) { + GUI::MessageDialog dialog( + _("This game requires 3D characters support, which is out of ScummVM's scope."), + _("Start anyway"), + _("Cancel") + ); + if (dialog.runModal() != GUI::kMessageOK) { + delete _game; + _game = nullptr; + return false; + } + } + _game = new AdGame(_targetName); if (!_game) { return 1; |