void NoradDelta::receiveNotification(Notification *notification, const NotificationFlags flags) { Norad::receiveNotification(notification, flags); if ((flags & kExtraCompletedFlag) != 0) { RetScanChip *retScan; Input dummy; switch (_lastExtra) { case kArriveFromSubChase: GameState.setNoradArrivedFromSub(true); GameState.setCurrentRoom(kNoRoomID); GameState.setCurrentDirection(kNoDirection); arriveAt(kNorad41, kEast); break; case kN59RobotHeadOpens: case kN60RobotHeadOpens: _privateFlags.setFlag(kNoradPrivateRobotHeadOpenFlag, true); break; case kNoradDeltaRetinalScanBad: retScan = (RetScanChip *)_vm->getCurrentBiochip(); retScan->setItemState(kNormalItem); playSpotSoundSync(kRetinalScanFailedIn, kRetinalScanFailedOut); downButton(dummy); break; case kNoradDeltaRetinalScanGood: retScan = (RetScanChip *)_vm->getCurrentBiochip(); retScan->setItemState(kNormalItem); downButton(dummy); break; case kN59RobotDisappears: case kN60RobotDisappears: recallToTSASuccess(); break; } _interruptionFilter = kFilterAllInput; } g_AIArea->checkMiddleArea(); }
void Norad::receiveNotification(Notification *notification, const NotificationFlags flags) { if (notification == &_neighborhoodNotification && (flags & kAirTimerExpiredFlag) != 0) ((PegasusEngine *)g_engine)->die(kDeathGassedInNorad); Neighborhood::receiveNotification(notification, flags); if (notification == &_noradNotification) { // Must be kDoneWithPressureDoorNotification... Input scratch; _doneWithPressureDoor = true; downButton(scratch); } }