diff options
author | Peter Kohaut | 2019-07-04 00:07:28 +0200 |
---|---|---|
committer | Peter Kohaut | 2019-07-04 00:09:47 +0200 |
commit | 577a84a24cf6676c7c170e143b4d4933751b09ac (patch) | |
tree | 459d8d90f8231f25b24f4dcca9632846aa4ab0a2 /engines/bladerunner/bladerunner.cpp | |
parent | b3f0ffcb700edcf199ca84cc721e89f7e41e0c13 (diff) | |
download | scummvm-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.cpp | 61 |
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 |