AsScene3010DeadBolt::AsScene3010DeadBolt(NeverhoodEngine *vm, Scene *parentScene, int boltIndex, bool initUnlocked) : AnimatedSprite(vm, 1100), _parentScene(parentScene), _boltIndex(boltIndex), _soundToggle(true), _unlocked(false), _locked(false), _countdown(0) { _x = kAsScene3010DeadBoltPoints[_boltIndex].x; _y = kAsScene3010DeadBoltPoints[_boltIndex].y; if (getSubVar(VA_LOCKS_DISABLED, kScene3010ButtonNameHashes[_boltIndex])) { createSurface1(kAsScene3010DeadBoltFileHashes1[_boltIndex], 1200); startAnimation(kAsScene3010DeadBoltFileHashes1[_boltIndex], 0, -1); loadSound(0, 0x46005BC4); } else { createSurface1(kAsScene3010DeadBoltFileHashes2[_boltIndex], 1200); startAnimation(kAsScene3010DeadBoltFileHashes2[_boltIndex], 0, -1); loadSound(0, 0x420073DC); loadSound(1, 0x420073DC); } setVisible(false); stIdle(); if (initUnlocked) unlock(true); _needRefresh = true; AnimatedSprite::updatePosition(); }
AnimatedSprite::AnimatedSprite(NeverhoodEngine *vm, uint32 fileHash, int surfacePriority, int16 x, int16 y) : Sprite(vm, 1100), _animResource(vm) { init(); SetUpdateHandler(&AnimatedSprite::update); createSurface1(fileHash, surfacePriority); _x = x; _y = y; startAnimation(fileHash, 0, -1); }
AsScene2401FlowingWater::AsScene2401FlowingWater(NeverhoodEngine *vm) : AnimatedSprite(vm, 1200), _isWaterFlowing(false) { _x = 88; _y = 421; createSurface1(0x10203116, 100); setVisible(false); SetUpdateHandler(&AnimatedSprite::update); SetMessageHandler(&AsScene2401FlowingWater::handleMessage); }
AsScene1308Mouse::AsScene1308Mouse(NeverhoodEngine *vm) : AnimatedSprite(vm, 1100) { _x = 286; _y = 429; createSurface1(0xA282C472, 100); startAnimation(0xA282C472, 0, -1); SetUpdateHandler(&AnimatedSprite::update); SetMessageHandler(&AsScene1308Mouse::handleMessage); }
AsScene2401WaterFlushing::AsScene2401WaterFlushing(NeverhoodEngine *vm, int16 x, int16 y) : AnimatedSprite(vm, 1200), _countdown(0), _flushLoopCount(0) { _x = x; _y = y; createSurface1(0xB8596884, 100); setVisible(false); SetUpdateHandler(&AsScene2401WaterFlushing::update); SetMessageHandler(&AsScene2401WaterFlushing::handleMessage); }
AsScene3009VerticalIndicator::AsScene3009VerticalIndicator(NeverhoodEngine *vm, Scene3009 *parentScene, int index) : AnimatedSprite(vm, 1000), _parentScene(parentScene), _enabled(false) { _x = 300; _y = getGlobalVar(V_CANNON_RAISED) ? 52 : 266; createSurface1(0xC2463913, 1200); _needRefresh = true; updatePosition(); setVisible(false); SetUpdateHandler(&AnimatedSprite::update); SetMessageHandler(&AsScene3009VerticalIndicator::handleMessage); }
AsDiskplayerSceneKey::AsDiskplayerSceneKey(NeverhoodEngine *vm) : AnimatedSprite(vm, 1100) { createSurface1(0x100B90B4, 1200); _x = 211; _y = 195; startAnimation(0x100B90B4, 0, -1); _newStickFrameIndex = 0; _needRefresh = true; updatePosition(); setVisible(false); }
AsScene1907Symbol::AsScene1907Symbol(NeverhoodEngine *vm, Scene1907 *parentScene, int elementIndex, int positionIndex) : AnimatedSprite(vm, 1000 - positionIndex), _parentScene(parentScene), _elementIndex(elementIndex), _isMoving(false) { _plugInFailed = false; _plugInTryCount = 0; if (getGlobalVar(V_STAIRS_PUZZLE_SOLVED)) { _isPluggedIn = true; _currPositionIndex = elementIndex; if (!getGlobalVar(V_STAIRS_DOWN)) { _x = kAsScene1907SymbolPluggedInPositions[_currPositionIndex].x; _y = kAsScene1907SymbolPluggedInPositions[_currPositionIndex].y; } else { _x = kAsScene1907SymbolPluggedInDownPositions[_currPositionIndex].x; _y = kAsScene1907SymbolPluggedInDownPositions[_currPositionIndex].y; } createSurface1(kAsScene1907SymbolFileHashes[_elementIndex], 1000 + _currPositionIndex); startAnimation(kAsScene1907SymbolFileHashes[_elementIndex], -1, -1); _newStickFrameIndex = STICK_LAST_FRAME; } else { _isPluggedIn = false; _currPositionIndex = positionIndex; loadSound(0, 0x74231924); loadSound(1, 0x36691914); loadSound(2, 0x5421D806); _parentScene->setPositionFree(_currPositionIndex, false); _x = kAsScene1907SymbolGroundPositions[_currPositionIndex].x; _y = kAsScene1907SymbolGroundPositions[_currPositionIndex].y; createSurface1(kAsScene1907SymbolFileHashes[_elementIndex], 1000 + _currPositionIndex); startAnimation(kAsScene1907SymbolFileHashes[_elementIndex], 0, -1); _newStickFrameIndex = 0; } _collisionBoundsOffset.set(0, 0, 80, 80); Sprite::updateBounds(); SetUpdateHandler(&AnimatedSprite::update); SetMessageHandler(&AsScene1907Symbol::handleMessage); }
AsScene2609Water::AsScene2609Water(NeverhoodEngine *vm) : AnimatedSprite(vm, 1000) { _x = 240; _y = 420; setDoDeltaX(1); createSurface1(0x9C210C90, 1200); setClipRect(260, 260, 400, 368); _vm->_soundMan->addSound(0x08526C36, 0xDC2769B0); SetUpdateHandler(&AnimatedSprite::update); SetMessageHandler(&AsScene2609Water::handleMessage); if (getGlobalVar(V_WATER_RUNNING)) sendMessage(this, 0x2002, 0); }
AsScene1306Elevator::AsScene1306Elevator(NeverhoodEngine *vm, Scene *parentScene, AnimatedSprite *asElevatorDoor) : AnimatedSprite(vm, 1100), _parentScene(parentScene), _asElevatorDoor(asElevatorDoor), _isUp(false), _isDown(true), _countdown(0) { _x = 320; _y = 240; createSurface1(0x043B0270, 100); startAnimation(0x043B0270, 0, -1); _newStickFrameIndex = 0; loadSound(0, 0x1C100E83); loadSound(1, 0x1C08CEC5); loadSound(2, 0x5D011E87); SetMessageHandler(&AsScene1306Elevator::handleMessage); }
AsScene1907WaterHint::AsScene1907WaterHint(NeverhoodEngine *vm) : AnimatedSprite(vm, 1400) { createSurface1(0x110A1061, 1500); _x = 320; _y = 240; startAnimation(0x110A1061, 0, -1); _newStickFrameIndex = 0; setVisible(false); _needRefresh = true; AnimatedSprite::updatePosition(); SetUpdateHandler(&AsScene1907WaterHint::update); SetMessageHandler(&Sprite::handleMessage); }
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; } }
AsScene2402Door::AsScene2402Door(NeverhoodEngine *vm, Scene *parentScene, bool isOpen) : AnimatedSprite(vm, 1100), _parentScene(parentScene), _isOpen(isOpen), _countdown(0) { _x = 320; _y = 240; createSurface1(0x80495831, 100); if (_isOpen) { startAnimation(0x80495831, -1, -1); _newStickFrameIndex = STICK_LAST_FRAME; _countdown = 48; } else { stopAnimation(); setVisible(false); } SetUpdateHandler(&AsScene2402Door::update); SetMessageHandler(&AsScene2402Door::handleMessage); }
AsScene1302Bridge::AsScene1302Bridge(NeverhoodEngine *vm, Scene *parentScene) : AnimatedSprite(vm, 1100), _parentScene(parentScene) { _x = 320; _y = 240; createSurface1(0x88148150, 500); if (!getGlobalVar(V_FLYTRAP_RING_BRIDGE)) { startAnimation(0x88148150, 0, -1); _newStickFrameIndex = 0; } else { startAnimation(0x88148150, -1, -1); _newStickFrameIndex = STICK_LAST_FRAME; } loadSound(0, 0x68895082); loadSound(1, 0x689BD0C1); SetUpdateHandler(&AnimatedSprite::update); SetMessageHandler(&AsScene1302Bridge::handleMessage); }
AsScene3009Symbol::AsScene3009Symbol(NeverhoodEngine *vm, Scene3009 *parentScene, int symbolPosition) : AnimatedSprite(vm, 1100), _parentScene(parentScene), _symbolPosition(symbolPosition) { _symbolIndex = getSubVar(VA_CURR_CANNON_SYMBOLS, _symbolPosition); _x = kAsScene3009SymbolPoints[_symbolPosition].x; _y = kAsScene3009SymbolPoints[_symbolPosition].y; createSurface1(kAsScene3009SymbolFileHashes[_symbolPosition / 3], 1200); startAnimation(kAsScene3009SymbolFileHashes[_symbolPosition / 3], _symbolIndex, -1); _newStickFrameIndex = _symbolIndex; _needRefresh = true; updatePosition(); SetUpdateHandler(&AnimatedSprite::update); SetMessageHandler(&AsScene3009Symbol::handleMessage); _ssArrowPrev = _parentScene->insertSprite<SsScene3009SymbolArrow>(this, _symbolPosition * 2 + 0); _parentScene->addCollisionSprite(_ssArrowPrev); _ssArrowNext = _parentScene->insertSprite<SsScene3009SymbolArrow>(this, _symbolPosition * 2 + 1); _parentScene->addCollisionSprite(_ssArrowNext); }
AsScene3011Symbol::AsScene3011Symbol(NeverhoodEngine *vm, int symbolIndex, bool largeSymbol) : AnimatedSprite(vm, 1000), _symbolIndex(symbolIndex), _largeSymbol(largeSymbol), _isNoisy(false) { if (_largeSymbol) { _x = 310; _y = 200; createSurface1(kAsScene3011SymbolFileHashes[_symbolIndex], 1200); loadSound(0, 0x6052C60F); loadSound(1, 0x6890433B); } else { _symbolIndex = 12; _x = symbolIndex * 39 + 96; _y = 225; createSurface(1200, 41, 48); loadSound(0, 0x64428609); loadSound(1, 0x7080023B); } setVisible(false); _needRefresh = true; SetUpdateHandler(&AnimatedSprite::update); }