aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorPaul Gilbert2007-08-25 06:06:18 +0000
committerPaul Gilbert2007-08-25 06:06:18 +0000
commit5fd1bf64f24ead49799627b39e305a684f738e9c (patch)
tree6e5bde18fcc18314bba0b322ffa8ec9e984bb2d8 /engines
parent234c2a5770a78e5044b8fe2fb86d42fe0dee3c83 (diff)
downloadscummvm-rg350-5fd1bf64f24ead49799627b39e305a684f738e9c.tar.gz
scummvm-rg350-5fd1bf64f24ead49799627b39e305a684f738e9c.tar.bz2
scummvm-rg350-5fd1bf64f24ead49799627b39e305a684f738e9c.zip
Bugfix to prevent animations nuking the GUI element palette entries
svn-id: r28713
Diffstat (limited to 'engines')
-rw-r--r--engines/lure/animseq.cpp6
-rw-r--r--engines/lure/screen.cpp13
-rw-r--r--engines/lure/screen.h4
3 files changed, 11 insertions, 12 deletions
diff --git a/engines/lure/animseq.cpp b/engines/lure/animseq.cpp
index 39d74e5ec8..f3c8a6b3b4 100644
--- a/engines/lure/animseq.cpp
+++ b/engines/lure/animseq.cpp
@@ -104,14 +104,14 @@ AnimationSequence::AnimationSequence(Screen &screen, OSystem &system, uint16 scr
_lineRefs = d.getEntry(_screenId + 1);
- // Show the screen that preceeds the start of the animation data
- _screen.setPaletteEmpty();
+ // Reset the palette and set the initial starting screen
+ _screen.setPaletteEmpty(RES_PALETTE_ENTRIES);
_screen.screen().data().copyFrom(_decodedData, 0, 0, FULL_SCREEN_HEIGHT * FULL_SCREEN_WIDTH);
_screen.update();
// Set the palette
if (fadeIn) _screen.paletteFadeIn(&_palette);
- else _screen.setPalette(&_palette);
+ else _screen.setPalette(&_palette, 0, _palette.numEntries());
// Set up frame poitners
_pPixels = _decodedData->data() + SCREEN_SIZE;
diff --git a/engines/lure/screen.cpp b/engines/lure/screen.cpp
index 0cd2dd9357..7e96484b2f 100644
--- a/engines/lure/screen.cpp
+++ b/engines/lure/screen.cpp
@@ -55,11 +55,11 @@ Screen::~Screen() {
// setPaletteEmpty
// Defaults the palette to an empty set
-void Screen::setPaletteEmpty() {
+void Screen::setPaletteEmpty(int numEntries) {
delete _palette;
_palette = new Palette();
- _system.setPalette(_palette->data(), 0, GAME_COLOURS);
+ _system.setPalette(_palette->data(), 0, numEntries);
_system.updateScreen();
}
@@ -76,9 +76,8 @@ void Screen::setPalette(Palette *p) {
// Variation that allows the specification of a subset of a palette passed in to be copied
void Screen::setPalette(Palette *p, uint16 start, uint16 num) {
- _palette->palette()->copyFrom(p->palette(), start * PALETTE_FADE_INC_SIZE,
- start * PALETTE_FADE_INC_SIZE, num * PALETTE_FADE_INC_SIZE);
- _system.setPalette(_palette->data(), 0, GAME_COLOURS);
+ _palette->palette()->copyFrom(p->palette(), start * 4, start * 4, num * 4);
+ _system.setPalette(_palette->data(), start, num);
_system.updateScreen();
}
@@ -111,7 +110,7 @@ void Screen::paletteFadeIn(Palette *p) {
}
if (changed) {
- _system.setPalette(_palette->data(), 0, GAME_COLOURS);
+ _system.setPalette(_palette->data(), 0, p->numEntries());
_system.updateScreen();
_system.delayMillis(20);
events.pollEvent();
@@ -143,7 +142,7 @@ void Screen::paletteFadeOut(int numEntries) {
}
if (changed) {
- _system.setPalette(_palette->data(), 0, GAME_COLOURS);
+ _system.setPalette(_palette->data(), 0, numEntries);
_system.updateScreen();
_system.delayMillis(20);
events.pollEvent();
diff --git a/engines/lure/screen.h b/engines/lure/screen.h
index 7182c4236b..90db7ee314 100644
--- a/engines/lure/screen.h
+++ b/engines/lure/screen.h
@@ -47,12 +47,12 @@ public:
~Screen();
static Screen &getReference();
- void setPaletteEmpty();
+ void setPaletteEmpty(int numEntries = RES_PALETTE_ENTRIES);
void setPalette(Palette *p);
void setPalette(Palette *p, uint16 start, uint16 num);
Palette &getPalette() { return *_palette; }
void paletteFadeIn(Palette *p);
- void paletteFadeOut(int numEntries = MAIN_PALETTE_SIZE);
+ void paletteFadeOut(int numEntries = RES_PALETTE_ENTRIES);
void resetPalette();
void empty();
void update();