void AsScene1307Key::stInsertKey() { _pointIndex = 0; sendMessage(_parentScene, 0x1022, kAsScene1307KeySurfacePriorities[getSubVar(VA_CURR_KEY_SLOT_NUMBERS, _keyIndex) % 4]); setClipRect(_clipRects[getSubVar(VA_CURR_KEY_SLOT_NUMBERS, _keyIndex) % 4]); _newStickFrameIndex = STICK_LAST_FRAME; SetSpriteUpdate(&AsScene1307Key::suInsertKey); }
void AsScene1307Key::stRemoveKey() { const uint32 *fileHashes = kAsScene1307KeyResourceLists[_keyIndex]; _pointIndex = 0; startAnimation(fileHashes[0], 0, -1); playSound(1); SetSpriteUpdate(&AsScene1307Key::suRemoveKey); }
uint32 SsScene1302Fence::handleMessage(int messageNum, const MessageParam ¶m, Entity *sender) { uint32 messageResult = Sprite::handleMessage(messageNum, param, sender); switch (messageNum) { case 0x4808: playSound(0); SetMessageHandler(NULL); SetSpriteUpdate(&SsScene1302Fence::suMoveDown); break; case 0x4809: playSound(1); SetMessageHandler(NULL); SetSpriteUpdate(&SsScene1302Fence::suMoveUp); break; } return messageResult; }
void AsScene3009HorizontalIndicator::suMoveLeft() { _x -= 6; if (_x < 92) { SetSpriteUpdate(NULL); _x = 92; } }
void AsScene3009HorizontalIndicator::suMoveRight() { _x += 6; if (_x > 533) { SetSpriteUpdate(NULL); _x = 533; } }
void SsScene1302Fence::suMoveDown() { if (_y < _firstY + 152) _y += 8; else { SetMessageHandler(&SsScene1302Fence::handleMessage); SetSpriteUpdate(NULL); } }
void AsScene1907Symbol::moveDown() { startAnimation(kAsScene1907SymbolFileHashes[_elementIndex], -1, -1); stopAnimation(); SetMessageHandler(&AsScene1907Symbol::handleMessage); SetSpriteUpdate(&AsScene1907Symbol::suMoveDown); _yIncr = 4; _isMoving = true; }
void KmScene2401::stContSpitIntoPipe() { _canSpitPipe = true; _acceptInput = true; startAnimationByHash(0x1808B150, 0x16401CA6, 0); SetUpdateHandler(&Klaymen::update); SetMessageHandler(&KmScene2401::hmSpit); SetSpriteUpdate(NULL); }
void SsScene1302Fence::suMoveUp() { if (_y > _firstY) _y -= 8; else { SetMessageHandler(&SsScene1302Fence::handleMessage); SetSpriteUpdate(NULL); } }
void KmScene2101::stHitByDoor() { _busyStatus = 1; _acceptInput = false; startAnimation(0x35AA8059, 0, -1); SetUpdateHandler(&Klaymen::update); SetMessageHandler(&KmScene2101::hmHitByDoor); SetSpriteUpdate(&AnimatedSprite::updateDeltaXY); playSound(0, 0x402E82D4); }
void AsScene1907Symbol::stPlugIn() { playSound(0); _currPositionIndex = _newPositionIndex; stopAnimation(); SetMessageHandler(&AsScene1907Symbol::handleMessage); SetSpriteUpdate(NULL); if (_elementIndex == 8) sendMessage(_parentScene, 0x2001, 0); }
void AsScene1907Symbol::suTryToPlugIn() { _currStep++; _x -= _deltaX; _y -= _deltaY; if (_currStep == 16) { _x -= _smallDeltaX; _y -= _smallDeltaY; SetSpriteUpdate(NULL); } }
void AsScene1307Key::suRemoveKey() { if (_pointIndex < kAsScene1307KeyPointsCount) { _x += kAsScene1307KeyPoints[_pointIndex].x; _y += kAsScene1307KeyPoints[_pointIndex].y; updateBounds(); _pointIndex++; } else { SetSpriteUpdate(NULL); } }
void KmScene1305::stCrashDown() { playSound(0, 0x41648271); _busyStatus = 1; _acceptInput = false; startAnimationByHash(0x000BAB02, 0x88003000, 0); SetUpdateHandler(&Klaymen::update); SetSpriteUpdate(NULL); SetMessageHandler(&Klaymen::hmLowLevelAnimation); NextState(&KmScene1305::stCrashDownFinished); }
void AsScene1907Symbol::suMoveDown() { _y += _yIncr; if (_yIncr < 11) _yIncr++; if (_y >= kAsScene1907SymbolPluggedInDownPositions[_elementIndex].y) { _y = kAsScene1907SymbolPluggedInDownPositions[_elementIndex].y; _isMoving = false; SetSpriteUpdate(NULL); } }
AsScene1303Balloon::AsScene1303Balloon(NeverhoodEngine *vm, Scene *parentScene) : AnimatedSprite(vm, 1100), _parentScene(parentScene) { createSurface(200, 128, 315); _x = 289; _y = 390; startAnimation(0x800278D2, 0, -1); SetUpdateHandler(&AnimatedSprite::update); SetMessageHandler(&AsScene1303Balloon::handleMessage); SetSpriteUpdate(&AnimatedSprite::updateDeltaXY); }
AsScene2401WaterSpit::AsScene2401WaterSpit(NeverhoodEngine *vm) : AnimatedSprite(vm, 1200) { _x = 240; _y = 447; createSurface(100, 146, 74); setVisible(false); SetUpdateHandler(&AnimatedSprite::update); SetMessageHandler(&AsScene2401WaterSpit::handleMessage); SetSpriteUpdate(&AnimatedSprite::updateDeltaXY); }
void KmScene2401::spitIntoPipe() { _contSpitPipe = false; _spitDestPipeIndex = _spitContDestPipeIndex; _canSpitPipe = false; _acceptInput = false; startAnimation(0x1B08B553, 0, -1); SetUpdateHandler(&Klaymen::update); SetMessageHandler(&KmScene2401::hmSpit); SetSpriteUpdate(NULL); NextState(&KmScene2401::stContSpitIntoPipe); }
SsScene1302Fence::SsScene1302Fence(NeverhoodEngine *vm) : StaticSprite(vm, 0x11122122, 200) { _firstY = _y; if (getGlobalVar(V_FLYTRAP_RING_FENCE)) _y += 152; loadSound(0, 0x7A00400C); loadSound(1, 0x78184098); SetUpdateHandler(&SsScene1302Fence::update); SetMessageHandler(&SsScene1302Fence::handleMessage); SetSpriteUpdate(NULL); }
void AsScene1907Symbol::cbFallOffHitGroundEvent() { _currPositionIndex = _newPositionIndex; if (_plugInTryCount > 0) _plugInTryCount--; startAnimation(kAsScene1907SymbolFileHashes[_elementIndex], 0, -1); _newStickFrameIndex = 0; SetUpdateHandler(&AnimatedSprite::update); SetMessageHandler(&AsScene1907Symbol::handleMessage); SetSpriteUpdate(NULL); updateBounds(); playSound(2); }
void AsScene1307Key::suInsertKey() { if (_pointIndex < kAsScene1307KeyPointsCount) { _x -= kAsScene1307KeyPoints[kAsScene1307KeyPointsCount - _pointIndex - 1].x; _y -= kAsScene1307KeyPoints[kAsScene1307KeyPointsCount - _pointIndex - 1].y; updateBounds(); _pointIndex++; if (_pointIndex == 7) playSound(0); } else { SetSpriteUpdate(NULL); sendMessage(_parentScene, 0x2002, 0); } }
AsScene3009HorizontalIndicator::AsScene3009HorizontalIndicator(NeverhoodEngine *vm, Scene3009 *parentScene, uint32 cannonTargetStatus) : AnimatedSprite(vm, 1000), _parentScene(parentScene), _enabled(false) { _x = getGlobalVar(V_CANNON_TURNED) ? 533 : 92; _y = 150; createSurface1(0xC0C12954, 1200); _needRefresh = true; updatePosition(); setVisible(false); SetUpdateHandler(&AnimatedSprite::update); SetMessageHandler(&AsScene3009HorizontalIndicator::handleMessage); if (cannonTargetStatus == kCTSRightRobotNoTarget || cannonTargetStatus == kCTSRightRobotIsTarget || cannonTargetStatus == kCTSRightNoRobot) { SetSpriteUpdate(&AsScene3009HorizontalIndicator::suMoveRight); _x = 280; } }
void AsScene1907Symbol::fallOff(int newPositionIndex, int fallOffDelay) { _isPluggedIn = false; _newPositionIndex = newPositionIndex; _fallOffDelay = fallOffDelay; _parentScene->setPositionFree(_newPositionIndex, false); _x = kAsScene1907SymbolPluggedInPositions[_currPositionIndex].x; _y = kAsScene1907SymbolPluggedInPositions[_currPositionIndex].y; _someX = _x; _someY = _y; startAnimation(kAsScene1907SymbolFileHashes[_elementIndex], -1, 0); _playBackwards = true; _newStickFrameIndex = STICK_LAST_FRAME; _currStep = 0; _yAccel = 1; SetUpdateHandler(&AsScene1907Symbol::update); SetMessageHandler(&AsScene1907Symbol::handleMessage); SetSpriteUpdate(&AsScene1907Symbol::suFallOff); }
void AsScene1907Symbol::stFallOffHitGround() { playSound(1); sendMessage(_parentScene, 0x1022, 1000 + _newPositionIndex); Entity::_priority = 1000 - _newPositionIndex; _parentScene->removeCollisionSprite(this); _parentScene->addCollisionSprite(this); SetSpriteUpdate(&AsScene1907Symbol::suFallOffHitGround); NextState(&AsScene1907Symbol::cbFallOffHitGroundEvent); _newStickFrameIndex = 0; _currStep = 0; _yAccel = 30; _deltaX = (_x - kAsScene1907SymbolGroundPositions[_newPositionIndex].x) / 15; _xBreak = _deltaX * 15; _smallDeltaX = _x - kAsScene1907SymbolGroundPositions[_newPositionIndex].x - _xBreak; _someY = 0; if (kAsScene1907SymbolGroundHitPositions[_currPositionIndex].y > kAsScene1907SymbolGroundPositions[_newPositionIndex].y) _someY = kAsScene1907SymbolGroundHitPositions[_currPositionIndex].y - kAsScene1907SymbolGroundPositions[_newPositionIndex].y; }
void KmScene2401::stTrySpitIntoPipe() { if (_readyToSpit) { _contSpitPipe = true; _spitContDestPipeIndex = _spitPipeIndex; if (_canSpitPipe) spitIntoPipe(); } else if (!stStartAction(AnimationCallback(&KmScene2401::stTrySpitIntoPipe))) { _busyStatus = 2; _acceptInput = true; _spitDestPipeIndex = _spitPipeIndex; _readyToSpit = true; _canSpitPipe = false; _contSpitPipe = false; startAnimation(0x1808B150, 0, -1); SetUpdateHandler(&Klaymen::update); SetMessageHandler(&KmScene2401::hmSpit); SetSpriteUpdate(NULL); } }
void AsScene1907Symbol::suMoveUp() { _y -= _yIncr; if (getGlobalVar(V_WALL_BROKEN)) { if (_y - (9 + (_elementIndex > 5 ? 31 : 0)) < kAsScene1907SymbolPluggedInPositions[_elementIndex].y) _yIncr--; else _yIncr++; } else _yIncr = 2; if (_yIncr > 9) _yIncr = 9; else if (_yIncr < 1) _yIncr = 1; if (_y < kAsScene1907SymbolPluggedInPositions[_elementIndex].y) { _y = kAsScene1907SymbolPluggedInPositions[_elementIndex].y; _isMoving = false; SetSpriteUpdate(NULL); } }
void AsScene1307Key::stMoveKey() { NPoint pt = (*_pointList)[getSubVar(VA_CURR_KEY_SLOT_NUMBERS, _keyIndex)]; int16 newX = pt.x + kAsScene1307KeyXDelta; int16 newY = pt.y + kAsScene1307KeyYDelta; sendMessage(_parentScene, 0x1022, 1000); setClipRect(0, 0, 640, 480); _prevX = _x; _prevY = _y; if (newX == _x && newY == _y) { stInsertKey(); } else { const uint32 *fileHashes = kAsScene1307KeyResourceLists[_keyIndex]; _pointIndex = 0; _frameIndex = 0; _deltaX = newX - _x; _deltaY = newY - _y; startAnimation(fileHashes[0], 0, -1); SetSpriteUpdate(&AsScene1307Key::suMoveKey); } }
void AsScene1907Symbol::tryToPlugIn() { _isPluggedIn = true; _plugInTryCount++; _newPositionIndex = _parentScene->getNextPosition(); _parentScene->setPositionFree(_currPositionIndex, true); sendMessage(_parentScene, 0x1022, 1100 + _newPositionIndex); startAnimation(kAsScene1907SymbolFileHashes[_elementIndex], 0, -1); SetUpdateHandler(&AsScene1907Symbol::update); SetMessageHandler(&AsScene1907Symbol::hmTryToPlugIn); SetSpriteUpdate(&AsScene1907Symbol::suTryToPlugIn); _currStep = 0; _deltaX = (_x - kAsScene1907SymbolPluggedInPositions[_newPositionIndex].x) / 16; _smallDeltaX = _x - _deltaX * 16 - kAsScene1907SymbolPluggedInPositions[_newPositionIndex].x; _deltaY = (_y - kAsScene1907SymbolPluggedInPositions[_newPositionIndex].y) / 16; _smallDeltaY = _y - _deltaY * 16 - kAsScene1907SymbolPluggedInPositions[_newPositionIndex].y; if (_elementIndex == _newPositionIndex) { NextState(&AsScene1907Symbol::stPlugIn); } else { _plugInFailed = true; NextState(&AsScene1907Symbol::stPlugInFail); } }
void AsScene3009HorizontalIndicator::stMoveRight() { _x = 330; SetSpriteUpdate(&AsScene3009HorizontalIndicator::suMoveRight); }
void AsScene3009HorizontalIndicator::stMoveLeft() { _x = 533; SetSpriteUpdate(&AsScene3009HorizontalIndicator::suMoveLeft); }