aboutsummaryrefslogtreecommitdiff
path: root/engines/cryomni3d/versailles
diff options
context:
space:
mode:
authorLe Philousophe2019-03-13 08:27:02 +0100
committerEugene Sandulenko2019-06-01 22:43:48 +0200
commitc83f86a245dae1ae13c2cc170aa4374cae01230b (patch)
treef46cfc579ca374f534579f537b96d9c2f5396035 /engines/cryomni3d/versailles
parent3a12d53ffc72fd99cdfbb9627bb699236d32f235 (diff)
downloadscummvm-rg350-c83f86a245dae1ae13c2cc170aa4374cae01230b.tar.gz
scummvm-rg350-c83f86a245dae1ae13c2cc170aa4374cae01230b.tar.bz2
scummvm-rg350-c83f86a245dae1ae13c2cc170aa4374cae01230b.zip
CRYOMNI3D: Fix file names for Macintosh version
Add a function to unify extensions handling. That lets us substitute dashes by underscore on PC versions of Versailles and fix dashes for Macintosh.
Diffstat (limited to 'engines/cryomni3d/versailles')
-rw-r--r--engines/cryomni3d/versailles/dialogs_manager.cpp20
-rw-r--r--engines/cryomni3d/versailles/documentation.cpp2
-rw-r--r--engines/cryomni3d/versailles/engine.cpp14
-rw-r--r--engines/cryomni3d/versailles/engine.h7
-rw-r--r--engines/cryomni3d/versailles/logic.cpp8
-rw-r--r--engines/cryomni3d/versailles/music.cpp3
6 files changed, 31 insertions, 23 deletions
diff --git a/engines/cryomni3d/versailles/dialogs_manager.cpp b/engines/cryomni3d/versailles/dialogs_manager.cpp
index 59bcedd093..3ebc4cf0c0 100644
--- a/engines/cryomni3d/versailles/dialogs_manager.cpp
+++ b/engines/cryomni3d/versailles/dialogs_manager.cpp
@@ -88,16 +88,14 @@ void Versailles_DialogsManager::executeShow(const Common::String &show) {
void Versailles_DialogsManager::playDialog(const Common::String &video, const Common::String &sound,
const Common::String &text, const SubtitlesSettings &settings) {
- Common::String videoFName(video);
- Common::String soundFName(sound);
-
- videoFName += ".hnm";
// Don't look for HNS file here
+ Common::String videoFName(_engine->prepareFileName(video, "hnm"));
+ Common::String soundFName(sound);
while (soundFName.size() < 8) {
soundFName += '_';
}
- soundFName += ".wav";
+ soundFName = _engine->prepareFileName(soundFName, "wav");
Video::HNMDecoder *videoDecoder = new Video::HNMDecoder(true);
@@ -344,17 +342,7 @@ unsigned int Versailles_DialogsManager::askPlayerQuestions(const Common::String
}
void Versailles_DialogsManager::loadFrame(const Common::String &video) {
- Common::String videoFName(video);
- int lastDotPos = videoFName.size() - 1;
- for (; lastDotPos >= 0; --lastDotPos) {
- if (videoFName[lastDotPos] == '.') {
- break;
- }
- }
- if (lastDotPos > -1) {
- videoFName.erase(lastDotPos);
- }
- videoFName += ".hnm";
+ Common::String videoFName(_engine->prepareFileName(video, "hnm"));
Video::HNMDecoder *videoDecoder = new Video::HNMDecoder();
diff --git a/engines/cryomni3d/versailles/documentation.cpp b/engines/cryomni3d/versailles/documentation.cpp
index bbc924290c..79c6001ca7 100644
--- a/engines/cryomni3d/versailles/documentation.cpp
+++ b/engines/cryomni3d/versailles/documentation.cpp
@@ -1442,7 +1442,7 @@ void Versailles_Documentation::drawRecordData(Graphics::ManagedSurface &surface,
} else {
background = _currentRecord;
}
- background += ".HLZ";
+ background = _engine->prepareFileName(background, "hlz");
Common::File backgroundFl;
if (!backgroundFl.open(background)) {
background = displayMap ? "pas_fonP.hlz" : "pas_fond.hlz";
diff --git a/engines/cryomni3d/versailles/engine.cpp b/engines/cryomni3d/versailles/engine.cpp
index 398bf3c02b..3baaf81458 100644
--- a/engines/cryomni3d/versailles/engine.cpp
+++ b/engines/cryomni3d/versailles/engine.cpp
@@ -221,6 +221,20 @@ Common::Error CryOmni3DEngine_Versailles::run() {
return Common::kNoError;
}
+Common::String CryOmni3DEngine_Versailles::prepareFileName(const Common::String &baseName,
+ const char *const *extensions) const {
+ Common::String baseName_(baseName);
+ if (getPlatform() != Common::kPlatformMacintosh) {
+ // Replace dashes by underscores for PC versions
+ char *p = baseName_.begin();
+ while ((p = strchr(p, '-')) != nullptr) {
+ *p = '_';
+ p++;
+ }
+ }
+ return CryOmni3DEngine::prepareFileName(baseName_, extensions);
+}
+
void CryOmni3DEngine_Versailles::setupFonts() {
Common::Array<Common::String> fonts;
diff --git a/engines/cryomni3d/versailles/engine.h b/engines/cryomni3d/versailles/engine.h
index 74d8c9640c..cb677cd94c 100644
--- a/engines/cryomni3d/versailles/engine.h
+++ b/engines/cryomni3d/versailles/engine.h
@@ -218,6 +218,13 @@ public:
CryOmni3DEngine_Versailles(OSystem *syst, const CryOmni3DGameDescription *gamedesc);
virtual ~CryOmni3DEngine_Versailles();
+ Common::String prepareFileName(const Common::String &baseName, const char *extension) const {
+ const char *const extensions[] = { extension, nullptr };
+ return prepareFileName(baseName, extensions);
+ }
+ virtual Common::String prepareFileName(const Common::String &baseName,
+ const char *const *extensions) const override;
+
void setupPalette(const byte *colors, uint start, uint num) override { setupPalette(colors, start, num, true); }
void makeTranslucent(Graphics::Surface &dst, const Graphics::Surface &src) const override;
diff --git a/engines/cryomni3d/versailles/logic.cpp b/engines/cryomni3d/versailles/logic.cpp
index e87bc60102..e824031539 100644
--- a/engines/cryomni3d/versailles/logic.cpp
+++ b/engines/cryomni3d/versailles/logic.cpp
@@ -1000,7 +1000,7 @@ IMG_CB(41802) {
setGameTime(3, 1);
} else if (objID == 96) {
// Pamphlet about arts
- playInGameVideo("PAP_BRUL");
+ playInGameVideo("PAP-BRUL");
// Force reload of the place
if (_nextPlaceId == -1u) {
_nextPlaceId = _currentPlaceId;
@@ -1047,7 +1047,7 @@ IMG_CB(41802b) {
setGameTime(3, 1);
} else if (objID == 96) {
// Pamphlet about arts
- playInGameVideo("PAP_BRUL");
+ playInGameVideo("PAP-BRUL");
// Force reload of the place
if (_nextPlaceId == -1u) {
_nextPlaceId = _currentPlaceId;
@@ -1092,7 +1092,7 @@ IMG_CB(41802c) {
setGameTime(3, 1);
} else if (objID == 96) {
// Pamphlet about arts
- playInGameVideo("PAP_BRUL");
+ playInGameVideo("PAP-BRUL");
// Force reload of the place
if (_nextPlaceId == -1u) {
_nextPlaceId = _currentPlaceId;
@@ -1127,7 +1127,7 @@ IMG_CB(41802d) {
setGameTime(3, 1);
} else if (objID == 96) {
// Pamphlet about arts
- playInGameVideo("PAP_BRUL");
+ playInGameVideo("PAP-BRUL");
// Force reload of the place
if (_nextPlaceId == -1u) {
_nextPlaceId = _currentPlaceId;
diff --git a/engines/cryomni3d/versailles/music.cpp b/engines/cryomni3d/versailles/music.cpp
index 524c5244a4..a19e82a538 100644
--- a/engines/cryomni3d/versailles/music.cpp
+++ b/engines/cryomni3d/versailles/music.cpp
@@ -67,8 +67,7 @@ void CryOmni3DEngine_Versailles::musicUpdate() {
// New file, stop the old one first
musicStop();
- Common::String musicFName = musicBName;
- musicFName += ".wav";
+ Common::String musicFName(prepareFileName(musicBName, "wav"));
Common::File *musicFile = new Common::File();
if (!musicFile->open(musicFName)) {