diff options
author | johndoe123 | 2012-10-22 12:26:53 +0000 |
---|---|---|
committer | Willem Jan Palenstijn | 2013-05-08 20:47:33 +0200 |
commit | 9ba7a7f1a143e20eefdc47555840d4175103986b (patch) | |
tree | a1c20be6e7b9fb5dfecdc5de899b9997c452266c | |
parent | eb054471e0814768571c550a4d268e73e1ea6b65 (diff) | |
download | scummvm-rg350-9ba7a7f1a143e20eefdc47555840d4175103986b.tar.gz scummvm-rg350-9ba7a7f1a143e20eefdc47555840d4175103986b.tar.bz2 scummvm-rg350-9ba7a7f1a143e20eefdc47555840d4175103986b.zip |
NEVERHOOD: Rename stuff in Sprite:
- processDelta() to updateBounds()
- getRect() to getCollisionBounds()
- _drawRect to _drawOffset
- _rect to _collisionBounds
- _deltaRect to _collisionBoundsOffset
-rw-r--r-- | engines/neverhood/collisionman.cpp | 2 | ||||
-rw-r--r-- | engines/neverhood/diskplayerscene.cpp | 12 | ||||
-rw-r--r-- | engines/neverhood/klayman.cpp | 16 | ||||
-rw-r--r-- | engines/neverhood/menumodule.cpp | 26 | ||||
-rw-r--r-- | engines/neverhood/module1000.cpp | 48 | ||||
-rw-r--r-- | engines/neverhood/module1100.cpp | 24 | ||||
-rw-r--r-- | engines/neverhood/module1100.h | 2 | ||||
-rw-r--r-- | engines/neverhood/module1200.cpp | 16 | ||||
-rw-r--r-- | engines/neverhood/module1300.cpp | 6 | ||||
-rw-r--r-- | engines/neverhood/module1400.cpp | 22 | ||||
-rw-r--r-- | engines/neverhood/module1700.cpp | 12 | ||||
-rw-r--r-- | engines/neverhood/module1900.cpp | 16 | ||||
-rw-r--r-- | engines/neverhood/module2200.cpp | 62 | ||||
-rw-r--r-- | engines/neverhood/module2500.cpp | 12 | ||||
-rw-r--r-- | engines/neverhood/module2600.cpp | 6 | ||||
-rw-r--r-- | engines/neverhood/module2700.cpp | 2 | ||||
-rw-r--r-- | engines/neverhood/module2800.cpp | 72 | ||||
-rw-r--r-- | engines/neverhood/module2900.cpp | 48 | ||||
-rw-r--r-- | engines/neverhood/module3000.cpp | 86 | ||||
-rw-r--r-- | engines/neverhood/mouse.cpp | 26 | ||||
-rw-r--r-- | engines/neverhood/sprite.cpp | 66 | ||||
-rw-r--r-- | engines/neverhood/sprite.h | 13 |
22 files changed, 296 insertions, 299 deletions
diff --git a/engines/neverhood/collisionman.cpp b/engines/neverhood/collisionman.cpp index bacf18bd30..973c0fe853 100644 --- a/engines/neverhood/collisionman.cpp +++ b/engines/neverhood/collisionman.cpp @@ -94,7 +94,7 @@ void CollisionMan::clearSprites() { void CollisionMan::checkCollision(Sprite *sprite, uint16 flags, int messageNum, uint32 messageParam) { for (Common::Array<Sprite*>::iterator iter = _sprites.begin(); iter != _sprites.end(); iter++) { Sprite *collSprite = *iter; - if ((sprite->getFlags() & flags) && collSprite->checkCollision(sprite->getRect())) { + if ((sprite->getFlags() & flags) && collSprite->checkCollision(sprite->getCollisionBounds())) { sprite->sendMessage(collSprite, messageNum, messageParam); } } diff --git a/engines/neverhood/diskplayerscene.cpp b/engines/neverhood/diskplayerscene.cpp index 0ffb0b0acd..e9813e61a3 100644 --- a/engines/neverhood/diskplayerscene.cpp +++ b/engines/neverhood/diskplayerscene.cpp @@ -198,14 +198,14 @@ DiskplayerPlayButton::DiskplayerPlayButton(NeverhoodEngine *vm, DiskplayerScene _spriteResource.load2(0x24A4A664); createSurface(400, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; - _deltaRect = _drawRect; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; + _collisionBoundsOffset = _drawOffset; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; - processDelta(); + updateBounds(); _needRefresh = true; StaticSprite::update(); _surface->setVisible(false); diff --git a/engines/neverhood/klayman.cpp b/engines/neverhood/klayman.cpp index f06ce40c68..9e9f136739 100644 --- a/engines/neverhood/klayman.cpp +++ b/engines/neverhood/klayman.cpp @@ -707,7 +707,7 @@ void Klayman::suAction() { _x = _destX; } - processDelta(); + updateBounds(); } @@ -753,7 +753,7 @@ void Klayman::suSneaking() { } } } - processDelta(); + updateBounds(); } } @@ -932,7 +932,7 @@ void Klayman::suWalkingTestExit() { } } } - processDelta(); + updateBounds(); } } @@ -1409,7 +1409,7 @@ void Klayman::suLargeStep() { _y = xdiff < 0 ? hitRectPrev->rect.y2 : hitRectPrev->rect.y1; } } - processDelta(); + updateBounds(); } } @@ -2175,7 +2175,7 @@ void Klayman::suJumpToGrab() { updateDeltaXY(); if (_y >= _destY) { _y = _destY; - processDelta(); + updateBounds(); gotoNextStateExt(); } } @@ -2856,7 +2856,7 @@ void Klayman::suFallDown() { HitRect *hitRect = _vm->_collisionMan->findHitRectAtPos(_x, _y + 10); if (hitRect->type == 0x5001) { _y = hitRect->rect.y1; - processDelta(); + updateBounds(); sendMessage(this, 0x1019, 0); } _vm->_collisionMan->checkCollision(this, 0xFFFF, 0x4810, 0); @@ -3016,7 +3016,7 @@ void Klayman::suFallSkipJump() { HitRect *hitRect = _vm->_collisionMan->findHitRectAtPos(_x, _y + 10); if (hitRect->type == 0x5001) { _y = hitRect->rect.y1; - processDelta(); + updateBounds(); sendMessage(this, 0x1019, 0); } } @@ -3222,7 +3222,7 @@ void Klayman::stContSpitIntoPipe() { void Klayman::suRidePlatform() { _x = _attachedSprite->getX() - 20; _y = _attachedSprite->getY() + 46; - processDelta(); + updateBounds(); } void Klayman::stRidePlatform() { diff --git a/engines/neverhood/menumodule.cpp b/engines/neverhood/menumodule.cpp index 97489194ac..e22a668912 100644 --- a/engines/neverhood/menumodule.cpp +++ b/engines/neverhood/menumodule.cpp @@ -166,41 +166,41 @@ MainMenuButton::MainMenuButton(NeverhoodEngine *vm, Scene *parentScene, uint but _spriteResource.load2(kMainMenuButtonFileHashes[_buttonIndex]); createSurface(100, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; // TODO Move to const array switch (_buttonIndex) { case 0: - _rect.set(52, 121, 110, 156); + _collisionBounds.set(52, 121, 110, 156); break; case 1: - _rect.set(52, 192, 109, 222); + _collisionBounds.set(52, 192, 109, 222); break; case 2: - _rect.set(60, 257, 119, 286); + _collisionBounds.set(60, 257, 119, 286); break; case 3: - _rect.set(67, 326, 120, 354); + _collisionBounds.set(67, 326, 120, 354); break; case 4: - _rect.set(70, 389, 128, 416); + _collisionBounds.set(70, 389, 128, 416); break; case 5: - _rect.set(523, 113, 580, 144); + _collisionBounds.set(523, 113, 580, 144); break; case 6: - _rect.set(525, 176, 577, 206); + _collisionBounds.set(525, 176, 577, 206); break; case 7: - _rect.set(527, 384, 580, 412); + _collisionBounds.set(527, 384, 580, 412); break; case 8: - _rect.set(522, 255, 580, 289); + _collisionBounds.set(522, 255, 580, 289); break; } diff --git a/engines/neverhood/module1000.cpp b/engines/neverhood/module1000.cpp index 6a819181e1..72cf0ede77 100644 --- a/engines/neverhood/module1000.cpp +++ b/engines/neverhood/module1000.cpp @@ -618,10 +618,10 @@ AsScene1002Door::AsScene1002Door(NeverhoodEngine *vm, NRect &clipRect) _y = 239; } - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _needRefresh = true; @@ -771,10 +771,10 @@ SsCommonPressButton::SsCommonPressButton(NeverhoodEngine *vm, Scene *parentScene _spriteResource.load2(fileHash1); createSurface(surfacePriority, 40, 40); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; @@ -791,20 +791,20 @@ void SsCommonPressButton::setFileHashes(uint32 fileHash1, uint32 fileHash2) { _fileHashes[1] = fileHash2; if (_status == 2) { _spriteResource.load2(fileHash2); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; _needRefresh = true; StaticSprite::update(); } else { _spriteResource.load2(fileHash1); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; _needRefresh = true; @@ -817,10 +817,10 @@ void SsCommonPressButton::update() { if (_status == 1) { _status = 2; _spriteResource.load2(_fileHashes[1]); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; _needRefresh = true; @@ -829,10 +829,10 @@ void SsCommonPressButton::update() { } else if (_status == 2) { _status = 3; _spriteResource.load2(_fileHashes[0]); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; _needRefresh = true; diff --git a/engines/neverhood/module1100.cpp b/engines/neverhood/module1100.cpp index 6bf61408b7..e746be7184 100644 --- a/engines/neverhood/module1100.cpp +++ b/engines/neverhood/module1100.cpp @@ -267,10 +267,10 @@ static const uint32 kSsScene1105SymbolDieFileHashes[] = { 0x10098414 }; -SsScene1105Button::SsScene1105Button(NeverhoodEngine *vm, Scene *parentScene, uint32 fileHash, NRect &rect) +SsScene1105Button::SsScene1105Button(NeverhoodEngine *vm, Scene *parentScene, uint32 fileHash, NRect &collisionBounds) : StaticSprite(vm, fileHash, 200), _parentScene(parentScene), _countdown(0) { - _rect = rect; + _collisionBounds = collisionBounds; SetMessageHandler(&SsScene1105Button::handleMessage); SetUpdateHandler(&SsScene1105Button::update); setVisible(false); @@ -306,8 +306,8 @@ SsScene1105Symbol::SsScene1105Symbol(NeverhoodEngine *vm, uint32 fileHash, int16 _x = x; _y = y; - _drawRect.x = -(_spriteResource.getDimensions().width / 2); - _drawRect.y = -(_spriteResource.getDimensions().height / 2); + _drawOffset.x = -(_spriteResource.getDimensions().width / 2); + _drawOffset.y = -(_spriteResource.getDimensions().height / 2); StaticSprite::update(); } @@ -339,8 +339,8 @@ uint32 SsScene1105SymbolDie::handleMessage(int messageNum, const MessageParam &p void SsScene1105SymbolDie::loadSymbolSprite() { load(kSsScene1105SymbolDieFileHashes[getSubVar(VA_CURR_DICE_NUMBERS, _index)], true, false); - _drawRect.x = -(_spriteResource.getDimensions().width / 2); - _drawRect.y = -(_spriteResource.getDimensions().height / 2); + _drawOffset.x = -(_spriteResource.getDimensions().width / 2); + _drawOffset.y = -(_spriteResource.getDimensions().height / 2); StaticSprite::update(); } @@ -406,13 +406,13 @@ SsScene1105OpenButton::SsScene1105OpenButton(NeverhoodEngine *vm, Scene *parentS createSurface(400, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; - _deltaRect = _drawRect; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; + _collisionBoundsOffset = _drawOffset; _needRefresh = true; - processDelta(); + updateBounds(); setVisible(false); loadSound(0, 0x44045140); SetUpdateHandler(&SsScene1105OpenButton::update); diff --git a/engines/neverhood/module1100.h b/engines/neverhood/module1100.h index 98d1ae6311..126d14996d 100644 --- a/engines/neverhood/module1100.h +++ b/engines/neverhood/module1100.h @@ -43,7 +43,7 @@ protected: class SsScene1105Button : public StaticSprite { public: - SsScene1105Button(NeverhoodEngine *vm, Scene *parentScene, uint32 fileHash, NRect &rect); + SsScene1105Button(NeverhoodEngine *vm, Scene *parentScene, uint32 fileHash, NRect &collisionBounds); protected: Scene *_parentScene; int _countdown; diff --git a/engines/neverhood/module1200.cpp b/engines/neverhood/module1200.cpp index 768e7819b0..bf4f1dff41 100644 --- a/engines/neverhood/module1200.cpp +++ b/engines/neverhood/module1200.cpp @@ -172,18 +172,18 @@ SsScene1201Tnt::SsScene1201Tnt(NeverhoodEngine *vm, uint32 elemIndex, uint32 poi _spriteResource.load2(kScene1201TntFileHashList1[elemIndex]); _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; } else { _spriteResource.load2(kScene1201TntFileHashList2[elemIndex]); _x = x; _y = y; - _drawRect.x = -(_spriteResource.getDimensions().width / 2); - _drawRect.y = -_spriteResource.getDimensions().height; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = -(_spriteResource.getDimensions().width / 2); + _drawOffset.y = -_spriteResource.getDimensions().height; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; } createSurface(50, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); diff --git a/engines/neverhood/module1300.cpp b/engines/neverhood/module1300.cpp index ab63c2961f..b623af0791 100644 --- a/engines/neverhood/module1300.cpp +++ b/engines/neverhood/module1300.cpp @@ -1165,7 +1165,7 @@ void AsScene1307Key::suRemoveKey() { if (_pointIndex < kAsScene1307KeyPointsCount) { _x += kAsScene1307KeyPoints[_pointIndex].x; _y += kAsScene1307KeyPoints[_pointIndex].y; - processDelta(); + updateBounds(); _pointIndex++; } else { SetSpriteUpdate(NULL); @@ -1176,7 +1176,7 @@ void AsScene1307Key::suInsertKey() { if (_pointIndex < kAsScene1307KeyPointsCount) { _x -= kAsScene1307KeyPoints[kAsScene1307KeyPointsCount - _pointIndex - 1].x; _y -= kAsScene1307KeyPoints[kAsScene1307KeyPointsCount - _pointIndex - 1].y; - processDelta(); + updateBounds(); _pointIndex++; if (_pointIndex == 7) playSound(0); @@ -1191,7 +1191,7 @@ void AsScene1307Key::suMoveKey() { _frameIndex += kAsScene1307KeyFrameIndices[_pointIndex]; _x = _prevX + (_deltaX * _frameIndex) / kAsScene1307KeyDivValue; _y = _prevY + (_deltaY * _frameIndex) / kAsScene1307KeyDivValue; - processDelta(); + updateBounds(); _pointIndex++; } else { NPoint pt = (*_pointList)[getSubVar(VA_CURR_KEY_SLOT_NUMBERS, _index)]; diff --git a/engines/neverhood/module1400.cpp b/engines/neverhood/module1400.cpp index 7373172083..cedb283e0b 100644 --- a/engines/neverhood/module1400.cpp +++ b/engines/neverhood/module1400.cpp @@ -252,7 +252,7 @@ uint32 AsScene1401Mouse::handleMessage(int messageNum, const MessageParam ¶m void AsScene1401Mouse::suSuckedIn() { AnimatedSprite::updateDeltaXY(); - if (_rect.y1 <= 150) { + if (_collisionBounds.y1 <= 150) { playSound(0, 0x0E32247F); stopAnimation(); SetSpriteUpdate(NULL); @@ -289,7 +289,7 @@ uint32 AsScene1401Cheese::handleMessage(int messageNum, const MessageParam ¶ void AsScene1401Cheese::suSuckedIn() { AnimatedSprite::updateDeltaXY(); - if (_rect.y1 <= 150) { + if (_collisionBounds.y1 <= 150) { playSound(0, 0x18020439); stopAnimation(); SetSpriteUpdate(NULL); @@ -522,7 +522,7 @@ void AsCommonProjector::suMoving() { setGlobalVar(V_PROJECTOR_SLOT, 0); } } - Sprite::processDelta(); + Sprite::updateBounds(); } void AsCommonProjector::moveProjector() { @@ -558,7 +558,7 @@ void AsCommonProjector::moveProjector() { void AsCommonProjector::stSuckedIn() { AnimatedSprite::updateDeltaXY(); - if (_rect.y1 <= 150) { + if (_collisionBounds.y1 <= 150) { sendMessage(_asPipe, 0x483A, 0); stopAnimation(); SetMessageHandler(&Sprite::handleMessage); @@ -691,12 +691,12 @@ Scene1401::Scene1401(NeverhoodEngine *vm, Module *parentModule, int which) if (getGlobalVar(V_PROJECTOR_SLOT) == 6) { sendEntityMessage(_klayman, 0x1014, _asProjector); _klayman->setX(_asProjector->getX() + 100); - _klayman->processDelta(); + _klayman->updateBounds(); setMessageList(0x004B6670); } else if (getGlobalVar(V_PROJECTOR_SLOT) == 0) { sendEntityMessage(_klayman, 0x1014, _asProjector); _klayman->setX(_asProjector->getX() - 100); - _klayman->processDelta(); + _klayman->updateBounds(); setMessageList(0x004B6670); } _asProjector->setClipRect(_sprite3->getDrawRect().x, _sprite2->getDrawRect().y, 640, 480); @@ -917,12 +917,12 @@ Scene1402::Scene1402(NeverhoodEngine *vm, Module *parentModule, int which) if (getGlobalVar(V_PROJECTOR_SLOT) == 4) { sendEntityMessage(_klayman, 0x1014, _asProjector); _klayman->setX(_asProjector->getX() + 100); - _klayman->processDelta(); + _klayman->updateBounds(); setMessageList(0x004B0BD0); } else if (getGlobalVar(V_PROJECTOR_SLOT) == 0) { sendEntityMessage(_klayman, 0x1014, _asProjector); _klayman->setX(_asProjector->getX() - 100); - _klayman->processDelta(); + _klayman->updateBounds(); setMessageList(0x004B0BD0); } _asProjector->setClipRect(_ssBridgePart1->getDrawRect().x, 0, _ssBridgePart2->getDrawRect().x, _ssBridgePart3->getDrawRect().y2()); @@ -1118,7 +1118,7 @@ void AsScene1407Mouse::suWalkTo() { sendMessage(this, 0x1019, 0); } else { _x += xdelta; - processDelta(); + updateBounds(); } } @@ -1339,7 +1339,7 @@ Scene1403::Scene1403(NeverhoodEngine *vm, Module *parentModule, int which) if (getGlobalVar(V_PROJECTOR_SLOT) == 4) { sendEntityMessage(_klayman, 0x1014, _asProjector); _klayman->setX(_asProjector->getX() + 100); - _klayman->processDelta(); + _klayman->updateBounds(); setMessageList(0x004B1F70); } _asProjector->setClipRect(0, 0, 640, _class401_2->getDrawRect().y2()); @@ -1457,7 +1457,7 @@ Scene1404::Scene1404(NeverhoodEngine *vm, Module *parentModule, int which) if (getGlobalVar(V_PROJECTOR_SLOT) == 0) { sendEntityMessage(_klayman, 0x1014, _asProjector); _klayman->setX(_asProjector->getX() - 100); - _klayman->processDelta(); + _klayman->updateBounds(); setMessageList(0x004B8CB8); } _asProjector->setClipRect(_sprite1->getDrawRect().x, 0, 640, 480); diff --git a/engines/neverhood/module1700.cpp b/engines/neverhood/module1700.cpp index 7df162c15e..f6dea96161 100644 --- a/engines/neverhood/module1700.cpp +++ b/engines/neverhood/module1700.cpp @@ -157,12 +157,12 @@ SsScene1705Tape::SsScene1705Tape(NeverhoodEngine *vm, Scene *parentScene, uint32 setVisible(false); SetMessageHandler(NULL); } - _deltaRect = _drawRect; - _deltaRect.x -= 4; - _deltaRect.y -= 8; - _deltaRect.width += 8; - _deltaRect.height += 16; - Sprite::processDelta(); + _collisionBoundsOffset = _drawOffset; + _collisionBoundsOffset.x -= 4; + _collisionBoundsOffset.y -= 8; + _collisionBoundsOffset.width += 8; + _collisionBoundsOffset.height += 16; + Sprite::updateBounds(); } uint32 SsScene1705Tape::handleMessage(int messageNum, const MessageParam ¶m, Entity *sender) { diff --git a/engines/neverhood/module1900.cpp b/engines/neverhood/module1900.cpp index 0a02d85876..fb98c2e29a 100644 --- a/engines/neverhood/module1900.cpp +++ b/engines/neverhood/module1900.cpp @@ -219,8 +219,8 @@ AsScene1907Symbol::AsScene1907Symbol(NeverhoodEngine *vm, Scene1907 *parentScene startAnimation(kAsScene1907SymbolFileHashes[_elementIndex], 0, -1); _newStickFrameIndex = 0; } - _deltaRect.set(0, 0, 80, 80); - Sprite::processDelta(); + _collisionBoundsOffset.set(0, 0, 80, 80); + Sprite::updateBounds(); SetUpdateHandler(&AnimatedSprite::update); SetMessageHandler(&AsScene1907Symbol::handleMessage); @@ -413,7 +413,7 @@ void AsScene1907Symbol::cbFallOffHitGroundEvent() { SetUpdateHandler(&AnimatedSprite::update); SetMessageHandler(&AsScene1907Symbol::handleMessage); SetSpriteUpdate(NULL); - processDelta(); + updateBounds(); playSound(2); } @@ -458,11 +458,11 @@ SsScene1907UpDownButton::SsScene1907UpDownButton(NeverhoodEngine *vm, Scene1907 _spriteResource.load2(0x64516424); createSurface(1400, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); setVisible(false); - _drawRect.set(0, 0, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); - _deltaRect = _drawRect; + _drawOffset.set(0, 0, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); + _collisionBoundsOffset = _drawOffset; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; - processDelta(); + updateBounds(); _needRefresh = true; loadSound(0, 0x44061000); SetUpdateHandler(&SsScene1907UpDownButton::update); @@ -500,13 +500,13 @@ uint32 SsScene1907UpDownButton::handleMessage(int messageNum, const MessageParam void SsScene1907UpDownButton::setToUpPosition() { _y = _spriteResource.getPosition().y; - Sprite::processDelta(); + Sprite::updateBounds(); StaticSprite::update(); } void SsScene1907UpDownButton::setToDownPosition() { _y = _spriteResource.getPosition().y + 174; - Sprite::processDelta(); + Sprite::updateBounds(); StaticSprite::update(); } diff --git a/engines/neverhood/module2200.cpp b/engines/neverhood/module2200.cpp index b3798d2db9..b746d51cb3 100644 --- a/engines/neverhood/module2200.cpp +++ b/engines/neverhood/module2200.cpp @@ -490,10 +490,10 @@ SsScene2201PuzzleCube::SsScene2201PuzzleCube(NeverhoodEngine *vm, uint32 positio _spriteResource.load2(kSsScene2201PuzzleCubeFileHashes[cubeIndex]); createSurface(100, 16, 16); - _drawRect.x = -(_spriteResource.getDimensions().width / 2); - _drawRect.y = -(_spriteResource.getDimensions().height / 2); - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = -(_spriteResource.getDimensions().width / 2); + _drawOffset.y = -(_spriteResource.getDimensions().height / 2); + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _x = kSsScene2201PuzzleCubePoints[positionIndex].x; _y = kSsScene2201PuzzleCubePoints[positionIndex].y; _needRefresh = true; @@ -683,14 +683,14 @@ SsScene2202PuzzleTile::SsScene2202PuzzleTile(NeverhoodEngine *vm, Scene *parentS } else { createSurface(500, 128, 128); } - _drawRect.x = -(_spriteResource.getDimensions().width / 2); - _drawRect.y = -(_spriteResource.getDimensions().height / 2); - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; - _deltaRect = _drawRect; + _drawOffset.x = -(_spriteResource.getDimensions().width / 2); + _drawOffset.y = -(_spriteResource.getDimensions().height / 2); + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; + _collisionBoundsOffset = _drawOffset; _x = kSsScene2202PuzzleTilePoints[_tileIndex].x; _y = kSsScene2202PuzzleTilePoints[_tileIndex].y; - processDelta(); + updateBounds(); _needRefresh = true; StaticSprite::update(); loadSound(0, 0x40958621); @@ -750,7 +750,7 @@ void SsScene2202PuzzleTile::suMoveTileX() { stopMoving(); } - processDelta(); + updateBounds(); } @@ -785,17 +785,17 @@ void SsScene2202PuzzleTile::suMoveTileY() { stopMoving(); } - processDelta(); + updateBounds(); } void SsScene2202PuzzleTile::moveTile(int16 newTileIndex) { _spriteResource.load2(kSsScene2202PuzzleTileFileHashes1[_value]); - _drawRect.x = -(_spriteResource.getDimensions().width / 2); - _drawRect.y = -(_spriteResource.getDimensions().height / 2); - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = -(_spriteResource.getDimensions().width / 2); + _drawOffset.y = -(_spriteResource.getDimensions().height / 2); + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _needRefresh = true; setSubVar(VA_CUBE_POSITIONS, _tileIndex, (uint32)-1); @@ -873,10 +873,10 @@ void SsScene2202PuzzleTile::moveTile(int16 newTileIndex) { void SsScene2202PuzzleTile::stopMoving() { _spriteResource.load2(kSsScene2202PuzzleTileFileHashes2[_value]); - _drawRect.x = -(_spriteResource.getDimensions().width / 2); - _drawRect.y = -(_spriteResource.getDimensions().height / 2); - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = -(_spriteResource.getDimensions().width / 2); + _drawOffset.y = -(_spriteResource.getDimensions().height / 2); + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _needRefresh = true; SetSpriteUpdate(NULL); _isMoving = false; @@ -1225,10 +1225,10 @@ SsScene2205DoorFrame::SsScene2205DoorFrame(NeverhoodEngine *vm) SetMessageHandler(&SsScene2205DoorFrame::handleMessage); _spriteResource.load2(getGlobalVar(V_LIGHTS_ON) ? 0x24306227 : 0xD90032A0); createSurface(1100, 45, 206); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; _needRefresh = true; @@ -1240,10 +1240,10 @@ uint32 SsScene2205DoorFrame::handleMessage(int messageNum, const MessageParam &p switch (messageNum) { case 0x2000: _spriteResource.load2(getGlobalVar(V_LIGHTS_ON) ? 0x24306227 : 0xD90032A0); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; _needRefresh = true; @@ -1483,8 +1483,8 @@ SsScene2206TestTube::SsScene2206TestTube(NeverhoodEngine *vm, Scene *parentScene } else { SetMessageHandler(&SsScene2206TestTube::handleMessage); } - _deltaRect = _drawRect; - processDelta(); + _collisionBoundsOffset = _drawOffset; + updateBounds(); } uint32 SsScene2206TestTube::handleMessage(int messageNum, const MessageParam ¶m, Entity *sender) { @@ -1749,7 +1749,7 @@ void AsScene2207Elevator::update() { void AsScene2207Elevator::suSetPosition() { _x = (*_pointArray)[_pointIndex].x; _y = (*_pointArray)[_pointIndex].y - 60; - processDelta(); + updateBounds(); } uint32 AsScene2207Elevator::handleMessage(int messageNum, const MessageParam ¶m, Entity *sender) { diff --git a/engines/neverhood/module2500.cpp b/engines/neverhood/module2500.cpp index f67d1a6910..bb9e10be5f 100644 --- a/engines/neverhood/module2500.cpp +++ b/engines/neverhood/module2500.cpp @@ -487,14 +487,14 @@ SsScene2504Button::SsScene2504Button(NeverhoodEngine *vm) _spriteResource.load2(0x070220D9); createSurface(400, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; - _deltaRect = _drawRect; - processDelta(); + _collisionBoundsOffset = _drawOffset; + updateBounds(); _needRefresh = true; setVisible(false); loadSound(0, 0x4600204C); diff --git a/engines/neverhood/module2600.cpp b/engines/neverhood/module2600.cpp index 37e4406205..7008a905f4 100644 --- a/engines/neverhood/module2600.cpp +++ b/engines/neverhood/module2600.cpp @@ -213,11 +213,11 @@ SsScene2609Button::SsScene2609Button(NeverhoodEngine *vm, Scene *parentScene) if (!getGlobalVar(V_WATER_RUNNING)) setVisible(false); - _drawRect.set(0, 0, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); - _deltaRect = _drawRect; + _drawOffset.set(0, 0, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); + _collisionBoundsOffset = _drawOffset; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; - processDelta(); + updateBounds(); _needRefresh = true; loadSound(0, 0x10267160); diff --git a/engines/neverhood/module2700.cpp b/engines/neverhood/module2700.cpp index b0983dee98..c5524fa75a 100644 --- a/engines/neverhood/module2700.cpp +++ b/engines/neverhood/module2700.cpp @@ -514,7 +514,7 @@ SsCommonTrackShadowBackground::SsCommonTrackShadowBackground(NeverhoodEngine *vm createSurface(0, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; - _drawRect.set(0, 0, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); + _drawOffset.set(0, 0, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); _needRefresh = true; StaticSprite::update(); } diff --git a/engines/neverhood/module2800.cpp b/engines/neverhood/module2800.cpp index 8712cc3f26..7c895e970b 100644 --- a/engines/neverhood/module2800.cpp +++ b/engines/neverhood/module2800.cpp @@ -1226,7 +1226,7 @@ uint32 Scene2803Small::handleMessage(int messageNum, const MessageParam ¶m, NPoint pt = _dataResource.getPoint(0x0D84A1AD); _klayman->setX(pt.x); _klayman->setY(pt.y); - _klayman->processDelta(); + _klayman->updateBounds(); klaymanFloor(); _klayman->setClipRect(517, 401, 536, 480); setMessageList(0x004B6198); @@ -1240,7 +1240,7 @@ uint32 Scene2803Small::handleMessage(int messageNum, const MessageParam ¶m, _klayman->setClipRect(0, 0, 560, 315); _klayman->setX(560); _klayman->setY(315); - _klayman->processDelta(); + _klayman->updateBounds(); klaymanSlope(); setMessageList(0x004B61A0); } else if (param.asInteger() == 0x002CAA68) { @@ -1373,14 +1373,14 @@ SsScene2804RedButton::SsScene2804RedButton(NeverhoodEngine *vm, Scene2804 *paren else _spriteResource.load2(0x11814A21); createSurface(400, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; - _deltaRect = _drawRect; - processDelta(); + _collisionBoundsOffset = _drawOffset; + updateBounds(); setVisible(false); _needRefresh = true; SetUpdateHandler(&SsScene2804RedButton::update); @@ -1416,10 +1416,10 @@ SsScene2804LightCoil::SsScene2804LightCoil(NeverhoodEngine *vm) _spriteResource.load2(0x8889B008); createSurface(400, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; setVisible(false); @@ -1450,10 +1450,10 @@ SsScene2804LightTarget::SsScene2804LightTarget(NeverhoodEngine *vm) _spriteResource.load2(0x06092132); createSurface(400, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; setVisible(false); @@ -1484,10 +1484,10 @@ SsScene2804Flash::SsScene2804Flash(NeverhoodEngine *vm) _spriteResource.load2(0x211003A0); createSurface(400, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; setVisible(false); @@ -1507,10 +1507,10 @@ SsScene2804BeamCoilBody::SsScene2804BeamCoilBody(NeverhoodEngine *vm) _spriteResource.load2(0x9A816000); createSurface(400, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; setVisible(false); @@ -1656,14 +1656,14 @@ SsScene2804CrystalButton::SsScene2804CrystalButton(NeverhoodEngine *vm, Scene280 _spriteResource.load2(kSsScene2804CrystalButtonFileHashes2[crystalIndex]); createSurface(400, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; - _deltaRect = _drawRect; - processDelta(); + _collisionBoundsOffset = _drawOffset; + updateBounds(); setVisible(false); loadSound(0, 0x44045140); _needRefresh = true; @@ -2262,14 +2262,14 @@ SsScene2808Dispenser::SsScene2808Dispenser(NeverhoodEngine *vm, Scene *parentSce _spriteResource.load2(kClass428FileHashes[testTubeSetNum * 3 + testTubeIndex]); createSurface(1500, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; - _deltaRect = _drawRect; - processDelta(); + _collisionBoundsOffset = _drawOffset; + updateBounds(); SetUpdateHandler(&SsScene2808Dispenser::update); SetMessageHandler(&SsScene2808Dispenser::handleMessage); setVisible(false); diff --git a/engines/neverhood/module2900.cpp b/engines/neverhood/module2900.cpp index 7dc8a9cb95..7abab125d8 100644 --- a/engines/neverhood/module2900.cpp +++ b/engines/neverhood/module2900.cpp @@ -256,16 +256,16 @@ SsScene2901LocationButton::SsScene2901LocationButton(NeverhoodEngine *vm, Scene _spriteResource.load2(kSsScene2901LocationButtonFileHashes[which * 6 + index]); createSurface(800, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; - _rect.x1 = kSsScene2901LocationButtonPoints[_index].x - 25; - _rect.y1 = kSsScene2901LocationButtonPoints[_index].y - 25; - _rect.x2 = kSsScene2901LocationButtonPoints[_index].x + 25; - _rect.y2 = kSsScene2901LocationButtonPoints[_index].y + 25; + _collisionBounds.x1 = kSsScene2901LocationButtonPoints[_index].x - 25; + _collisionBounds.y1 = kSsScene2901LocationButtonPoints[_index].y - 25; + _collisionBounds.x2 = kSsScene2901LocationButtonPoints[_index].x + 25; + _collisionBounds.y2 = kSsScene2901LocationButtonPoints[_index].y + 25; setVisible(false); _needRefresh = true; loadSound(0, 0x440430C0); @@ -301,10 +301,10 @@ SsScene2901LocationButtonLight::SsScene2901LocationButtonLight(NeverhoodEngine * _spriteResource.load2(kSsScene2901LocationButtonLightFileHashes1[which * 6 + index]); createSurface(900, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; setVisible(false); @@ -328,10 +328,10 @@ SsScene2901BrokenButton::SsScene2901BrokenButton(NeverhoodEngine *vm, int which) _spriteResource.load2(kSsScene2901BrokenButtonFileHashes[which]); createSurface(900, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; _needRefresh = true; @@ -343,16 +343,16 @@ SsScene2901BigButton::SsScene2901BigButton(NeverhoodEngine *vm, Scene *parentSce _spriteResource.load2(kSsScene2901BigButtonFileHashes[which]); createSurface(400, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; - _rect.x1 = 62; - _rect.y1 = 94; - _rect.x2 = 322; - _rect.y2 = 350; + _collisionBounds.x1 = 62; + _collisionBounds.y1 = 94; + _collisionBounds.x2 = 322; + _collisionBounds.y2 = 350; setVisible(false); _needRefresh = true; loadSound(0, 0xF3D420C8); diff --git a/engines/neverhood/module3000.cpp b/engines/neverhood/module3000.cpp index 7695248c4b..8005c625f0 100644 --- a/engines/neverhood/module3000.cpp +++ b/engines/neverhood/module3000.cpp @@ -475,16 +475,16 @@ SsScene3009FireCannonButton::SsScene3009FireCannonButton(NeverhoodEngine *vm, Sc createSurface(400, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; - _deltaRect.x = 0; - _deltaRect.y = 0; - _deltaRect.width = _spriteResource.getDimensions().width; - _deltaRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; + _collisionBoundsOffset.x = 0; + _collisionBoundsOffset.y = 0; + _collisionBoundsOffset.width = _spriteResource.getDimensions().width; + _collisionBoundsOffset.height = _spriteResource.getDimensions().height; setVisible(false); - processDelta(); + updateBounds(); _needRefresh = true; SetUpdateHandler(&SsScene3009FireCannonButton::update); SetMessageHandler(&SsScene3009FireCannonButton::handleMessage); @@ -521,10 +521,10 @@ SsScene3009SymbolEdges::SsScene3009SymbolEdges(NeverhoodEngine *vm, int index) createSurface(600, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; _needRefresh = true; if (getGlobalVar(V_ROBOT_HIT)) { hide(); @@ -573,10 +573,10 @@ SsScene3009TargetLine::SsScene3009TargetLine(NeverhoodEngine *vm, int index) createSurface(600, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; setVisible(false); _needRefresh = true; } @@ -595,12 +595,12 @@ SsScene3009SymbolArrow::SsScene3009SymbolArrow(NeverhoodEngine *vm, Sprite *asSy createSurface(1200, 33, 31); _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = 33; - _drawRect.height = 31; - _deltaRect = _drawRect; - processDelta(); + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = 33; + _drawOffset.height = 31; + _collisionBoundsOffset = _drawOffset; + updateBounds(); _needRefresh = true; SetUpdateHandler(&SsScene3009SymbolArrow::update); SetMessageHandler(&SsScene3009SymbolArrow::handleMessage); @@ -617,10 +617,10 @@ void SsScene3009SymbolArrow::update() { if (_countdown != 0 && (--_countdown == 0)) { _spriteResource.load2(kSsScene3009SymbolArrowFileHashes2[_index]); _needRefresh = true; - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; } } @@ -632,10 +632,10 @@ uint32 SsScene3009SymbolArrow::handleMessage(int messageNum, const MessageParam _countdown = 2; _spriteResource.load2(kSsScene3009SymbolArrowFileHashes1[_index]); _needRefresh = true; - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; playSound(0); sendMessage(_asSymbol, 0x2005, _incrDecr); } @@ -1155,12 +1155,12 @@ void SsScene3010DeadBoltButton::setSprite(uint32 fileHash) { _spriteResource.load(fileHash); _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; - _deltaRect = _drawRect; - processDelta(); + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; + _collisionBoundsOffset = _drawOffset; + updateBounds(); _needRefresh = true; StaticSprite::update(); } @@ -1430,13 +1430,13 @@ SsScene3011Button::SsScene3011Button(NeverhoodEngine *vm, Scene *parentScene, bo createSurface(400, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height); _x = _spriteResource.getPosition().x; _y = _spriteResource.getPosition().y; - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; - _deltaRect = _drawRect; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; + _collisionBoundsOffset = _drawOffset; setVisible(false); - processDelta(); + updateBounds(); _needRefresh = true; SetUpdateHandler(&SsScene3011Button::update); SetMessageHandler(&SsScene3011Button::handleMessage); diff --git a/engines/neverhood/mouse.cpp b/engines/neverhood/mouse.cpp index 105d170fce..632f56fb74 100644 --- a/engines/neverhood/mouse.cpp +++ b/engines/neverhood/mouse.cpp @@ -74,12 +74,12 @@ void Mouse::init(uint32 fileHash) { createSurface(2000, 32, 32); SetUpdateHandler(&Mouse::update); SetMessageHandler(&Mouse::handleMessage); - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = 32; - _drawRect.height = 32; - _deltaRect = _drawRect; - processDelta(); + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = 32; + _drawOffset.height = 32; + _collisionBoundsOffset = _drawOffset; + updateBounds(); _needRefresh = true; CursorMan.showMouse(false); } @@ -155,7 +155,7 @@ uint32 Mouse::handleMessage(int messageNum, const MessageParam ¶m, Entity *s _x = param.asPoint().x; _y = param.asPoint().y; updateCursorNum(); - processDelta(); + updateBounds(); break; } return messageResult; @@ -167,24 +167,24 @@ void Mouse::updateCursor() { return; if (_doDeltaX) { - _surface->getDrawRect().x = filterX(_x - _drawRect.width - _drawRect.x + 1); + _surface->getDrawRect().x = filterX(_x - _drawOffset.width - _drawOffset.x + 1); } else { - _surface->getDrawRect().x = filterX(_x + _drawRect.x); + _surface->getDrawRect().x = filterX(_x + _drawOffset.x); } if (_doDeltaY) { - _surface->getDrawRect().y = filterY(_y - _drawRect.height - _drawRect.y + 1); + _surface->getDrawRect().y = filterY(_y - _drawOffset.height - _drawOffset.y + 1); } else { - _surface->getDrawRect().y = filterY(_y + _drawRect.y); + _surface->getDrawRect().y = filterY(_y + _drawOffset.y); } if (_needRefresh) { _needRefresh = false; - _drawRect = _mouseCursorResource.getRect(); + _drawOffset = _mouseCursorResource.getRect(); _surface->drawMouseCursorResource(_mouseCursorResource, _frameNum / 2); Graphics::Surface *cursorSurface = _surface->getSurface(); CursorMan.replaceCursor((const byte*)cursorSurface->pixels, - cursorSurface->w, cursorSurface->h, -_drawRect.x, -_drawRect.y, 0); + cursorSurface->w, cursorSurface->h, -_drawOffset.x, -_drawOffset.y, 0); } } diff --git a/engines/neverhood/sprite.cpp b/engines/neverhood/sprite.cpp index f81be07dff..fb45b8a7be 100644 --- a/engines/neverhood/sprite.cpp +++ b/engines/neverhood/sprite.cpp @@ -38,20 +38,20 @@ Sprite::~Sprite() { delete _surface; } -void Sprite::processDelta() { +void Sprite::updateBounds() { if (_doDeltaX) { - _rect.x1 = _x - _deltaRect.x - _deltaRect.width + 1; - _rect.x2 = _x - _deltaRect.x; + _collisionBounds.x1 = _x - _collisionBoundsOffset.x - _collisionBoundsOffset.width + 1; + _collisionBounds.x2 = _x - _collisionBoundsOffset.x; } else { - _rect.x1 = _x + _deltaRect.x; - _rect.x2 = _x + _deltaRect.x + _deltaRect.width - 1; + _collisionBounds.x1 = _x + _collisionBoundsOffset.x; + _collisionBounds.x2 = _x + _collisionBoundsOffset.x + _collisionBoundsOffset.width - 1; } if (_doDeltaY) { - _rect.y1 = _y - _deltaRect.y - _deltaRect.height + 1; - _rect.y2 = _y - _deltaRect.y; + _collisionBounds.y1 = _y - _collisionBoundsOffset.y - _collisionBoundsOffset.height + 1; + _collisionBounds.y2 = _y - _collisionBoundsOffset.y; } else { - _rect.y1 = _y + _deltaRect.y; - _rect.y2 = _y + _deltaRect.y + _deltaRect.height - 1; + _collisionBounds.y1 = _y + _collisionBoundsOffset.y; + _collisionBounds.y2 = _y + _collisionBoundsOffset.y + _collisionBoundsOffset.height - 1; } } @@ -66,11 +66,11 @@ void Sprite::setDoDeltaY(int type) { } bool Sprite::isPointInside(int16 x, int16 y) { - return x >= _rect.x1 && x <= _rect.x2 && y >= _rect.y1 && y <= _rect.y2; + return x >= _collisionBounds.x1 && x <= _collisionBounds.x2 && y >= _collisionBounds.y1 && y <= _collisionBounds.y2; } bool Sprite::checkCollision(NRect &rect) { - return (_rect.x1 < rect.x2) && (rect.x1 < _rect.x2) && (_rect.y1 < rect.y2) && (rect.y1 < _rect.y2); + return (_collisionBounds.x1 < rect.x2) && (rect.x1 < _collisionBounds.x2) && (_collisionBounds.y1 < rect.y2) && (rect.y1 < _collisionBounds.y2); } uint32 Sprite::handleMessage(int messageNum, const MessageParam ¶m, Entity *sender) { @@ -147,10 +147,10 @@ void StaticSprite::init(uint32 fileHash, int surfacePriority, int16 x, int16 y, _x = x == kDefPosition ? _spriteResource.getPosition().x : x; _y = y == kDefPosition ? _spriteResource.getPosition().y : y; - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = width; - _drawRect.height = height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = width; + _drawOffset.height = height; _needRefresh = true; @@ -164,19 +164,19 @@ void StaticSprite::update() { return; if (_doDeltaX) { - _surface->getDrawRect().x = filterX(_x - _drawRect.x - _drawRect.width + 1); + _surface->getDrawRect().x = filterX(_x - _drawOffset.x - _drawOffset.width + 1); } else { - _surface->getDrawRect().x = filterX(_x + _drawRect.x); + _surface->getDrawRect().x = filterX(_x + _drawOffset.x); } if (_doDeltaY) { - _surface->getDrawRect().y = filterY(_y - _drawRect.y - _drawRect.height + 1); + _surface->getDrawRect().y = filterY(_y - _drawOffset.y - _drawOffset.height + 1); } else { - _surface->getDrawRect().y = filterY(_y + _drawRect.y); + _surface->getDrawRect().y = filterY(_y + _drawOffset.y); } if (_needRefresh) { - _surface->drawSpriteResourceEx(_spriteResource, _doDeltaX, _doDeltaY, _drawRect.width, _drawRect.height); + _surface->drawSpriteResourceEx(_spriteResource, _doDeltaX, _doDeltaY, _drawOffset.width, _drawOffset.height); _needRefresh = false; } @@ -187,10 +187,10 @@ void StaticSprite::load(uint32 fileHash, bool dimensions, bool position) { _spriteResource.load2(fileHash); if (dimensions) { - _drawRect.x = 0; - _drawRect.y = 0; - _drawRect.width = _spriteResource.getDimensions().width; - _drawRect.height = _spriteResource.getDimensions().height; + _drawOffset.x = 0; + _drawOffset.y = 0; + _drawOffset.width = _spriteResource.getDimensions().width; + _drawOffset.height = _spriteResource.getDimensions().height; } if (position) { @@ -261,7 +261,7 @@ void AnimatedSprite::updateDeltaXY() { } _deltaX = 0; _deltaY = 0; - processDelta(); + updateBounds(); } void AnimatedSprite::setRepl(byte oldColor, byte newColor) { @@ -370,19 +370,19 @@ void AnimatedSprite::updatePosition() { return; if (_doDeltaX) { - _surface->getDrawRect().x = filterX(_x - _drawRect.x - _drawRect.width + 1); + _surface->getDrawRect().x = filterX(_x - _drawOffset.x - _drawOffset.width + 1); } else { - _surface->getDrawRect().x = filterX(_x + _drawRect.x); + _surface->getDrawRect().x = filterX(_x + _drawOffset.x); } if (_doDeltaY) { - _surface->getDrawRect().y = filterY(_y - _drawRect.y - _drawRect.height + 1); + _surface->getDrawRect().y = filterY(_y - _drawOffset.y - _drawOffset.height + 1); } else { - _surface->getDrawRect().y = filterY(_y + _drawRect.y); + _surface->getDrawRect().y = filterY(_y + _drawOffset.y); } if (_needRefresh) { - _surface->drawAnimResource(_animResource, _currFrameIndex, _doDeltaX, _doDeltaY, _drawRect.width, _drawRect.height); + _surface->drawAnimResource(_animResource, _currFrameIndex, _doDeltaX, _doDeltaY, _drawOffset.width, _drawOffset.height); _needRefresh = false; } @@ -414,12 +414,12 @@ void AnimatedSprite::updateFrameInfo() { debug(8, "AnimatedSprite::updateFrameInfo()"); const AnimFrameInfo &frameInfo = _animResource.getFrameInfo(_currFrameIndex); _frameChanged = true; - _drawRect = frameInfo.rect; + _drawOffset = frameInfo.rect; _deltaX = frameInfo.deltaX; _deltaY = frameInfo.deltaY; - _deltaRect = frameInfo.deltaRect; + _collisionBoundsOffset = frameInfo.deltaRect; _currFrameTicks = frameInfo.counter; - processDelta(); + updateBounds(); _needRefresh = true; if (frameInfo.frameHash != 0) sendMessage(this, 0x100D, frameInfo.frameHash); diff --git a/engines/neverhood/sprite.h b/engines/neverhood/sprite.h index 358a37bc57..7e07f3a412 100644 --- a/engines/neverhood/sprite.h +++ b/engines/neverhood/sprite.h @@ -42,7 +42,7 @@ public: ~Sprite(); void init() {} BaseSurface *getSurface() { return _surface; } - void processDelta(); + void updateBounds(); void setDoDeltaX(int type); void setDoDeltaY(int type); bool isPointInside(int16 x, int16 y); @@ -54,7 +54,7 @@ public: uint16 getFlags() const { return _flags; } bool isDoDeltaX() const { return _doDeltaX; } bool isDoDeltaY() const { return _doDeltaY; } - NRect& getRect() { return _rect; } + NRect& getCollisionBounds() { return _collisionBounds; } uint32 handleMessage(int messageNum, const MessageParam ¶m, Entity *sender); void loadDataResource(uint32 fileHash); int16 defFilterY(int16 y); @@ -75,13 +75,10 @@ protected: int16 _x, _y; bool _doDeltaX, _doDeltaY; bool _needRefresh; - //0000002B field_2B db ? - //0000002C field2C dd ? // unused - NDrawRect _drawRect; - NDrawRect _deltaRect; - NRect _rect; + NDrawRect _drawOffset; + NRect _collisionBounds; + NDrawRect _collisionBoundsOffset; uint16 _flags; - //0000004A field4A dw ? // seems to be unused except in ctor DataResource _dataResource; void createSurface(int surfacePriority, int16 width, int16 height); void handleSpriteUpdate() { |