LURE: Adapt to setPalette RGBA->RGB change.

This is currently done by converting the internal palette from RGBA(?) to RGB
when setPalette is called.
This commit is contained in:
Johannes Schickel 2011-02-13 16:34:30 +01:00
parent 9216c7e3de
commit 68b17128c1
2 changed files with 21 additions and 5 deletions

View file

@ -52,12 +52,26 @@ Screen::~Screen() {
delete _palette;
}
void Screen::setSystemPalette(Palette *p, uint16 start, uint16 num) {
byte pal[3 * 256];
assert(start + num <= 256);
const byte *rawData = p->data();
for (uint i = 0; i < num; ++i) {
pal[i * 3 + 0] = rawData[(i + start) * 4 + 0];
pal[i * 3 + 1] = rawData[(i + start) * 4 + 1];
pal[i * 3 + 2] = rawData[(i + start) * 4 + 2];
}
_system.getPaletteManager()->setPalette(pal, start, num);
}
// setPaletteEmpty
// Defaults the palette to an empty set
void Screen::setPaletteEmpty(int numEntries) {
Palette emptyPalette(numEntries, NULL, RGB64);
_system.getPaletteManager()->setPalette(emptyPalette.data(), 0, numEntries);
setSystemPalette(&emptyPalette, 0, numEntries);
_palette->copyFrom(&emptyPalette);
/*
delete _palette;
@ -73,7 +87,7 @@ void Screen::setPaletteEmpty(int numEntries) {
void Screen::setPalette(Palette *p) {
_palette->copyFrom(p);
_system.getPaletteManager()->setPalette(_palette->data(), 0, GAME_COLOURS);
setSystemPalette(_palette, 0, GAME_COLOURS);
_system.updateScreen();
}
@ -82,7 +96,7 @@ void Screen::setPalette(Palette *p) {
void Screen::setPalette(Palette *p, uint16 start, uint16 num) {
_palette->palette()->copyFrom(p->palette(), start * 4, start * 4, num * 4);
_system.getPaletteManager()->setPalette(_palette->data(), start, num);
setSystemPalette(_palette, start, num);
_system.updateScreen();
}
@ -114,7 +128,7 @@ void Screen::paletteFadeIn(Palette *p) {
}
if (changed) {
_system.getPaletteManager()->setPalette(_palette->data(), 0, p->numEntries());
setSystemPalette(_palette, 0, p->numEntries());
_system.updateScreen();
_system.delayMillis(20);
while (events.pollEvent())
@ -147,7 +161,7 @@ void Screen::paletteFadeOut(int numEntries) {
}
if (changed) {
_system.getPaletteManager()->setPalette(_palette->data(), 0, numEntries);
setSystemPalette(_palette, 0, numEntries);
_system.updateScreen();
_system.delayMillis(20);
while (events.pollEvent())

View file

@ -42,6 +42,8 @@ private:
Disk &_disk;
Surface *_screen;
Palette *_palette;
void setSystemPalette(Palette *p, uint16 start, uint16 num);
public:
Screen(OSystem &system);
~Screen();