diff options
-rw-r--r-- | engines/made/made.cpp | 2 | ||||
-rw-r--r-- | engines/made/pmvplayer.cpp | 26 | ||||
-rw-r--r-- | engines/made/pmvplayer.h | 6 | ||||
-rw-r--r-- | engines/made/screen.cpp | 10 | ||||
-rw-r--r-- | engines/made/screen.h | 2 |
5 files changed, 22 insertions, 24 deletions
diff --git a/engines/made/made.cpp b/engines/made/made.cpp index feb80f407d..f87649d7a7 100644 --- a/engines/made/made.cpp +++ b/engines/made/made.cpp @@ -80,7 +80,7 @@ MadeEngine::MadeEngine(OSystem *syst, const MadeGameDescription *gameDesc) : Eng if (cd_num >= 0) _system->openCD(cd_num); - _pmvPlayer = new PmvPlayer(_system, _mixer); + _pmvPlayer = new PmvPlayer(this, _mixer); _res = new ProjectReader(); _screen = new Screen(this); _dat = new GameDatabase(); diff --git a/engines/made/pmvplayer.cpp b/engines/made/pmvplayer.cpp index cb31954902..69c3c80318 100644 --- a/engines/made/pmvplayer.cpp +++ b/engines/made/pmvplayer.cpp @@ -24,10 +24,11 @@ */ #include "made/pmvplayer.h" +#include "made/screen.h" namespace Made { -PmvPlayer::PmvPlayer(OSystem *system, Audio::Mixer *mixer) : _fd(NULL), _system(system), _mixer(mixer) { +PmvPlayer::PmvPlayer(MadeEngine *vm, Audio::Mixer *mixer) : _fd(NULL), _vm(vm), _mixer(mixer) { } PmvPlayer::~PmvPlayer() { @@ -68,7 +69,7 @@ void PmvPlayer::play(const char *filename) { // Read palette _fd->read(_palette, 768); - updatePalette(); + _vm->_screen->setRGBPalette(_palette); uint32 frameCount = 0; uint16 chunkCount = 0; @@ -144,7 +145,7 @@ void PmvPlayer::play(const char *filename) { firstTime = false; } - updatePalette(); + _vm->_screen->setRGBPalette(_palette); handleEvents(); updateScreen(); @@ -153,7 +154,7 @@ void PmvPlayer::play(const char *filename) { delete[] frameData; while (_mixer->getSoundElapsedTime(_audioStreamHandle) < frameCount * frameDelay) { - _system->delayMillis(10); + _vm->_system->delayMillis(10); } } @@ -180,7 +181,7 @@ void PmvPlayer::readChunk(uint32 &chunkType, uint32 &chunkSize) { void PmvPlayer::handleEvents() { Common::Event event; - while (_system->getEventManager()->pollEvent(event)) { + while (_vm->_system->getEventManager()->pollEvent(event)) { switch (event.type) { case Common::EVENT_KEYDOWN: if (event.kbd.keycode == Common::KEYCODE_ESCAPE) @@ -196,20 +197,9 @@ void PmvPlayer::handleEvents() { } } -void PmvPlayer::updatePalette() { - byte colors[1024]; - for (int i = 0; i < 256; i++) { - colors[i * 4 + 0] = _palette[i * 3 + 0]; - colors[i * 4 + 1] = _palette[i * 3 + 1]; - colors[i * 4 + 2] = _palette[i * 3 + 2]; - colors[i * 4 + 3] = 0; - } - _system->setPalette(colors, 0, 256); -} - void PmvPlayer::updateScreen() { - _system->copyRectToScreen((const byte*)_surface->pixels, _surface->pitch, 0, 0, _surface->w, _surface->h); - _system->updateScreen(); + _vm->_system->copyRectToScreen((const byte*)_surface->pixels, _surface->pitch, 0, 0, _surface->w, _surface->h); + _vm->_system->updateScreen(); } void PmvPlayer::decompressPalette(byte *palData, byte *outPal, uint32 palDataSize) { diff --git a/engines/made/pmvplayer.h b/engines/made/pmvplayer.h index 117817ed93..0e63d73f7f 100644 --- a/engines/made/pmvplayer.h +++ b/engines/made/pmvplayer.h @@ -36,16 +36,17 @@ #include "made/graphics.h" #include "made/sound.h" +#include "made/made.h" namespace Made { class PmvPlayer { public: - PmvPlayer(OSystem *system, Audio::Mixer *mixer); + PmvPlayer(MadeEngine *vm, Audio::Mixer *mixer); ~PmvPlayer(); void play(const char *filename); protected: - OSystem *_system; + MadeEngine *_vm; Audio::Mixer *_mixer; Common::File *_fd; Audio::AppendableAudioStream *_audioStream; @@ -55,7 +56,6 @@ protected: bool _abort; void readChunk(uint32 &chunkType, uint32 &chunkSize); void handleEvents(); - void updatePalette(); void updateScreen(); void decompressPalette(byte *palData, byte *outPal, uint32 palDataSize); }; diff --git a/engines/made/screen.cpp b/engines/made/screen.cpp index 6ae93730f7..b6d66a1330 100644 --- a/engines/made/screen.cpp +++ b/engines/made/screen.cpp @@ -73,7 +73,15 @@ void Screen::drawSurface(Graphics::Surface *source, int x, int y) { } -void Screen::setPalette(byte *palette, int start, int count) { +void Screen::setRGBPalette(byte *palette, int start, int count) { + byte colors[1024]; + for (int i = 0; i < count; i++) { + colors[i * 4 + 0] = palette[i * 3 + 0]; + colors[i * 4 + 1] = palette[i * 3 + 1]; + colors[i * 4 + 2] = palette[i * 3 + 2]; + colors[i * 4 + 3] = 0; + } + _vm->_system->setPalette(colors, start, count); } uint16 Screen::updateChannel(uint16 channelIndex) { diff --git a/engines/made/screen.h b/engines/made/screen.h index dfaa34d7c6..deb7b93015 100644 --- a/engines/made/screen.h +++ b/engines/made/screen.h @@ -61,7 +61,7 @@ public: void clearScreen(); void drawSurface(Graphics::Surface *source, int x, int y); - void setPalette(byte *palette, int start, int count); + void setRGBPalette(byte *palette, int start = 0, int count = 256); uint16 updateChannel(uint16 channelIndex); void deleteChannel(uint16 channelIndex); |