From 577a84a24cf6676c7c170e143b4d4933751b09ac Mon Sep 17 00:00:00 2001 From: Peter Kohaut Date: Thu, 4 Jul 2019 00:07:28 +0200 Subject: BLADERUNNER: Explicit message about missing game files --- engines/bladerunner/bladerunner.cpp | 61 +++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) (limited to 'engines/bladerunner/bladerunner.cpp') 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 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 &missingFiles) { + missingFiles.clear(); + + Common::Array 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 -- cgit v1.2.3