aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/screen_lol.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/kyra/screen_lol.cpp')
-rw-r--r--engines/kyra/screen_lol.cpp27
1 files changed, 13 insertions, 14 deletions
diff --git a/engines/kyra/screen_lol.cpp b/engines/kyra/screen_lol.cpp
index 8e06c112ff..fc8740a9d3 100644
--- a/engines/kyra/screen_lol.cpp
+++ b/engines/kyra/screen_lol.cpp
@@ -282,14 +282,13 @@ void Screen_LoL::fadeClearSceneWindow(int delay) {
if (_fadeFlag == 1)
return;
- uint8 *tpal = new uint8[768];
+ Palette tpal(getPalette(0).getNumColors());
+ tpal.copy(getPalette(0));
- memcpy(tpal, getPalette(0).getData(), 768);
- memset(tpal, 0, 384);
- loadSpecialColors(tpal);
+ loadSpecialColors(tpal.getData());
fadePalette(tpal, delay);
+
fillRect(112, 0, 288, 120, 0);
- delete[] tpal;
_fadeFlag = 1;
}
@@ -839,7 +838,7 @@ void Screen_LoL::fadeToBlack(int delay, const UpdateFunctor *upFunc) {
void Screen_LoL::fadeToPalette1(int delay) {
loadSpecialColors(getPalette(1).getData());
- fadePalette(getPalette(1).getData(), delay);
+ fadePalette(getPalette(1), delay);
_fadeFlag = 0;
}
@@ -897,22 +896,22 @@ bool Screen_LoL::fadeColor(int dstColorIndex, int srcColorIndex, uint32 elapsedT
p++;
}
- uint8 tpal[768];
- memcpy(tpal, _screenPalette->getData(), 768);
- memcpy(tpal + dstColorIndex * 3, tmpPalEntry, 3);
- setScreenPalette(tpal);
+ _tempPalette->copy(*_screenPalette);
+ _tempPalette->copy(*_screenPalette);
+ _tempPalette->copy(tmpPalEntry, 0, 1, dstColorIndex);
+ setScreenPalette(*_tempPalette);
updateScreen();
return res;
}
bool Screen_LoL::fadePaletteStep(uint8 *pal1, uint8 *pal2, uint32 elapsedTime, uint32 targetTime) {
- uint8 tpal[768];
- uint8 *p1 = getPalette(1).getData();
+ Palette &p1 = getPalette(1);
bool res = false;
for (int i = 0; i < 768; i++) {
uint8 out = 0;
+
if (elapsedTime < targetTime) {
int32 d = ((pal2[i] & 0x3f) - (pal1[i] & 0x3f));
if (d)
@@ -925,10 +924,10 @@ bool Screen_LoL::fadePaletteStep(uint8 *pal1, uint8 *pal2, uint32 elapsedTime, u
res = false;
}
- tpal[i] = out;
+ (*_tempPalette)[i] = out;
}
- setScreenPalette(tpal);
+ setScreenPalette(*_tempPalette);
updateScreen();
return res;