diff options
author | Matthew Stewart | 2018-05-29 20:35:36 -0400 |
---|---|---|
committer | Eugene Sandulenko | 2018-08-09 08:37:30 +0200 |
commit | 1290b7ea0298dc6a565e2593ecb703710d051830 (patch) | |
tree | e87d6d9bda16385f19a12b1570f1af0c008ed5fe /engines/startrek/graphics.cpp | |
parent | e5a97d91373e20815c4f093803dc569112e0c922 (diff) | |
download | scummvm-rg350-1290b7ea0298dc6a565e2593ecb703710d051830.tar.gz scummvm-rg350-1290b7ea0298dc6a565e2593ecb703710d051830.tar.bz2 scummvm-rg350-1290b7ea0298dc6a565e2593ecb703710d051830.zip |
STARTREK: Demon6, including the special case menu
Diffstat (limited to 'engines/startrek/graphics.cpp')
-rw-r--r-- | engines/startrek/graphics.cpp | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/engines/startrek/graphics.cpp b/engines/startrek/graphics.cpp index a5b2b7bc71..145a156b1e 100644 --- a/engines/startrek/graphics.cpp +++ b/engines/startrek/graphics.cpp @@ -46,6 +46,7 @@ Graphics::Graphics(StarTrekEngine *vm) : _vm(vm), _egaMode(false) { _font = new Font(_vm); _numSprites = 0; + _pushedNumSprites = -1; _palData = new byte[256 * 3]; _lutData = new byte[256 * 3]; @@ -160,7 +161,7 @@ void Graphics::decPaletteFadeLevel() { void Graphics::loadPri(const Common::String &priFile) { - SharedPtr<FileStream> priStream = _vm->loadFile(priFile); + SharedPtr<FileStream> priStream = _vm->loadFile(priFile + ".pri"); priStream->read(_priData, SCREEN_WIDTH * SCREEN_HEIGHT / 2); } @@ -555,6 +556,15 @@ void Graphics::drawAllSprites(bool updateScreen) { } /** + * Sets "bitmapChanged" to true on all sprites before calling drawAllSprites. + */ +void Graphics::forceDrawAllSprites(bool updateScreen) { + for (int i = 0; i < _numSprites; i++) + _sprites[i]->bitmapChanged = true; + drawAllSprites(updateScreen); +} + +/** * Returns the sprite at the given position (ignores mouse). */ Sprite *Graphics::getSpriteAt(int16 x, int16 y) { @@ -613,6 +623,24 @@ void Graphics::delSprite(Sprite *sprite) { error("delSprite: sprite not in list"); } +void Graphics::pushSprites() { + if (_pushedNumSprites != -1) + error("Tried to push sprites more than once"); + _pushedNumSprites = _numSprites; + memcpy(_pushedSprites, _sprites, sizeof(_sprites)); + + _numSprites = 0; +} + +void Graphics::popSprites() { + if (_pushedNumSprites == -1) + error("Tried to pop sprites without a prior push"); + _numSprites = _pushedNumSprites; + memcpy(_sprites, _pushedSprites, sizeof(_sprites)); + + _pushedNumSprites = -1; +} + void Graphics::copyBackgroundScreen() { drawDirectToScreen(_backgroundImage); |