[Scummvm-git-logs] scummvm master -> 91ab581ede415fe1143c10162b32b8d861377e2f
sev-
noreply at scummvm.org
Sat May 20 21:27:18 UTC 2023
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
91ab581ede BLADERUNNER: Support merging of CDs in original layout.
Commit: 91ab581ede415fe1143c10162b32b8d861377e2f
https://github.com/scummvm/scummvm/commit/91ab581ede415fe1143c10162b32b8d861377e2f
Author: Vladimir Serbinenko (phcoder at gmail.com)
Date: 2023-05-20T23:27:14+02:00
Commit Message:
BLADERUNNER: Support merging of CDs in original layout.
Right now we ask user to reshuffle files. After this commit it's
possible to just merge contents of all CDs.
Changed paths:
engines/bladerunner/bladerunner.cpp
engines/bladerunner/detection.cpp
engines/bladerunner/slice_animations.cpp
diff --git a/engines/bladerunner/bladerunner.cpp b/engines/bladerunner/bladerunner.cpp
index cbee15b8880..4234e98a691 100644
--- a/engines/bladerunner/bladerunner.cpp
+++ b/engines/bladerunner/bladerunner.cpp
@@ -352,6 +352,12 @@ void BladeRunnerEngine::pauseEngineIntern(bool pause) {
Common::Error BladeRunnerEngine::run() {
Common::Array<Common::String> missingFiles;
+ const Common::FSNode gameDataDir(ConfMan.get("path"));
+ SearchMan.addSubDirectoryMatching(gameDataDir, "base");
+ SearchMan.addSubDirectoryMatching(gameDataDir, "cd1");
+ SearchMan.addSubDirectoryMatching(gameDataDir, "cd2");
+ SearchMan.addSubDirectoryMatching(gameDataDir, "cd3");
+ SearchMan.addSubDirectoryMatching(gameDataDir, "cd4");
if (!_isNonInteractiveDemo && !checkFiles(missingFiles)) {
Common::String missingFileStr = "";
for (uint i = 0; i < missingFiles.size(); ++i) {
@@ -558,15 +564,9 @@ bool BladeRunnerEngine::checkFiles(Common::Array<Common::String> &missingFiles)
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]);
+ for (uint i = 1; i <= 4; ++i) {
+ if (!Common::File::exists(Common::String::format("CDFRAMES%d.DAT", i)) && !Common::File::exists(Common::String::format("CD%d/CDFRAMES.DAT", i))) {
+ missingFiles.push_back(Common::String::format("CD%d/CDFRAMES.DAT", i));
}
}
}
diff --git a/engines/bladerunner/detection.cpp b/engines/bladerunner/detection.cpp
index 748cbe6edd4..8bba32c2c9e 100644
--- a/engines/bladerunner/detection.cpp
+++ b/engines/bladerunner/detection.cpp
@@ -46,6 +46,10 @@ static const PlainGameDescriptor bladeRunnerGames[] = {
{nullptr, nullptr}
};
+static const char *const directoryGlobs[] = {
+ "BASE",
+ nullptr
+};
} // End of namespace BladeRunner
class BladeRunnerMetaEngineDetection : public AdvancedMetaEngineDetection {
@@ -72,6 +76,8 @@ BladeRunnerMetaEngineDetection::BladeRunnerMetaEngineDetection()
// and expects ScummVM to detect both, offer a choice on which to add,
// and finally launch the proper one depending on which was added.
_flags = kADFlagUseExtraAsHint;
+ _maxScanDepth = 2;
+ _directoryGlobs = BladeRunner::directoryGlobs;
}
const char *BladeRunnerMetaEngineDetection::getName() const {
diff --git a/engines/bladerunner/slice_animations.cpp b/engines/bladerunner/slice_animations.cpp
index 2994ac4ff3d..744091c8167 100644
--- a/engines/bladerunner/slice_animations.cpp
+++ b/engines/bladerunner/slice_animations.cpp
@@ -135,6 +135,11 @@ bool SliceAnimations::openFrames(int fileNumber) {
_framesPageFile.close(_framesPageFile._fileNumber);
}
_framesPageFile._fileNumber = fileNumber;
+
+ if (_framesPageFile.open(Common::String::format("CD%d/CDFRAMES.DAT", fileNumber), fileNumber)) {
+ return true;
+ }
+
// For Chapter1 we try both CDFRAMES.DAT and CDFRAMES1.DAT
if (fileNumber == 1 && _framesPageFile.open("CDFRAMES.DAT", fileNumber)) {
return true;
@@ -151,11 +156,13 @@ bool SliceAnimations::openFrames(int fileNumber) {
_framesPageFile.close(i);
if (i == 1
&& (!_framesPageFile.open("CDFRAMES.DAT", i))
+ && (!_framesPageFile.open(Common::String::format("CD%d/CDFRAMES.DAT", i), i))
&& (!_framesPageFile.open(Common::String::format("CDFRAMES%d.DAT", i), i))
) {
// For Chapter1 we try both CDFRAMES.DAT and CDFRAMES1.DAT
return false;
} else if (i != 1 &&
+ (!_framesPageFile.open(Common::String::format("CD%d/CDFRAMES.DAT", i), i)) &&
!_framesPageFile.open(Common::String::format("CDFRAMES%d.DAT", i), i)
) {
return false;
More information about the Scummvm-git-logs
mailing list