[Scummvm-git-logs] scummvm master -> c672f55cc3bb724422db0b76bd9b8b813a1d0dfd
neuromancer
noreply at scummvm.org
Wed Aug 9 13:52:52 UTC 2023
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
7707506485 FREESCAPE: refactored image loading from engine archive and added basic support for indicators in driller and dark
6ded25e4fc FREESCAPE: stop frame limiter when engine is paused
1252d20cf7 FREESCAPE: free and delete indicators surface memory
c672f55cc3 FREESCAPE: added more indicators for dark (ega)
Commit: 7707506485fda55133e6ddf54491efe358a6f2cf
https://github.com/scummvm/scummvm/commit/7707506485fda55133e6ddf54491efe358a6f2cf
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-08-09T15:52:15+02:00
Commit Message:
FREESCAPE: refactored image loading from engine archive and added basic support for indicators in driller and dark
Changed paths:
A devtools/create_freescape/dark_jet_indicator_ega.bmp
A devtools/create_freescape/dark_jet_indicator_zx.bmp
A devtools/create_freescape/dark_walk_indicator_ega.bmp
A devtools/create_freescape/dark_walk_indicator_zx.bmp
A devtools/create_freescape/driller_ship_indicator_cga.bmp
A devtools/create_freescape/driller_ship_indicator_ega.bmp
A devtools/create_freescape/driller_tank_indicator_cga.bmp
A devtools/create_freescape/driller_tank_indicator_ega.bmp
devtools/create_freescape/version
dists/engine-data/freescape.dat
engines/freescape/assets.cpp
engines/freescape/freescape.cpp
engines/freescape/freescape.h
engines/freescape/games/dark/dos.cpp
engines/freescape/games/driller/c64.cpp
engines/freescape/games/driller/dos.cpp
engines/freescape/games/eclipse.cpp
engines/freescape/loaders/8bitBinaryLoader.cpp
diff --git a/devtools/create_freescape/dark_jet_indicator_ega.bmp b/devtools/create_freescape/dark_jet_indicator_ega.bmp
new file mode 100644
index 00000000000..0bd325e8b2b
Binary files /dev/null and b/devtools/create_freescape/dark_jet_indicator_ega.bmp differ
diff --git a/devtools/create_freescape/dark_jet_indicator_zx.bmp b/devtools/create_freescape/dark_jet_indicator_zx.bmp
new file mode 100644
index 00000000000..df5fe38fb0d
Binary files /dev/null and b/devtools/create_freescape/dark_jet_indicator_zx.bmp differ
diff --git a/devtools/create_freescape/dark_walk_indicator_ega.bmp b/devtools/create_freescape/dark_walk_indicator_ega.bmp
new file mode 100644
index 00000000000..eb42785aed3
Binary files /dev/null and b/devtools/create_freescape/dark_walk_indicator_ega.bmp differ
diff --git a/devtools/create_freescape/dark_walk_indicator_zx.bmp b/devtools/create_freescape/dark_walk_indicator_zx.bmp
new file mode 100644
index 00000000000..7e62b9ae2c6
Binary files /dev/null and b/devtools/create_freescape/dark_walk_indicator_zx.bmp differ
diff --git a/devtools/create_freescape/driller_ship_indicator_cga.bmp b/devtools/create_freescape/driller_ship_indicator_cga.bmp
new file mode 100644
index 00000000000..6ddac40f3fc
Binary files /dev/null and b/devtools/create_freescape/driller_ship_indicator_cga.bmp differ
diff --git a/devtools/create_freescape/driller_ship_indicator_ega.bmp b/devtools/create_freescape/driller_ship_indicator_ega.bmp
new file mode 100644
index 00000000000..0faea452ae4
Binary files /dev/null and b/devtools/create_freescape/driller_ship_indicator_ega.bmp differ
diff --git a/devtools/create_freescape/driller_tank_indicator_cga.bmp b/devtools/create_freescape/driller_tank_indicator_cga.bmp
new file mode 100644
index 00000000000..a07c783c5be
Binary files /dev/null and b/devtools/create_freescape/driller_tank_indicator_cga.bmp differ
diff --git a/devtools/create_freescape/driller_tank_indicator_ega.bmp b/devtools/create_freescape/driller_tank_indicator_ega.bmp
new file mode 100644
index 00000000000..ec220eade78
Binary files /dev/null and b/devtools/create_freescape/driller_tank_indicator_ega.bmp differ
diff --git a/devtools/create_freescape/version b/devtools/create_freescape/version
index d8263ee9860..e440e5c8425 100644
--- a/devtools/create_freescape/version
+++ b/devtools/create_freescape/version
@@ -1 +1 @@
-2
\ No newline at end of file
+3
\ No newline at end of file
diff --git a/dists/engine-data/freescape.dat b/dists/engine-data/freescape.dat
index 4bae5edd3a7..accd6faeaf7 100644
Binary files a/dists/engine-data/freescape.dat and b/dists/engine-data/freescape.dat differ
diff --git a/engines/freescape/assets.cpp b/engines/freescape/assets.cpp
index 03369a113be..fe63bdd8710 100644
--- a/engines/freescape/assets.cpp
+++ b/engines/freescape/assets.cpp
@@ -23,6 +23,8 @@
// available at https://github.com/TomHarte/Phantasma/ (MIT)
#include "common/file.h"
+#include "common/compression/unzip.h"
+#include "image/bmp.h"
#include "freescape/freescape.h"
@@ -104,4 +106,37 @@ void FreescapeEngine::loadAssetsCPCFullGame() {
void FreescapeEngine::loadAssetsC64FullGame() {
}
+void FreescapeEngine::loadDataBundle() {
+ _dataBundle = Common::makeZipArchive(FREESCAPE_DATA_BUNDLE);
+ if (!_dataBundle) {
+ error("ENGINE: Couldn't load data bundle '%s'.", FREESCAPE_DATA_BUNDLE.c_str());
+ }
+ Common::String versionFilename = "version";
+ if (!_dataBundle->hasFile(versionFilename))
+ error("No version number in %s", FREESCAPE_DATA_BUNDLE.c_str());
+
+ Common::SeekableReadStream *versionFile = _dataBundle->createReadStreamForMember(versionFilename);
+ char *versionData = (char *)malloc((versionFile->size() + 1) * sizeof(char));
+ versionFile->read(versionData, versionFile->size());
+ versionData[versionFile->size()] = '\0';
+ Common::String expectedVersion = "3";
+ if (versionData != expectedVersion)
+ error("Unexpected version number for freescape.dat: expecting '%s' but found '%s'", expectedVersion.c_str(), versionData);
+ free(versionData);
+}
+
+Graphics::Surface *FreescapeEngine::loadBundledImage(const Common::String &name) {
+ Image::BitmapDecoder decoder;
+ Common::String bmpFilename = name + "_" + Common::getRenderModeDescription(_renderMode) + ".bmp";
+ debug("Loading %s from bundled archive", bmpFilename.c_str());
+ assert(_dataBundle->hasFile(bmpFilename));
+
+ Common::SeekableReadStream *bmpFile = _dataBundle->createReadStreamForMember(bmpFilename);
+ decoder.loadStream(*bmpFile);
+ Graphics::Surface *surface = new Graphics::Surface();
+ surface->copyFrom(*decoder.getSurface());
+ decoder.destroy();
+ return surface;
+}
+
} // End of namespace Freescape
diff --git a/engines/freescape/freescape.cpp b/engines/freescape/freescape.cpp
index ff7e69c913b..d10735da515 100644
--- a/engines/freescape/freescape.cpp
+++ b/engines/freescape/freescape.cpp
@@ -22,7 +22,6 @@
#include "common/config-manager.h"
#include "common/events.h"
#include "common/math.h"
-#include "common/compression/unzip.h"
#include "common/random.h"
#include "common/timer.h"
#include "graphics/cursorman.h"
@@ -836,25 +835,6 @@ Common::Error FreescapeEngine::loadGameStreamExtended(Common::SeekableReadStream
return Common::kNoError;
}
-void FreescapeEngine::loadDataBundle() {
- _dataBundle = Common::makeZipArchive(FREESCAPE_DATA_BUNDLE);
- if (!_dataBundle) {
- error("ENGINE: Couldn't load data bundle '%s'.", FREESCAPE_DATA_BUNDLE.c_str());
- }
- Common::String versionFilename = "version";
- if (!_dataBundle->hasFile(versionFilename))
- error("No version number in %s", FREESCAPE_DATA_BUNDLE.c_str());
-
- Common::SeekableReadStream *versionFile = _dataBundle->createReadStreamForMember(versionFilename);
- char *versionData = (char *)malloc((versionFile->size() + 1) * sizeof(char));
- versionFile->read(versionData, versionFile->size());
- versionData[versionFile->size()] = '\0';
- Common::String expectedVersion = "2";
- if (versionData != expectedVersion)
- error("Unexpected version number for freescape.dat: expecting '%s' but found '%s'", expectedVersion.c_str(), versionData);
- free(versionData);
-}
-
void FreescapeEngine::insertTemporaryMessage(const Common::String message, int deadline) {
_temporaryMessages.insert_at(0, message);
_temporaryMessageDeadlines.insert_at(0, deadline);
diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index 3ac4d4baf3a..d3bfa06692d 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -134,6 +134,7 @@ public:
Texture *_borderTexture;
Texture *_titleTexture;
Texture *_uiTexture;
+ Common::Array<Graphics::Surface *>_indicators;
Common::HashMap<uint16, Texture *> _borderCGAByArea;
Common::HashMap<uint16, byte *> _paletteCGAByArea;
@@ -169,7 +170,7 @@ public:
Common::Archive *_dataBundle;
void loadDataBundle();
- void loadBundledImages();
+ Graphics::Surface *loadBundledImage(const Common::String &name);
byte *getPaletteFromNeoImage(Common::SeekableReadStream *stream, int offset);
Graphics::ManagedSurface *loadAndConvertNeoImage(Common::SeekableReadStream *stream, int offset, byte *palette = nullptr);
Graphics::ManagedSurface *loadAndCenterScrImage(Common::SeekableReadStream *stream);
diff --git a/engines/freescape/games/dark/dos.cpp b/engines/freescape/games/dark/dos.cpp
index 6a2cbb95528..c0cf04f63b9 100644
--- a/engines/freescape/games/dark/dos.cpp
+++ b/engines/freescape/games/dark/dos.cpp
@@ -66,7 +66,6 @@ void DarkEngine::loadAssetsDOSDemo() {
addSkanner(it._value);
}
} else if (_renderMode == Common::kRenderCGA) {
- //loadBundledImages();
file.open("DSIDEC.EXE");
if (!file.isOpen())
@@ -75,6 +74,12 @@ void DarkEngine::loadAssetsDOSDemo() {
load8bitBinary(&file, 0x8a70, 4); // TODO
} else
error("Invalid or unsupported render mode %s for Dark Side", Common::getRenderModeDescription(_renderMode));
+
+ _indicators.push_back(loadBundledImage("dark_walk_indicator"));
+ _indicators.push_back(loadBundledImage("dark_jet_indicator"));
+
+ _indicators[0]->convertToInPlace(_gfx->_texturePixelFormat, nullptr);
+ _indicators[1]->convertToInPlace(_gfx->_texturePixelFormat, nullptr);
}
void DarkEngine::loadAssetsDOSFullGame() {
@@ -98,14 +103,12 @@ void DarkEngine::loadAssetsDOSFullGame() {
_border = load8bitBinImage(&file, 0x210);
_border->setPalette((byte *)&kEGADefaultPaletteData, 0, 16);
- // TODO: load objects
for (auto &it : _areaMap) {
addWalls(it._value);
addECDs(it._value);
addSkanner(it._value);
}
} else if (_renderMode == Common::kRenderCGA) {
- loadBundledImages();
file.open("DSIDEC.EXE");
if (!file.isOpen())
@@ -113,6 +116,12 @@ void DarkEngine::loadAssetsDOSFullGame() {
load8bitBinary(&file, 0x7bb0, 4); // TODO
} else
error("Invalid or unsupported render mode %s for Dark Side", Common::getRenderModeDescription(_renderMode));
+
+ _indicators.push_back(loadBundledImage("dark_walk_indicator"));
+ _indicators.push_back(loadBundledImage("dark_jet_indicator"));
+
+ _indicators[0]->convertToInPlace(_gfx->_texturePixelFormat, nullptr);
+ _indicators[1]->convertToInPlace(_gfx->_texturePixelFormat, nullptr);
}
void DarkEngine::drawDOSUI(Graphics::Surface *surface) {
@@ -180,6 +189,11 @@ void DarkEngine::drawDOSUI(Graphics::Surface *surface) {
}
uint32 clockColor = _gfx->_texturePixelFormat.ARGBToColor(0xFF, 0xFF, 0xFF, 0xFF);
drawBinaryClock(surface, 300, 124, clockColor, back);
+
+ if (!_flyMode)
+ surface->copyRectToSurface(*_indicators[0], 160, 136, Common::Rect(_indicators[0]->w, _indicators[0]->h));
+ else
+ surface->copyRectToSurface(*_indicators[1], 160, 136, Common::Rect(_indicators[1]->w, _indicators[1]->h));
}
} // End of namespace Freescape
\ No newline at end of file
diff --git a/engines/freescape/games/driller/c64.cpp b/engines/freescape/games/driller/c64.cpp
index e52decdc5a7..3f1f7447e51 100644
--- a/engines/freescape/games/driller/c64.cpp
+++ b/engines/freescape/games/driller/c64.cpp
@@ -33,7 +33,6 @@ void DrillerEngine::initC64() {
void DrillerEngine::loadAssetsC64FullGame() {
Common::File file;
if (_targetName.hasPrefix("spacestationoblivion")) {
- loadBundledImages();
file.open("spacestationoblivion.c64.data");
loadMessagesFixedSize(&file, 0x167a, 14, 20);
//loadFonts(&file, 0xae54);
diff --git a/engines/freescape/games/driller/dos.cpp b/engines/freescape/games/driller/dos.cpp
index 0cad8a75326..06aeb9bec4a 100644
--- a/engines/freescape/games/driller/dos.cpp
+++ b/engines/freescape/games/driller/dos.cpp
@@ -317,6 +317,12 @@ void DrillerEngine::loadAssetsDOSFullGame() {
swapPalette(1);
} else
error("Unsupported video mode for DOS");
+
+ _indicators.push_back(loadBundledImage("driller_tank_indicator"));
+ _indicators.push_back(loadBundledImage("driller_ship_indicator"));
+
+ _indicators[0]->convertToInPlace(_gfx->_texturePixelFormat, nullptr);
+ _indicators[1]->convertToInPlace(_gfx->_texturePixelFormat, nullptr);
}
void DrillerEngine::loadAssetsDOSDemo() {
@@ -343,11 +349,17 @@ void DrillerEngine::loadAssetsDOSDemo() {
_border = load8bitDemoImage(&file, 0x6220);
_border->setPalette((byte*)&kCGAPalettePinkBlueWhiteData, 0, 4);
- // Fixed for a corrupted area names in the demo data
+ // Fixes corrupted area names in the demo data
_areaMap[2]->_name = "LAPIS LAZULI";
_areaMap[3]->_name = "EMERALD";
_areaMap[8]->_name = "TOPAZ";
file.close();
+
+ _indicators.push_back(loadBundledImage("driller_tank_indicator"));
+ _indicators.push_back(loadBundledImage("driller_ship_indicator"));
+
+ _indicators[0]->convertToInPlace(_gfx->_texturePixelFormat, nullptr);
+ _indicators[1]->convertToInPlace(_gfx->_texturePixelFormat, nullptr);
}
void DrillerEngine::drawDOSUI(Graphics::Surface *surface) {
@@ -420,6 +432,11 @@ void DrillerEngine::drawDOSUI(Graphics::Surface *surface) {
Common::Rect shieldBar(87 - shield, 177, 88, 183);
surface->fillRect(shieldBar, front);
}
+
+ if (!_flyMode)
+ surface->copyRectToSurface(*_indicators[0], 132, 128, Common::Rect(_indicators[0]->w, _indicators[0]->h));
+ else
+ surface->copyRectToSurface(*_indicators[1], 132, 128, Common::Rect(_indicators[1]->w, _indicators[1]->h));
}
} // End of namespace Freescape
\ No newline at end of file
diff --git a/engines/freescape/games/eclipse.cpp b/engines/freescape/games/eclipse.cpp
index e6f160d170e..314ea8ff9bf 100644
--- a/engines/freescape/games/eclipse.cpp
+++ b/engines/freescape/games/eclipse.cpp
@@ -122,7 +122,6 @@ void EclipseEngine::loadAssetsDOSFullGame() {
_border = load8bitBinImage(&file, 0x210);
_border->setPalette((byte *)&kEGADefaultPaletteData, 0, 16);
} else if (_renderMode == Common::kRenderCGA) {
- loadBundledImages();
file.open("TOTEC.EXE");
if (!file.isOpen())
diff --git a/engines/freescape/loaders/8bitBinaryLoader.cpp b/engines/freescape/loaders/8bitBinaryLoader.cpp
index b76e0b81ed4..5569cd2688b 100644
--- a/engines/freescape/loaders/8bitBinaryLoader.cpp
+++ b/engines/freescape/loaders/8bitBinaryLoader.cpp
@@ -22,8 +22,6 @@
// Based on Phantasma code by Thomas Harte (2013),
// available at https://github.com/TomHarte/Phantasma/ (MIT)
-#include "image/bmp.h"
-
#include "freescape/freescape.h"
#include "freescape/language/8bitDetokeniser.h"
#include "freescape/objects/connections.h"
@@ -770,32 +768,6 @@ void FreescapeEngine::load8bitBinary(Common::SeekableReadStream *file, int offse
_binaryBits = 8;
}
-void FreescapeEngine::loadBundledImages() {
- /*Image::BitmapDecoder decoder;
- Common::String targetName = Common::String(_gameDescription->gameId);
- if (isDOS() && isDemo())
- Common::replace(targetName, "-demo", "");
-
- Common::String borderFilename = targetName + "_" + Common::getRenderModeCode(_renderMode) + ".bmp";
- if (_dataBundle->hasFile(borderFilename)) {
- Common::SeekableReadStream *borderFile = _dataBundle->createReadStreamForMember(borderFilename);
- decoder.loadStream(*borderFile);
- _border = new Graphics::Surface();
- _border->copyFrom(*decoder.getSurface());
- decoder.destroy();
- } else
- error("Missing border file '%s' in data bundle", borderFilename.c_str());
-
- Common::String titleFilename = targetName + "_" + Common::getRenderModeDescription(_renderMode) + "_title.bmp";
- if (_dataBundle->hasFile(titleFilename)) {
- Common::SeekableReadStream *titleFile = _dataBundle->createReadStreamForMember(titleFilename);
- decoder.loadStream(*titleFile);
- _title = new Graphics::Surface();
- _title->copyFrom(*decoder.getSurface());
- decoder.destroy();
- }*/
-}
-
void FreescapeEngine::loadFonts(byte *font, int charNumber) {
if (isDOS() || isSpectrum() || isCPC() || isC64()) {
_font.set_size(64 * charNumber);
Commit: 6ded25e4fc0ed8c93330c4035fb981dab644aa20
https://github.com/scummvm/scummvm/commit/6ded25e4fc0ed8c93330c4035fb981dab644aa20
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-08-09T15:52:15+02:00
Commit Message:
FREESCAPE: stop frame limiter when engine is paused
Changed paths:
engines/freescape/freescape.cpp
diff --git a/engines/freescape/freescape.cpp b/engines/freescape/freescape.cpp
index d10735da515..f77768ed5d9 100644
--- a/engines/freescape/freescape.cpp
+++ b/engines/freescape/freescape.cpp
@@ -920,6 +920,8 @@ void FreescapeEngine::pauseEngineIntern(bool pause) {
Engine::pauseEngineIntern(pause);
// TODO: Handle the viewport here
+ if (_frameLimiter)
+ _frameLimiter->pause(pause);
// Unlock the mouse so that the cursor is usable when the GMM opens
if (!_shootMode) {
Commit: 1252d20cf76b9d60f71ed3d1d2fe3b9c1ed065e1
https://github.com/scummvm/scummvm/commit/1252d20cf76b9d60f71ed3d1d2fe3b9c1ed065e1
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-08-09T15:52:15+02:00
Commit Message:
FREESCAPE: free and delete indicators surface memory
Changed paths:
engines/freescape/freescape.cpp
diff --git a/engines/freescape/freescape.cpp b/engines/freescape/freescape.cpp
index f77768ed5d9..6f8381d70b0 100644
--- a/engines/freescape/freescape.cpp
+++ b/engines/freescape/freescape.cpp
@@ -183,6 +183,11 @@ FreescapeEngine::~FreescapeEngine() {
delete _gfx;
delete _dataBundle;
delete _speaker;
+
+ for (auto &it : _indicators) {
+ it->free();
+ delete it;
+ }
}
void FreescapeEngine::drawBorder() {
Commit: c672f55cc3bb724422db0b76bd9b8b813a1d0dfd
https://github.com/scummvm/scummvm/commit/c672f55cc3bb724422db0b76bd9b8b813a1d0dfd
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-08-09T15:52:15+02:00
Commit Message:
FREESCAPE: added more indicators for dark (ega)
Changed paths:
A devtools/create_freescape/dark_crouch_indicator_ega.bmp
A devtools/create_freescape/dark_fallen_indicator_ega.bmp
dists/engine-data/freescape.dat
engines/freescape/games/dark/dark.cpp
engines/freescape/games/dark/dos.cpp
diff --git a/devtools/create_freescape/dark_crouch_indicator_ega.bmp b/devtools/create_freescape/dark_crouch_indicator_ega.bmp
new file mode 100644
index 00000000000..a80cd626c56
Binary files /dev/null and b/devtools/create_freescape/dark_crouch_indicator_ega.bmp differ
diff --git a/devtools/create_freescape/dark_fallen_indicator_ega.bmp b/devtools/create_freescape/dark_fallen_indicator_ega.bmp
new file mode 100644
index 00000000000..5b19862d375
Binary files /dev/null and b/devtools/create_freescape/dark_fallen_indicator_ega.bmp differ
diff --git a/dists/engine-data/freescape.dat b/dists/engine-data/freescape.dat
index accd6faeaf7..dbb19a2f134 100644
Binary files a/dists/engine-data/freescape.dat and b/dists/engine-data/freescape.dat differ
diff --git a/engines/freescape/games/dark/dark.cpp b/engines/freescape/games/dark/dark.cpp
index 13fa4950073..e2e2cbb16de 100644
--- a/engines/freescape/games/dark/dark.cpp
+++ b/engines/freescape/games/dark/dark.cpp
@@ -153,6 +153,7 @@ bool DarkEngine::checkECD(uint16 areaID, int index) {
void DarkEngine::initGameState() {
_flyMode = false;
+ _hasFallen = false;
_noClipMode = false;
_playerWasCrushed = false;
_shootingFrames = 0;
@@ -370,7 +371,6 @@ bool DarkEngine::checkIfGameEnded() {
}
if (_hasFallen) {
- _hasFallen = false;
_gameStateVars[kVariableDarkEnding] = kDarkEndingEvathDestroyed;
playSound(14, false);
insertTemporaryMessage(_messagesList[17], _countdown - 4);
diff --git a/engines/freescape/games/dark/dos.cpp b/engines/freescape/games/dark/dos.cpp
index c0cf04f63b9..2e55a3cebcb 100644
--- a/engines/freescape/games/dark/dos.cpp
+++ b/engines/freescape/games/dark/dos.cpp
@@ -117,11 +117,13 @@ void DarkEngine::loadAssetsDOSFullGame() {
} else
error("Invalid or unsupported render mode %s for Dark Side", Common::getRenderModeDescription(_renderMode));
+ _indicators.push_back(loadBundledImage("dark_fallen_indicator"));
+ _indicators.push_back(loadBundledImage("dark_crouch_indicator"));
_indicators.push_back(loadBundledImage("dark_walk_indicator"));
_indicators.push_back(loadBundledImage("dark_jet_indicator"));
- _indicators[0]->convertToInPlace(_gfx->_texturePixelFormat, nullptr);
- _indicators[1]->convertToInPlace(_gfx->_texturePixelFormat, nullptr);
+ for (auto &it : _indicators)
+ it->convertToInPlace(_gfx->_texturePixelFormat, nullptr);
}
void DarkEngine::drawDOSUI(Graphics::Surface *surface) {
@@ -190,10 +192,14 @@ void DarkEngine::drawDOSUI(Graphics::Surface *surface) {
uint32 clockColor = _gfx->_texturePixelFormat.ARGBToColor(0xFF, 0xFF, 0xFF, 0xFF);
drawBinaryClock(surface, 300, 124, clockColor, back);
- if (!_flyMode)
+ if (_hasFallen)
surface->copyRectToSurface(*_indicators[0], 160, 136, Common::Rect(_indicators[0]->w, _indicators[0]->h));
- else
+ else if (_flyMode)
+ surface->copyRectToSurface(*_indicators[3], 160, 136, Common::Rect(_indicators[3]->w, _indicators[3]->h));
+ else if (_playerHeightNumber == 0)
surface->copyRectToSurface(*_indicators[1], 160, 136, Common::Rect(_indicators[1]->w, _indicators[1]->h));
+ else
+ surface->copyRectToSurface(*_indicators[2], 160, 136, Common::Rect(_indicators[2]->w, _indicators[2]->h));
}
} // End of namespace Freescape
\ No newline at end of file
More information about the Scummvm-git-logs
mailing list