aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorlolbot-iichan2019-06-06 07:07:16 +0300
committerFilippos Karapetis2019-06-06 07:07:16 +0300
commit8b929a584fac5022bfc6d061685326e68e2a5588 (patch)
treecd4f857c8ab22a1300281f2d9395d182fc6d1a46 /engines
parent5b06639a69fc4214138014355998a334f69067c6 (diff)
downloadscummvm-rg350-8b929a584fac5022bfc6d061685326e68e2a5588.tar.gz
scummvm-rg350-8b929a584fac5022bfc6d061685326e68e2a5588.tar.bz2
scummvm-rg350-8b929a584fac5022bfc6d061685326e68e2a5588.zip
WINTERMUTE: Show warning on running 2.5D games
This is shown for the 2 games added in 0d8834b5616aa8fc936c750ed92ef4423610d641, as both of them use ACTOR3DX entities, i.e. 3D models, which are not supported in ScummVM
Diffstat (limited to 'engines')
-rw-r--r--engines/wintermute/POTFILES1
-rw-r--r--engines/wintermute/base/base_file_manager.cpp4
-rw-r--r--engines/wintermute/base/base_file_manager.h1
-rw-r--r--engines/wintermute/base/file/base_package.cpp1
-rw-r--r--engines/wintermute/wintermute.cpp17
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;