diff options
author | Norbert Bajkó | 2015-03-01 14:48:34 +0100 |
---|---|---|
committer | Norbert Bajkó | 2015-03-01 14:48:34 +0100 |
commit | 8778603d342da33957cf995dd3547231795b14ba (patch) | |
tree | 337ac0c2b9b196361b7e8bff35d894dd72645485 /engines/drascula | |
parent | 2fa47e2efdf9aa6729bf5cc807b735fe0d61b745 (diff) | |
download | scummvm-rg350-8778603d342da33957cf995dd3547231795b14ba.tar.gz scummvm-rg350-8778603d342da33957cf995dd3547231795b14ba.tar.bz2 scummvm-rg350-8778603d342da33957cf995dd3547231795b14ba.zip |
DRASCULA: fix crash/graphic glitch at castle towers
Fix bug #5903 DRASCULA-IT: Crash/graphic glitch at castle towers
Diffstat (limited to 'engines/drascula')
-rw-r--r-- | engines/drascula/actors.cpp | 7 | ||||
-rw-r--r-- | engines/drascula/talk.cpp | 41 |
2 files changed, 33 insertions, 15 deletions
diff --git a/engines/drascula/actors.cpp b/engines/drascula/actors.cpp index 51148bbc05..0c18f513e1 100644 --- a/engines/drascula/actors.cpp +++ b/engines/drascula/actors.cpp @@ -396,6 +396,13 @@ void DrasculaEngine::increaseFrameNum() { curHeight = (int)newHeight; curWidth = (int)newWidth; } + + if ((currentChapter == 5) && (_roomNumber == 45)) { + curY = 0; + curX = 0; + curHeight = 0; + curWidth = 0; + } } void DrasculaEngine::walkDown() { diff --git a/engines/drascula/talk.cpp b/engines/drascula/talk.cpp index ed29dc5fe4..9773ceca5c 100644 --- a/engines/drascula/talk.cpp +++ b/engines/drascula/talk.cpp @@ -379,6 +379,7 @@ void DrasculaEngine::talk(const char *said, const char *filename) { int y_mask_talk = 170; int face; + bool notTowers = !((currentChapter == 5) && (_roomNumber == 45)); if (currentChapter == 6) { if (flags[0] == 0 && _roomNumber == 102) { @@ -434,44 +435,54 @@ void DrasculaEngine::talk(const char *said, const char *filename) { if (currentChapter == 2) copyRect(x_talk_izq[face], y_mask_talk, curX + 8, curY - 1, TALK_WIDTH, TALK_HEIGHT, extraSurface, screenSurface); - else + else if (notTowers) { reduce_hare_chico(x_talk_izq[face], y_mask_talk, curX + (int)((8.0f / 100) * factor_red[MIN(201, curY + curHeight)]), - curY, TALK_WIDTH, TALK_HEIGHT, factor_red[MIN(201, curY + curHeight)], - extraSurface, screenSurface); - + curY, TALK_WIDTH, TALK_HEIGHT, factor_red[MIN(201, curY + curHeight)], + extraSurface, screenSurface); + } updateRefresh(); } else if (trackProtagonist == 1) { if (currentChapter == 2) copyRect(x_talk_dch[face], y_mask_talk, curX + 12, curY, TALK_WIDTH, TALK_HEIGHT, extraSurface, screenSurface); - else + else if (notTowers) { reduce_hare_chico(x_talk_dch[face], y_mask_talk, curX + (int)((12.0f / 100) * factor_red[MIN(201, curY + curHeight)]), curY, TALK_WIDTH, TALK_HEIGHT, factor_red[MIN(201, curY + curHeight)], extraSurface, screenSurface); + } updateRefresh(); } else if (trackProtagonist == 2) { if (currentChapter == 2) copyRect(x_talk_izq[face], y_mask_talk, curX + 12, curY, TALK_WIDTH, TALK_HEIGHT, frontSurface, screenSurface); - else + else if (notTowers) { reduce_hare_chico(x_talk_izq[face], y_mask_talk, - talkOffset + curX + (int)((12.0f / 100) * factor_red[MIN(201, curY + curHeight)]), - curY, TALK_WIDTH, TALK_HEIGHT, factor_red[MIN(201, curY + curHeight)], - frontSurface, screenSurface); + talkOffset + curX + (int)((12.0f / 100) * factor_red[MIN(201, curY + curHeight)]), + curY, TALK_WIDTH, TALK_HEIGHT, factor_red[MIN(201, curY + curHeight)], + frontSurface, screenSurface); + } updateRefresh(); } else if (trackProtagonist == 3) { if (currentChapter == 2) copyRect(x_talk_dch[face], y_mask_talk, curX + 8, curY, TALK_WIDTH, TALK_HEIGHT, frontSurface, screenSurface); - else + else if (notTowers) { reduce_hare_chico(x_talk_dch[face], y_mask_talk, - talkOffset + curX + (int)((8.0f / 100) * factor_red[MIN(201, curY + curHeight)]), - curY, TALK_WIDTH,TALK_HEIGHT, factor_red[MIN(201, curY + curHeight)], - frontSurface, screenSurface); + talkOffset + curX + (int)((8.0f / 100) * factor_red[MIN(201, curY + curHeight)]), + curY, TALK_WIDTH, TALK_HEIGHT, factor_red[MIN(201, curY + curHeight)], + frontSurface, screenSurface); + } updateRefresh(); } - if (!_subtitlesDisabled) - centerText(said, curX, curY); + if (!_subtitlesDisabled) { + if (notTowers) { + centerText(said, curX, curY); + } + else { + centerText(said, 160, 25); + } + } + updateScreen(); updateEvents(); |