diff options
Diffstat (limited to 'engines/prince/prince.cpp')
-rw-r--r-- | engines/prince/prince.cpp | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/engines/prince/prince.cpp b/engines/prince/prince.cpp index f987ff222f..98f9689b9a 100644 --- a/engines/prince/prince.cpp +++ b/engines/prince/prince.cpp @@ -294,10 +294,7 @@ bool PrinceEngine::loadLocation(uint16 locationNr) { _mainHero->_zoomBitmap->clear(); Resource::loadResource(_mainHero->_zoomBitmap, "zoom", false); - _mainHero->_shadowBitmap->clear(); - if (Resource::loadResource(_mainHero->_shadowBitmap, "shadow", false) == false) { - Resource::loadResource(_mainHero->_shadowBitmap, "shadow2", false); - } + loadShadow(_mainHero->_shadowBitmap, _mainHero->kShadowBitmapSize, "shadow", "shadow2"); _picWindowX = 0; @@ -471,6 +468,31 @@ bool PrinceEngine::loadAnim(uint16 animNr, bool loop) { return true; } +bool PrinceEngine::loadShadow(byte *shadowBitmap, uint32 dataSize, const char *resourceName1, const char *resourceName2) { + + Common::SeekableReadStream *stream = SearchMan.createReadStreamForMember(resourceName1); + if (!stream) { + return false; + } + + if (stream->read(shadowBitmap, dataSize) != dataSize) { + free(shadowBitmap); + return false; + } + + stream = SearchMan.createReadStreamForMember(resourceName2); + if (!stream) { + return false; + } + + byte *shadowBitmap2 = shadowBitmap + dataSize; + if (stream->read(shadowBitmap2, dataSize) != dataSize) { + free(shadowBitmap); + return false; + } + return true; +} + void PrinceEngine::scrollCameraLeft(int16 delta) { if (_newCameraX > 0) { if (_newCameraX < delta) |