mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-24 21:21:05 +00:00
Extends seq_drinkPotionAnim() so that the color of the flask Brandon
drinks will be correct. Also fixes a bug where an animation (Brandon ringing the bells) would play too quickly. svn-id: r21354
This commit is contained in:
parent
dcf029e947
commit
05ee5cf2bd
@ -581,7 +581,7 @@ protected:
|
||||
void seq_makeBrandonWisp();
|
||||
void seq_dispelMagicAnimation();
|
||||
void seq_fillFlaskWithWater(int item, int type);
|
||||
void seq_playDrinkPotionAnim(int unk1, int unk2, int flags);
|
||||
void seq_playDrinkPotionAnim(int item, int unk2, int flags);
|
||||
int seq_playEnd();
|
||||
void seq_brandonToStone();
|
||||
void seq_playEnding();
|
||||
|
@ -234,6 +234,14 @@ void Screen::fadePalette(const uint8 *palData, int delay) {
|
||||
}
|
||||
}
|
||||
|
||||
void Screen::setPaletteIndex(uint8 index, uint8 red, uint8 green, uint8 blue) {
|
||||
debugC(9, kDebugLevelScreen, "Screen::setPaletteIndex(%u, %u, %u, %u)", index, red, green, blue);
|
||||
_currentPalette[index * 3 + 0] = red;
|
||||
_currentPalette[index * 3 + 1] = green;
|
||||
_currentPalette[index * 3 + 2] = blue;
|
||||
setScreenPalette(_currentPalette);
|
||||
}
|
||||
|
||||
void Screen::setScreenPalette(const uint8 *palData) {
|
||||
debugC(9, kDebugLevelScreen, "Screen::setScreenPalette(%p)", (const void *)palData);
|
||||
memcpy(_screenPalette, palData, 768);
|
||||
|
@ -99,6 +99,7 @@ public:
|
||||
void fadeToBlack();
|
||||
void fadeSpecialPalette(int palIndex, int startIndex, int size, int fadeTime);
|
||||
void fadePalette(const uint8 *palData, int delay);
|
||||
void setPaletteIndex(uint8 index, uint8 red, uint8 green, uint8 blue);
|
||||
void setScreenPalette(const uint8 *palData);
|
||||
void copyToPage0(int y, int h, uint8 page, uint8 *seqBuf);
|
||||
void copyRegion(int x1, int y1, int x2, int y2, int w, int h, int srcPage, int dstPage, int flags=0);
|
||||
|
@ -1331,7 +1331,8 @@ int KyraEngine::cmd_waitForConfirmationMouseClick(ScriptState *script) {
|
||||
delay(10);
|
||||
}
|
||||
// }
|
||||
// XXX processButtonList calls
|
||||
processButtonList(_buttonList);
|
||||
_skipFlag = false;
|
||||
script->variables[1] = _mouseX;
|
||||
script->variables[2] = _mouseY;
|
||||
return 0;
|
||||
|
@ -787,9 +787,56 @@ void KyraEngine::seq_fillFlaskWithWater(int item, int type) {
|
||||
characterSays(_fullFlask[type], 0, -2);
|
||||
}
|
||||
|
||||
void KyraEngine::seq_playDrinkPotionAnim(int unk1, int unk2, int flags) {
|
||||
debugC(9, kDebugLevelMain, "KyraEngine::seq_playDrinkPotionAnim(%d, %d, %d)", unk1, unk2, flags);
|
||||
// XXX
|
||||
void KyraEngine::seq_playDrinkPotionAnim(int item, int unk2, int flags) {
|
||||
debugC(9, kDebugLevelMain, "KyraEngine::seq_playDrinkPotionAnim(%d, %d, %d)", item, unk2, flags);
|
||||
uint8 red, green, blue;
|
||||
|
||||
switch (item) {
|
||||
case 60:
|
||||
case 61:
|
||||
red = 63;
|
||||
green = blue = 6;
|
||||
break;
|
||||
case 62:
|
||||
case 63:
|
||||
red = green = 0;
|
||||
blue = 67;
|
||||
break;
|
||||
case 64:
|
||||
case 65:
|
||||
red = 84;
|
||||
green = 78;
|
||||
blue = 14;
|
||||
break;
|
||||
case 66:
|
||||
red = blue = 0;
|
||||
green = 48;
|
||||
break;
|
||||
case 67:
|
||||
red = 100;
|
||||
green = 48;
|
||||
blue = 23;
|
||||
break;
|
||||
case 68:
|
||||
red = 73;
|
||||
green = 0;
|
||||
blue = 89;
|
||||
break;
|
||||
case 69:
|
||||
red = green = 73;
|
||||
blue = 86;
|
||||
break;
|
||||
default:
|
||||
red = 33;
|
||||
green = 66;
|
||||
blue = 100;
|
||||
}
|
||||
red = (uint8)((double)red * 0.63);
|
||||
green = (uint8)((double)green * 0.63);
|
||||
blue = (uint8)((double)blue * 0.63);
|
||||
|
||||
_screen->setPaletteIndex(0xFE, red, green, blue);
|
||||
|
||||
_screen->hideMouse();
|
||||
checkAmuletAnimFlags();
|
||||
_currentCharacter->facing = 5;
|
||||
@ -827,6 +874,7 @@ void KyraEngine::seq_playDrinkPotionAnim(int unk1, int unk2, int flags) {
|
||||
_currentCharacter->currentAnimFrame = 7;
|
||||
_animator->animRefreshNPC(0);
|
||||
freeShapes123();
|
||||
_screen->setPaletteIndex(0xFE, 30, 30, 30);
|
||||
_screen->showMouse();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user