diff options
author | Johannes Schickel | 2006-01-02 13:20:02 +0000 |
---|---|---|
committer | Johannes Schickel | 2006-01-02 13:20:02 +0000 |
commit | f4a15f5f0d9882f12e36ca2f4785e42f87032828 (patch) | |
tree | 050e394208e27fe953ce9b1bfd35a648aed43fb8 /kyra/seqplayer.cpp | |
parent | 1ef2e300b27aa2a9a5b1d2d4f316782b410c5c99 (diff) | |
download | scummvm-rg350-f4a15f5f0d9882f12e36ca2f4785e42f87032828.tar.gz scummvm-rg350-f4a15f5f0d9882f12e36ca2f4785e42f87032828.tar.bz2 scummvm-rg350-f4a15f5f0d9882f12e36ca2f4785e42f87032828.zip |
Started to clean up the kyra engine.
Done:
- moving all wsa specific things into a new class
svn-id: r19888
Diffstat (limited to 'kyra/seqplayer.cpp')
-rwxr-xr-x | kyra/seqplayer.cpp | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/kyra/seqplayer.cpp b/kyra/seqplayer.cpp index 8f88f175e4..6cd2b97aae 100755 --- a/kyra/seqplayer.cpp +++ b/kyra/seqplayer.cpp @@ -28,6 +28,7 @@ #include "kyra/resource.h" #include "kyra/screen.h" #include "kyra/sound.h" +#include "kyra/wsamovie.h" #include "kyra/seqplayer.h" @@ -51,6 +52,12 @@ SeqPlayer::SeqPlayer(KyraEngine* vm, OSystem* system) { SeqPlayer::~SeqPlayer() { freeHandShapes(); + + for (int i = 0; i < ARRAYSIZE(_seqMovies); ++i) { + _seqMovies[i].movie->close(); + delete _seqMovies[i].movie; + _seqMovies[i].movie = 0; + } } uint8 *SeqPlayer::setPanPages(int pageNum, int shape) { @@ -81,6 +88,8 @@ void SeqPlayer::makeHandShapes() { debug(9, "SeqPlayer::makeHandShapes()"); _vm->loadBitmap("WRITING.CPS", 3, 3, 0); for (int i = 0; i < ARRAYSIZE(_handShapes); ++i) { + if (_handShapes[i]) + free(_handShapes[i]); _handShapes[i] = setPanPages(3, i); } } @@ -98,17 +107,19 @@ void SeqPlayer::s1_wsaOpen() { assert(wsaObj < ARRAYSIZE(_seqMovies)); uint8 offscreenDecode = *_seqData++; _seqWsaCurDecodePage = _seqMovies[wsaObj].page = (offscreenDecode == 0) ? 0 : 3; - _seqMovies[wsaObj].wsa = _vm->wsa_open(_vm->seqWSATable()[wsaObj], offscreenDecode, 0); + if (!_seqMovies[wsaObj].movie) + _seqMovies[wsaObj].movie = _vm->createWSAMovie(); + _seqMovies[wsaObj].movie->_drawPage = _seqMovies[wsaObj].page; + _seqMovies[wsaObj].movie->open(_vm->seqWSATable()[wsaObj], offscreenDecode, 0); _seqMovies[wsaObj].frame = 0; - _seqMovies[wsaObj].numFrames = _vm->wsa_getNumFrames(_seqMovies[wsaObj].wsa) - 1; + _seqMovies[wsaObj].numFrames = _seqMovies[wsaObj].movie->frames() - 1; } void SeqPlayer::s1_wsaClose() { uint8 wsaObj = *_seqData++; assert(wsaObj < ARRAYSIZE(_seqMovies)); - if (_seqMovies[wsaObj].wsa) { - _vm->wsa_close(_seqMovies[wsaObj].wsa); - _seqMovies[wsaObj].wsa = 0; + if (_seqMovies[wsaObj].movie) { + _seqMovies[wsaObj].movie->close(); } } @@ -118,7 +129,10 @@ void SeqPlayer::s1_wsaPlayFrame() { int16 frame = (int8)*_seqData++; _seqMovies[wsaObj].pos.x = READ_LE_UINT16(_seqData); _seqData += 2; _seqMovies[wsaObj].pos.y = *_seqData++; - _vm->wsa_play(_seqMovies[wsaObj].wsa, frame, _seqMovies[wsaObj].pos.x, _seqMovies[wsaObj].pos.y, _seqMovies[wsaObj].page); + assert(_seqMovies[wsaObj].movie); + _seqMovies[wsaObj].movie->_x = _seqMovies[wsaObj].pos.x; + _seqMovies[wsaObj].movie->_y = _seqMovies[wsaObj].pos.y; + _seqMovies[wsaObj].movie->displayFrame(frame); _seqMovies[wsaObj].frame = frame; } @@ -130,7 +144,7 @@ void SeqPlayer::s1_wsaPlayNextFrame() { frame = 0; _seqMovies[wsaObj].frame = 0; } - _vm->wsa_play(_seqMovies[wsaObj].wsa, frame, _seqMovies[wsaObj].pos.x, _seqMovies[wsaObj].pos.y, _seqMovies[wsaObj].page); + _seqMovies[wsaObj].movie->displayFrame(frame); } void SeqPlayer::s1_wsaPlayPrevFrame() { @@ -141,7 +155,7 @@ void SeqPlayer::s1_wsaPlayPrevFrame() { frame = _seqMovies[wsaObj].numFrames; _seqMovies[wsaObj].frame = frame; } else { - _vm->wsa_play(_seqMovies[wsaObj].wsa, frame, _seqMovies[wsaObj].pos.x, _seqMovies[wsaObj].pos.y, _seqMovies[wsaObj].page); + _seqMovies[wsaObj].movie->displayFrame(frame); } } |