diff options
author | Florian Kagerer | 2009-09-26 13:17:11 +0000 |
---|---|---|
committer | Florian Kagerer | 2009-09-26 13:17:11 +0000 |
commit | 84accad507657e636789d23fe457dca6f3447c23 (patch) | |
tree | d62a53d0c146fd61e4fdefe435a0d81f822f4b45 | |
parent | e46029e8c614c2f18419691baf1ff3b9fd40e95d (diff) | |
download | scummvm-rg350-84accad507657e636789d23fe457dca6f3447c23.tar.gz scummvm-rg350-84accad507657e636789d23fe457dca6f3447c23.tar.bz2 scummvm-rg350-84accad507657e636789d23fe457dca6f3447c23.zip |
LOL/PC-98: start fixing sequences (like broken arms inn and king richard getting poisoned)
svn-id: r44375
-rw-r--r-- | engines/kyra/lol.cpp | 12 | ||||
-rw-r--r-- | engines/kyra/scene_lol.cpp | 5 | ||||
-rw-r--r-- | engines/kyra/script_lol.cpp | 14 | ||||
-rw-r--r-- | engines/kyra/script_tim.cpp | 7 | ||||
-rw-r--r-- | engines/kyra/staticres.cpp | 10 | ||||
-rw-r--r-- | engines/kyra/text_lol.cpp | 7 |
6 files changed, 39 insertions, 16 deletions
diff --git a/engines/kyra/lol.cpp b/engines/kyra/lol.cpp index 0c7d231edc..82447a4836 100644 --- a/engines/kyra/lol.cpp +++ b/engines/kyra/lol.cpp @@ -1568,9 +1568,15 @@ void LoLEngine::initDialogueSequence(int controlMode, int pageNum) { _fadeText = false; int cp = _screen->setCurPage(pageNum); - _screen->fillRect(0, 128, 319, 199, 1); - gui_drawBox(0, 129, 320, 71, 136, 251, -1); - gui_drawBox(1, 130, 318, 69, 136, 251, 252); + if (_flags.use16ColorMode) { + _screen->fillRect(0, 128, 319, 199, 0x44); + gui_drawBox(0, 129, 320, 71, 0xee, 0xcc, -1); + gui_drawBox(1, 130, 318, 69, 0xee, 0xcc, 0x11); + } else { + _screen->fillRect(0, 128, 319, 199, 1); + gui_drawBox(0, 129, 320, 71, 136, 251, -1); + gui_drawBox(1, 130, 318, 69, 136, 251, 252); + } _screen->modifyScreenDim(5, 8, 131, 304, 66); _screen->modifyScreenDim(4, 1, 133, 38, 60); diff --git a/engines/kyra/scene_lol.cpp b/engines/kyra/scene_lol.cpp index a099b61796..09fb0f0329 100644 --- a/engines/kyra/scene_lol.cpp +++ b/engines/kyra/scene_lol.cpp @@ -1478,7 +1478,10 @@ void LoLEngine::prepareSpecialScene(int fieldType, int hasDialogue, int suspendG initDialogueSequence(fieldType, 0); if (fadeFlag) { - _screen->fadePalette(_screen->getPalette(3), 10); + if (_flags.use16ColorMode) + setPaletteBrightness(_screen->getPalette(0), _brightness, _lampEffect); + else + _screen->fadePalette(_screen->getPalette(3), 10); _screen->_fadeFlag = 0; } diff --git a/engines/kyra/script_lol.cpp b/engines/kyra/script_lol.cpp index c731425791..09d84a87ce 100644 --- a/engines/kyra/script_lol.cpp +++ b/engines/kyra/script_lol.cpp @@ -607,7 +607,10 @@ int LoLEngine::olol_fadeToBlack(EMCState *script) { int LoLEngine::olol_fadePalette(EMCState *script) { debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_fadePalette(%p)", (const void *)script); - _screen->fadePalette(_screen->getPalette(3), 10); + if (_flags.use16ColorMode) + setPaletteBrightness(_screen->getPalette(0), _brightness, _lampEffect); + else + _screen->fadePalette(_screen->getPalette(3), 10); _screen->_fadeFlag = 0; return 1; } @@ -1337,8 +1340,13 @@ int LoLEngine::olol_drawExitButton(EMCState *script) { char *str = getLangString(0x4033); int w = _screen->getTextWidth(str); - gui_drawBox(x - offs - w, y - 9, w + offs, 9, 136, 251, 252); - _screen->printText(str, x - (offs >> 1) - w, y - 7, 144, 0); + if (_flags.use16ColorMode) { + gui_drawBox(x - offs - w, y - 9, w + offs, 9, 0xee, 0xcc, 0x11); + _screen->printText(str, x - (offs >> 1) - w, y - 7, 0xbb, 0); + } else { + gui_drawBox(x - offs - w, y - 9, w + offs, 9, 136, 251, 252); + _screen->printText(str, x - (offs >> 1) - w, y - 7, 144, 0); + } if (stackPos(1)) _screen->drawGridBox(x - offs - w + 1, y - 8, w + offs - 2, 7, 1); diff --git a/engines/kyra/script_tim.cpp b/engines/kyra/script_tim.cpp index 11600b58ef..a48fce883f 100644 --- a/engines/kyra/script_tim.cpp +++ b/engines/kyra/script_tim.cpp @@ -1176,7 +1176,7 @@ void TIMInterpreter_LoL::drawDialogueButtons() { if (_vm->gameFlags().use16ColorMode) { _vm->gui_drawBox(x, (_dialogueButtonPosY & ~7) - 1, 74, 10, 0xee, 0xcc, -1); _screen->printText(_dialogueButtonString[i], (x + 37 - (_screen->getTextWidth(_dialogueButtonString[i])) / 2) & ~3, - (_dialogueButtonPosY & ~7) + 1, _dialogueHighlightedButton == i ? 0xc1 : 0xe1, 0); + (_dialogueButtonPosY + 2) & ~7, _dialogueHighlightedButton == i ? 0xc1 : 0xe1, 0); } else { _vm->gui_drawBox(x, _dialogueButtonPosY, 74, 9, 136, 251, -1); _screen->printText(_dialogueButtonString[i], x + 37 - (_screen->getTextWidth(_dialogueButtonString[i])) / 2, @@ -1193,10 +1193,11 @@ uint16 TIMInterpreter_LoL::processDialogue() { int df = _dialogueHighlightedButton; int res = 0; int x = _dialogueButtonPosX; + int y = (_vm->gameFlags().use16ColorMode ? (_dialogueButtonPosY & ~7) - 1 : _dialogueButtonPosY); for (int i = 0; i < _dialogueNumButtons; i++) { Common::Point p = _vm->getMousePos(); - if (_vm->posWithinRect(p.x, p.y, x, _dialogueButtonPosY, x + 74, _dialogueButtonPosY + 9)) { + if (_vm->posWithinRect(p.x, p.y, x, y, x + 74, y + 9)) { _dialogueHighlightedButton = i; break; } @@ -1257,7 +1258,7 @@ uint16 TIMInterpreter_LoL::processDialogue() { for (int i = 0; i < _dialogueNumButtons; i++) { Common::Point p = _vm->getMousePos(); - if (_vm->posWithinRect(p.x, p.y, x, _dialogueButtonPosY, x + 74, _dialogueButtonPosY + 9)) { + if (_vm->posWithinRect(p.x, p.y, x, y, x + 74, y + 9)) { _dialogueHighlightedButton = i; res = _dialogueHighlightedButton + 1; break; diff --git a/engines/kyra/staticres.cpp b/engines/kyra/staticres.cpp index 2344ce0f15..d5f984cfdc 100644 --- a/engines/kyra/staticres.cpp +++ b/engines/kyra/staticres.cpp @@ -3299,11 +3299,11 @@ const ScreenDim Screen_LoL::_screenDimTable16C[] = { { 0x0B, 0x7B, 0x1C, 0x11, 0x33, 0x11, 0x00, 0x00 }, { 0x0B, 0x7B, 0x1C, 0x2D, 0x33, 0x11, 0x00, 0x00 }, { 0x55, 0x7B, 0xE9, 0x37, 0x33, 0x11, 0x00, 0x00 }, - { 0x0B, 0x8C, 0x10, 0x2B, 0x33, 0x44, 0x00, 0x00 }, // Main menu box (4 entries) - { 0x04, 0x59, 0x20, 0x3C, 0x00, 0x00, 0x00, 0x00 }, - { 0x05, 0x6E, 0x1E, 0x0C, 0x33, 0x44, 0x00, 0x00 }, - { 0x07, 0x19, 0x1A, 0x97, 0x00, 0x00, 0x00, 0x00 }, - { 0x03, 0x1E, 0x22, 0x8C, 0x00, 0x00, 0x00, 0x00 }, + { 0x0B, 0x92, 0x10, 0x2A, 0x33, 0x44, 0x00, 0x00 }, // Main menu box (4 entries) + { 0x04, 0x58, 0x20, 0x3C, 0x00, 0x00, 0x00, 0x00 }, + { 0x05, 0x6C, 0x1E, 0x0D, 0x33, 0x44, 0x00, 0x00 }, + { 0x07, 0x20, 0x1A, 0x86, 0x00, 0x00, 0x00, 0x00 }, + { 0x03, 0x20, 0x22, 0x8C, 0x00, 0x00, 0x00, 0x00 }, { 0x02, 0x48, 0x24, 0x34, 0x00, 0x00, 0x00, 0x00 }, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, { 0x0E, 0x00, 0x16, 0x78, 0x33, 0x44, 0x00, 0x00 }, diff --git a/engines/kyra/text_lol.cpp b/engines/kyra/text_lol.cpp index 23a9283b4e..732f97f749 100644 --- a/engines/kyra/text_lol.cpp +++ b/engines/kyra/text_lol.cpp @@ -788,7 +788,12 @@ void TextDisplayer_LoL::textPageBreak() { void TextDisplayer_LoL::clearCurDim() { int d = _screen->curDimIndex(); const ScreenDim *tmp = _screen->getScreenDim(_screen->curDimIndex()); - _screen->fillRect(tmp->sx << 3, tmp->sy, ((tmp->sx + tmp->w) << 3) - 1, (tmp->sy + tmp->h) - 1, _textDimData[d].color2); + if (_vm->gameFlags().use16ColorMode) { + _screen->fillRect(tmp->sx << 3, tmp->sy, ((tmp->sx + tmp->w) << 3) - 2, (tmp->sy + tmp->h) - 2, _textDimData[d].color2); + } else { + _screen->fillRect(tmp->sx << 3, tmp->sy, ((tmp->sx + tmp->w) << 3) - 1, (tmp->sy + tmp->h) - 1, _textDimData[d].color2); + } + _lineCount = 0; _textDimData[d].column = _textDimData[d].line = 0; } |