diff options
author | Johannes Schickel | 2006-03-16 16:35:46 +0000 |
---|---|---|
committer | Johannes Schickel | 2006-03-16 16:35:46 +0000 |
commit | f1c9cd57265c64de835e6e9647afcf0e679651be (patch) | |
tree | 25873e83a092c4bc85fa8b5572fe88e712ffe547 /engines/kyra/animator.cpp | |
parent | 79b5c11ee24cae949db80040dff269e6851b64f0 (diff) | |
download | scummvm-rg350-f1c9cd57265c64de835e6e9647afcf0e679651be.tar.gz scummvm-rg350-f1c9cd57265c64de835e6e9647afcf0e679651be.tar.bz2 scummvm-rg350-f1c9cd57265c64de835e6e9647afcf0e679651be.zip |
- Fixes some gfx glitches (the falling feather and the falling leaf now have correct restored background)
- Fixes brandon width value after loading (removes gfx glitch while talking with the tree)
svn-id: r21332
Diffstat (limited to 'engines/kyra/animator.cpp')
-rw-r--r-- | engines/kyra/animator.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/engines/kyra/animator.cpp b/engines/kyra/animator.cpp index 551c9b90b8..92b06a14a8 100644 --- a/engines/kyra/animator.cpp +++ b/engines/kyra/animator.cpp @@ -178,10 +178,10 @@ void ScreenAnimator::preserveOrRestoreBackground(AnimObject *obj, bool restore) int x = 0, y = 0, width = obj->width << 3, height = obj->height; if (restore) { - x = obj->x2; + x = obj->x2 >> 3; y = obj->y2; } else { - x = obj->x1; + x = obj->x1 >> 3; y = obj->y1; } @@ -202,9 +202,9 @@ void ScreenAnimator::preserveOrRestoreBackground(AnimObject *obj, bool restore) } if (restore) { - _screen->copyBlockToPage(_screen->_curPage, x, y, width, height, obj->background); + _screen->copyBlockToPage(_screen->_curPage, x << 3, y, width, height, obj->background); } else { - _screen->copyRegionToBuffer(_screen->_curPage, x, y, width, height, obj->background); + _screen->copyRegionToBuffer(_screen->_curPage, x << 3, y, width, height, obj->background); } } @@ -373,11 +373,14 @@ void ScreenAnimator::copyChangedObjectsForward(int refreshFlag) { if (curObject->active) { if (curObject->refreshFlag || refreshFlag) { int xpos = 0, ypos = 0, width = 0, height = 0; - xpos = curObject->x1 - (curObject->width2+1); + xpos = (curObject->x1>>3) - (curObject->width2>>3) - 1; ypos = curObject->y1 - curObject->height2; - width = (curObject->width + ((curObject->width2)>>3)+1)<<3; + width = curObject->width + (curObject->width2>>3) + 2; height = curObject->height + curObject->height2*2; + xpos <<= 3; + width <<= 3; + if (xpos < 8) { xpos = 8; } else if (xpos + width > 312) { |