diff options
author | David Corrales | 2007-08-05 19:34:20 +0000 |
---|---|---|
committer | David Corrales | 2007-08-05 19:34:20 +0000 |
commit | 6856535010bd2fa4449bcfde1c88dc06cd46e26f (patch) | |
tree | b81a2234c2beff0312c93e039d6cafda4babeca6 /engines/saga/events.cpp | |
parent | 1400d28bfb37fc94f3c44dec0a4d0cef65fb8fb7 (diff) | |
parent | ec1803f838d5efc7decf75c05a1fb4a9633751e5 (diff) | |
download | scummvm-rg350-6856535010bd2fa4449bcfde1c88dc06cd46e26f.tar.gz scummvm-rg350-6856535010bd2fa4449bcfde1c88dc06cd46e26f.tar.bz2 scummvm-rg350-6856535010bd2fa4449bcfde1c88dc06cd46e26f.zip |
Merged fsnode with trunk: r27971:28460
svn-id: r28462
Diffstat (limited to 'engines/saga/events.cpp')
-rw-r--r-- | engines/saga/events.cpp | 41 |
1 files changed, 38 insertions, 3 deletions
diff --git a/engines/saga/events.cpp b/engines/saga/events.cpp index b93c6017c7..80e6b58595 100644 --- a/engines/saga/events.cpp +++ b/engines/saga/events.cpp @@ -35,6 +35,7 @@ #include "saga/palanim.h" #include "saga/render.h" #include "saga/sndres.h" +#include "saga/rscfile.h" #include "saga/music.h" #include "saga/actor.h" @@ -344,6 +345,39 @@ int Events::handleOneShot(Event *event) { _vm->_actor->showActors(true); } break; + case kPsychicProfileBgEvent: + { + ResourceContext *context = _vm->_resource->getContext(GAME_RESOURCEFILE); + + byte *resourceData; + size_t resourceDataLength; + + _vm->_resource->loadResource(context, _vm->getResourceDescription()->psychicProfileResourceId, resourceData, resourceDataLength); + + byte *buf; + size_t buflen; + int width; + int height; + + _vm->decodeBGImage(resourceData, resourceDataLength, &buf, &buflen, &width, &height); + + const PalEntry *palette = (const PalEntry *)_vm->getImagePal(resourceData, resourceDataLength); + + Surface *bgSurface = _vm->_render->getBackGroundSurface(); + const Rect profileRect(width, height); + + bgSurface->blit(profileRect, buf); + _vm->_frameCount++; + + _vm->_gfx->setPalette(palette); + + free(buf); + free(resourceData); + + // Draw the scene. It won't be drawn by Render::drawScene(), as the RF_PLACARD is set + _vm->_scene->draw(); + } + break; case kAnimEvent: switch (event->op) { case kEventPlay: @@ -460,12 +494,13 @@ int Events::handleOneShot(Event *event) { _vm->_gfx->showCursor(false); break; case kEventSetNormalCursor: - // in ITE there is just one cursor - if (_vm->getGameType() == GType_IHNM) + // in ITE and IHNM demo there is just one cursor + if (_vm->getGameType() == GType_IHNM && _vm->getGameId() != GID_IHNM_DEMO) _vm->_gfx->setCursor(kCursorNormal); break; case kEventSetBusyCursor: - if (_vm->getGameType() == GType_IHNM) + // in ITE and IHNM demo there is just one cursor + if (_vm->getGameType() == GType_IHNM && _vm->getGameId() != GID_IHNM_DEMO) _vm->_gfx->setCursor(kCursorBusy); break; default: |