aboutsummaryrefslogtreecommitdiff
path: root/engines/gob/pregob/pregob.cpp
diff options
context:
space:
mode:
authorSven Hesse2012-06-28 03:38:27 +0200
committerSven Hesse2012-07-30 01:44:42 +0200
commit8b19e10104a98a95963ad2ee97b255d6804e7fdd (patch)
tree4d13dab46b52a4d4ffd3b83f582ea44256ede0db /engines/gob/pregob/pregob.cpp
parent4819468d9ad8218d04a2e4563ef71d7d00964515 (diff)
downloadscummvm-rg350-8b19e10104a98a95963ad2ee97b255d6804e7fdd.tar.gz
scummvm-rg350-8b19e10104a98a95963ad2ee97b255d6804e7fdd.tar.bz2
scummvm-rg350-8b19e10104a98a95963ad2ee97b255d6804e7fdd.zip
GOB: Add some generic PreGob graphics functions
Diffstat (limited to 'engines/gob/pregob/pregob.cpp')
-rw-r--r--engines/gob/pregob/pregob.cpp60
1 files changed, 59 insertions, 1 deletions
diff --git a/engines/gob/pregob/pregob.cpp b/engines/gob/pregob/pregob.cpp
index ab47adaac6..aea290214c 100644
--- a/engines/gob/pregob/pregob.cpp
+++ b/engines/gob/pregob/pregob.cpp
@@ -21,15 +21,73 @@
*/
#include "gob/gob.h"
+#include "gob/global.h"
+#include "gob/util.h"
+#include "gob/palanim.h"
+#include "gob/draw.h"
+#include "gob/video.h"
#include "gob/pregob/pregob.h"
namespace Gob {
-PreGob::PreGob(GobEngine *vm) : _vm(vm) {
+PreGob::PreGob(GobEngine *vm) : _vm(vm), _fadedOut(false) {
}
PreGob::~PreGob() {
}
+void PreGob::fadeOut() {
+ if (_fadedOut || _vm->shouldQuit())
+ return;
+
+ // Fade to black
+ _vm->_palAnim->fade(0, 0, 0);
+
+ _fadedOut = true;
+}
+
+void PreGob::fadeIn() {
+ if (!_fadedOut || _vm->shouldQuit())
+ return;
+
+ // Fade to palette
+ _vm->_draw->blitInvalidated();
+ _vm->_palAnim->fade(_vm->_global->_pPaletteDesc, 0, 0);
+ _vm->_draw->dirtiedRect(_vm->_draw->_backSurface, 0, 0, 319, 199);
+
+ _fadedOut = false;
+}
+
+void PreGob::clearScreen() {
+ _vm->_draw->_backSurface->clear();
+ _vm->_draw->dirtiedRect(_vm->_draw->_backSurface, 0, 0, 319, 199);
+ _vm->_draw->blitInvalidated();
+ _vm->_video->retrace();
+}
+
+void PreGob::initScreen() {
+ _vm->_util->setFrameRate(15);
+
+ _fadedOut = true;
+
+ _vm->_draw->initScreen();
+
+ _vm->_draw->_backSurface->clear();
+ _vm->_util->clearPalette();
+
+ _vm->_draw->forceBlit();
+ _vm->_video->retrace();
+
+ _vm->_util->processInput();
+}
+
+void PreGob::setPalette(const byte *palette, uint16 size) {
+ memcpy(_vm->_draw->_vgaPalette, palette, 3 * size);
+
+ // If we didn't fade out prior, immediately set the palette
+ if (!_fadedOut)
+ _vm->_video->setFullPalette(_vm->_global->_pPaletteDesc);
+}
+
} // End of namespace Gob