Skip to content

Commit

Permalink
PRINCE: checkNak for showBackAnims, beginning of Z axis for it
Browse files Browse the repository at this point in the history
  • Loading branch information
lukaslw committed Jun 22, 2014
1 parent b9e63a4 commit 3864655
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
19 changes: 19 additions & 0 deletions engines/prince/prince.cpp
Expand Up @@ -942,8 +942,27 @@ void PrinceEngine::showBackAnims() {
int phaseFrameIndex = _backAnimList[i].backAnims[activeSubAnim]._animData->getPhaseFrameIndex(phase);
int x = _backAnimList[i].backAnims[activeSubAnim]._x + _backAnimList[i].backAnims[activeSubAnim]._animData->getPhaseOffsetX(phase);
int y = _backAnimList[i].backAnims[activeSubAnim]._y + _backAnimList[i].backAnims[activeSubAnim]._animData->getPhaseOffsetY(phase);
int animFlag = _backAnimList[i].backAnims[activeSubAnim]._flags;
int checkMaskFlag = (animFlag & 1);
int maxFrontFlag = (animFlag & 2);
int specialZFlag = _backAnimList[i].backAnims[activeSubAnim]._nextAnim;
int z = _backAnimList[i].backAnims[activeSubAnim]._nextAnim;
int frameWidth = _backAnimList[i].backAnims[activeSubAnim]._animData->getFrameWidth(phaseFrameIndex);
int frameHeight = _backAnimList[i].backAnims[activeSubAnim]._animData->getFrameHeight(phaseFrameIndex);

if (x != 0 || y != 0 || phaseCount != 1 || frameCount != 1) { // fix for room no. 5 - animation 8 (propably unnecessary anim)
if (checkMaskFlag != 0) {
if (_backAnimList[i].backAnims[activeSubAnim]._nextAnim == 0) {
z = y + frameHeight - 1;
}
checkMasks(x, y, frameWidth, frameHeight, z);
}
if (maxFrontFlag != 0) {
z = kMaxPicHeight + 1;
}
if (specialZFlag != 0) {
z = specialZFlag;
}
Graphics::Surface *backAnimSurface = _backAnimList[i].backAnims[activeSubAnim]._animData->getFrame(phaseFrameIndex); //still with memory leak
showSprite(backAnimSurface, x, y);
backAnimSurface->free();
Expand Down
2 changes: 2 additions & 0 deletions engines/prince/prince.h
Expand Up @@ -244,6 +244,8 @@ class PrinceEngine : public Engine {

static const int16 kNormalWidth = 640;
static const int16 kNormalHeight = 480;
static const int16 kMaxPicWidth = 1280;
static const int16 kMaxPicHeight = 480;

void checkMasks(int x1, int y1, int sprWidth, int sprHeight, int z);
void insertMasks(const Graphics::Surface *originalRoomSurface);
Expand Down

0 comments on commit 3864655

Please sign in to comment.