aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/bladerunner.cpp
diff options
context:
space:
mode:
authorPeter Kohaut2019-07-04 00:07:28 +0200
committerPeter Kohaut2019-07-04 00:09:47 +0200
commit577a84a24cf6676c7c170e143b4d4933751b09ac (patch)
tree459d8d90f8231f25b24f4dcca9632846aa4ab0a2 /engines/bladerunner/bladerunner.cpp
parentb3f0ffcb700edcf199ca84cc721e89f7e41e0c13 (diff)
downloadscummvm-rg350-577a84a24cf6676c7c170e143b4d4933751b09ac.tar.gz
scummvm-rg350-577a84a24cf6676c7c170e143b4d4933751b09ac.tar.bz2
scummvm-rg350-577a84a24cf6676c7c170e143b4d4933751b09ac.zip
BLADERUNNER: Explicit message about missing game files
Diffstat (limited to 'engines/bladerunner/bladerunner.cpp')
-rw-r--r--engines/bladerunner/bladerunner.cpp61
1 files changed, 61 insertions, 0 deletions
diff --git a/engines/bladerunner/bladerunner.cpp b/engines/bladerunner/bladerunner.cpp
index 7362291c74..ecb4048233 100644
--- a/engines/bladerunner/bladerunner.cpp
+++ b/engines/bladerunner/bladerunner.cpp
@@ -310,6 +310,20 @@ void BladeRunnerEngine::pauseEngineIntern(bool pause) {
}
Common::Error BladeRunnerEngine::run() {
+
+ Common::Array<Common::String> missingFiles;
+ if (!checkFiles(missingFiles)) {
+ Common::String missingFileStr = "";
+ for (uint i = 0; i < missingFiles.size(); ++i) {
+ if (i > 0) {
+ missingFileStr += ", ";
+ }
+ missingFileStr += missingFiles[i];
+ }
+
+ return Common::Error(Common::kNoGameDataFoundError, missingFileStr);
+ }
+
Graphics::PixelFormat format = screenPixelFormat();
initGraphics(640, 480, &format);
@@ -386,6 +400,53 @@ Common::Error BladeRunnerEngine::run() {
return Common::kNoError;
}
+bool BladeRunnerEngine::checkFiles(Common::Array<Common::String> &missingFiles) {
+ missingFiles.clear();
+
+ Common::Array<Common::String> requiredFiles;
+ requiredFiles.push_back("1.TLK");
+ requiredFiles.push_back("2.TLK");
+ requiredFiles.push_back("3.TLK");
+ requiredFiles.push_back("A.TLK");
+ requiredFiles.push_back("COREANIM.DAT");
+ requiredFiles.push_back("MODE.MIX");
+ requiredFiles.push_back("MUSIC.MIX");
+ requiredFiles.push_back("OUTTAKE1.MIX");
+ requiredFiles.push_back("OUTTAKE2.MIX");
+ requiredFiles.push_back("OUTTAKE3.MIX");
+ requiredFiles.push_back("OUTTAKE4.MIX");
+ requiredFiles.push_back("SFX.MIX");
+ requiredFiles.push_back("SPCHSFX.TLK");
+ requiredFiles.push_back("STARTUP.MIX");
+ requiredFiles.push_back("VQA1.MIX");
+ requiredFiles.push_back("VQA2.MIX");
+ requiredFiles.push_back("VQA3.MIX");
+
+ for (uint i = 0; i < requiredFiles.size(); ++i) {
+ if (!Common::File::exists(requiredFiles[i])) {
+ missingFiles.push_back(requiredFiles[i]);
+ }
+ }
+
+ bool hasHdFrames = Common::File::exists("HDFRAMES.DAT");
+
+ if (!hasHdFrames) {
+ requiredFiles.clear();
+ requiredFiles.push_back("CDFRAMES1.DAT");
+ requiredFiles.push_back("CDFRAMES2.DAT");
+ requiredFiles.push_back("CDFRAMES3.DAT");
+ requiredFiles.push_back("CDFRAMES4.DAT");
+
+ for (uint i = 0; i < requiredFiles.size(); ++i) {
+ if (!Common::File::exists(requiredFiles[i])) {
+ missingFiles.push_back(requiredFiles[i]);
+ }
+ }
+ }
+
+ return missingFiles.empty();
+}
+
bool BladeRunnerEngine::startup(bool hasSavegames) {
// These are static objects in original game