/* ScummVM - Graphic Adventure Engine * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT * file distributed with this source distribution. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef TSAGE_RINGWORLD2_SCENES1_H #define TSAGE_RINGWORLD2_SCENES1_H #include "common/scummsys.h" #include "tsage/converse.h" #include "tsage/events.h" #include "tsage/core.h" #include "tsage/scenes.h" #include "tsage/globals.h" #include "tsage/sound.h" #include "tsage/ringworld2/ringworld2_logic.h" #include "tsage/ringworld2/ringworld2_speakers.h" namespace TsAGE { namespace Ringworld2 { using namespace TsAGE; class Scene1000 : public SceneExt { public: SequenceManager _sequenceManager1; SequenceManager _sequenceManager2; SpeakerGameText _gameTextSpeaker; AnimationPlayer _animationPlayer; int _animCounter; bool _forceCheckAnimationFl; public: Scene1000(); virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void remove(); virtual void signal(); virtual void dispatch(); }; class Scene1010 : public SceneExt { public: SequenceManager _sequenceManager; virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void signal(); }; class Scene1020 : public SceneExt { public: SequenceManager _sequenceManager; virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void signal(); virtual void dispatch(); }; class Scene1100 : public SceneExt { class Seeker : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class Trooper : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class Chief : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; public: int _nextStripNum, _paletteRefreshStatus; SpeakerSeeker1100 _seekerSpeaker; SpeakerQuinn1100 _quinnSpeaker; SpeakerChief1100 _chiefSpeaker; ScenePalette _palette1; NamedHotspot _background; NamedHotspot _sky; NamedHotspot _fuana1; NamedHotspot _fauna2; NamedHotspot _bouldersBlockingCave; NamedHotspot _boulders; NamedHotspot _trail; SceneActor _ship; SceneActor _cloud; SceneActor _shipFormation; SceneActor _shipFormationShadow; SceneActor _shotImpact1; SceneActor _shotImpact2; SceneActor _shotImpact3; SceneActor _shotImpact4; SceneActor _shotImpact5; SceneActor _laserShot; SceneActor _animation; // Used for cliff collapse and ship theft SceneActor _leftImpacts; SceneActor _runningGuy1; SceneActor _runningGuy2; SceneActor _runningGuy3; BackgroundSceneObject _rightLandslide; BackgroundSceneObject _purplePlant; Seeker _seeker; Trooper _trooper; Chief _chief; SequenceManager _sequenceManager1; SequenceManager _sequenceManager2; SequenceManager _sequenceManager3; Scene1100(); void synchronize(Serializer &s); virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void remove(); virtual void signal(); virtual void dispatch(); virtual void saveCharacter(int characterIndex); }; class Scene1200 : public SceneExt { enum CrawlDirection { CRAWL_EAST = 1, CRAWL_WEST = 2, CRAWL_SOUTH = 3, CRAWL_NORTH = 4 }; class LaserPanel: public ModalWindow { public: class Jumper : public SceneActorExt { public: void init(int state); virtual bool startAction(CursorType action, Event &event); }; Jumper _jumper1; Jumper _jumper2; Jumper _jumper3; LaserPanel(); virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void remove(); }; public: NamedHotspot _item1; SceneActor _actor1; LaserPanel _laserPanel; MazeUI _mazeUI; SequenceManager _sequenceManager; int _nextCrawlDirection; int _field414; int _field416; int _field418; int _field41A; bool _fixupMaze; Scene1200(); void synchronize(Serializer &s); void startCrawling(CrawlDirection dir); virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void signal(); virtual void process(Event &event); virtual void dispatch(); virtual void saveCharacter(int characterIndex); }; class Scene1337 : public SceneExt { class unkObj1337sub1: public SceneHotspot { public: SceneObject _object1; int _field34; Common::Point _field36; unkObj1337sub1(); void synchronize(Serializer &s); }; class unkObj1337_1: public SceneHotspot { public: unkObj1337sub1 _arr1[4]; unkObj1337sub1 _arr2[8]; unkObj1337sub1 _arr3[1]; unkObj1337sub1 _arr4[1]; Common::Point _fieldB94; Common::Point _fieldB98; Common::Point _fieldB9C; Common::Point _fieldBA0; int _fieldBA4; unkObj1337_1(); void synchronize(Serializer &s); }; class Action1337: public Action { public: void subD18B5(int resNum, int stripNum, int frameNum); void skipFrames(int32 skipCount); }; class Action1: public Action1337 { public: void signal(); }; class Action2: public Action1337 { public: void signal(); }; class Action3: public Action1337 { public: void signal(); }; class Action4: public Action1337 { public: void signal(); }; class Action5: public Action1337 { public: void signal(); }; class Action6: public Action1337 { public: void signal(); }; class Action7: public Action1337 { public: void signal(); }; class Action8: public Action1337 { public: void signal(); }; class Action9: public Action1337 { public: void signal(); }; class Action10: public Action1337 { public: void signal(); }; class Action11: public Action1337 { public: void signal(); }; class Action12: public Action1337 { public: void signal(); }; class Action13: public Action1337 { public: void signal(); }; public: typedef void (Scene1337::*FunctionPtrType)(); FunctionPtrType _unkFctPtr412; ASound _aSound1; ASound _aSound2; BackgroundSceneObject _background1; bool _autoplay; unkObj1337_1 _arrunkObj1337[4]; SceneItem _item1; SceneObject _object1; Action1 _action1; Action2 _action2; Action3 _action3; Action4 _action4; Action5 _action5; Action6 _action6; Action7 _action7; Action8 _action8; Action9 _action9; Action10 _action10; Action11 _action11; Action12 _action12; Action13 _action13; unkObj1337sub1 _item2; unkObj1337sub1 _item3; unkObj1337sub1 _item4; BackgroundSceneObject _background2; int _field3E24; int _field3E26; int _field3E28[100]; unkObj1337sub1 *_field3EF0; unkObj1337sub1 *_field3EF4; unkObj1337sub1 *_field3EF8; unkObj1337sub1 _item5; unkObj1337sub1 _item6; unkObj1337sub1 _item7; unkObj1337sub1 _item8; int _field423C; int _field423E; int _field4240; int _field4242; int _field4244; int _field4246; int _field4248; int _field424A; int _field424C; int _field424E; SceneObject _arrObject1[8]; SceneObject _arrObject2[8]; Scene1337(); virtual void synchronize(Serializer &s); void actionDisplay(int resNum, int lineNum, int x, int y, int arg5, int width, int textMode, int fontNum, int colFG, int colBGExt, int colFGExt); void setAnimationInfo(unkObj1337sub1 *subObj); void subC20E5(); void subC20F9(); void subC2586(); bool subC264B(int arg1); bool subC2687(int arg1); int subC26CB(int arg1, int arg2); int subC2719(int arg1); int subC274D(int arg1); int subC2781(int arg1); int subC27B5(int arg1); int subC27F9(int arg1); void subC2835(int arg1); bool subC2BF8(unkObj1337sub1 *subObj1, Common::Point pt); void subC2C2F(); void subC318B(int arg1, unkObj1337sub1 *subObj2, int arg3); int subC3257(int arg1); bool subC32B1(int arg1, int arg2); int subC331B(int arg1); bool subC3386(int arg1, int arg2); void subC33C0(unkObj1337sub1 *subObj1, unkObj1337sub1 *subObj2); void subC3456(unkObj1337sub1 *subObj1, unkObj1337sub1 *subObj2); void subC340B(unkObj1337sub1 *subObj1, unkObj1337sub1 *subObj2); void subC34A1(unkObj1337sub1 *subObj1, unkObj1337sub1 *subObj2); unkObj1337sub1 *subC34EC(int arg1); void subC358E(unkObj1337sub1 *subObj1, int arg2); int subC3E92(int arg1); void subC4A39(unkObj1337sub1 *subObj); void subC4CD2(); void subC4CEC(); void subC51A0(unkObj1337sub1 *subObj1, unkObj1337sub1 *subObj2); void displayDialog(int dialogNumb); void subPostInit(); void subCB59B(); void suggestInstructions(); void shuffleCards(); void subCCF26(); void subCD193(); void subCDB90(int arg1, Common::Point pt); void subCF31D(); void subCF979(); void subD026D(); void subD0281(); void subD02CA(); void subD183F(int arg1, int arg2); void subD18B5(int resNum, int rlbNum, int arg3); int subD18F5(); int subD1917(); int subD1940(bool flag); void subD195F(int arg1, int arg2); void subD1975(int arg1, int arg2); void subD1A48(int arg1); virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void remove(); virtual void process(Event &event); virtual void dispatch(); }; class Scene1500 : public SceneExt { public: SceneActor _starship; SceneActor _starshipShadow; SceneActor _smallShip; SceneActor _smallShipShadow; SequenceManager _sequenceManager; virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void remove(); virtual void signal(); virtual void dispatch(); }; class Scene1525 : public SceneExt { public: SequenceManager _sequenceManager; virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void signal(); }; class Scene1530 : public SceneExt { public: SpeakerQuinn _quinnSpeaker; SpeakerSeeker _seekerSpeaker; SceneActor _seeker; SceneActor _leftReactor; SceneActor _rightReactor; SequenceManager _sequenceManager; virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void signal(); virtual void dispatch(); }; class Scene1550 : public SceneExt { class Wall : public SceneActor { public: void setupWall(int frameNumber, int strip); }; class Junk : public SceneActor { public: int _junkNumber; Junk(); void synchronize(Serializer &s); virtual bool startAction(CursorType action, Event &event); }; class ShipComponent : public SceneActor { public: int _componentId; ShipComponent(); void synchronize(Serializer &s); virtual bool startAction(CursorType action, Event &event); void setupShipComponent(int componentId); }; class DishControlsWindow : public ModalWindow { class DishControl : public SceneActor { public: int _controlId; DishControl(); void synchronize(Serializer &s); virtual bool startAction(CursorType action, Event &event); }; public: byte _field20; SceneActor _areaActor; DishControl _button; DishControl _lever; virtual void remove(); virtual void setup2(int visage, int stripFrameNum, int frameNum, int posX, int posY); }; class WorkingShip : public NamedHotspot { public: virtual bool startAction(CursorType action, Event &event); }; class Wreckage : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class Companion : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class AirBag : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class Joystick : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class Gyroscope : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class DiagnosticsDisplay : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class DishTower : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class Dish : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; public: SpeakerQuinn _quinnSpeaker; SpeakerSeeker _seekerSpeaker; WorkingShip _intactHull1, _intactHull2; SceneHotspot _background; SceneActor _wreckage2; // also used for Lance of Truth landing strut SceneActor _wreckage3; SceneActor _wreckage4; SceneActor _walkway; SceneActor _dishTowerShadow; Wreckage _wreckage; Companion _companion; AirBag _airbag; Joystick _joystick; Gyroscope _gyroscope; DiagnosticsDisplay _diagnosticsDisplay; DishTower _dishTower; Dish _dish; Junk _junk[8]; Wall _wallCorner1; Wall _northWall; // Is also reused for landing strip Wall _wallCorner2; Wall _westWall; // Is also reused for left hand space Wall _eastWall; Wall _southWall; ShipComponent _shipComponents[8]; DishControlsWindow _dishControlsWindow; SequenceManager _sequenceManager1; SequenceManager _sequenceManager2; bool _dontExit; int _wallType; int _dishMode; int _sceneResourceId; int _walkRegionsId; Scene1550(); void synchronize(Serializer &s); void enterArea(); virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void signal(); virtual void process(Event &event); virtual void dispatch(); virtual void saveCharacter(int characterIndex); }; class Scene1575 : public SceneExt { class Button : public NamedHotspot { public: int _buttonId; bool _pressed; Button(); void synchronize(Serializer &s); void initButton(int buttonId); virtual void process(Event &event); virtual bool startAction(CursorType action, Event &event); }; public: int _field412; int _field414; int _field416; int _field418; int _field41A; Button _button1; Button _button2; Button _button3; Button _button4; Button _button5; Button _button6; SceneActor _actor1; SceneActor _actor2; SceneActor _actor3; SceneActor _actor4; SceneActor _actor5; SceneActor _actor6; SceneActor _actor7; SceneActor _actor8; SceneActor _actor9; SceneActor _actor10; SceneActor _actor11; SceneActor _actor12; SceneActor _actor13; SceneActor _actor14; SceneActor _actor15; SceneActor _arrActor[17]; SequenceManager _sequenceManager1; Scene1575(); void synchronize(Serializer &s); virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void remove(); virtual void signal(); virtual void process(Event &event); virtual void dispatch(); }; class Scene1580 : public SceneExt { class JoystickPlug : public NamedHotspot { public: virtual bool startAction(CursorType action, Event &event); }; class ScreenSlot : public NamedHotspot { public: virtual bool startAction(CursorType action, Event &event); }; class Joystick : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class Screen : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class StorageCompartment : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class HatchButton : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class ThrusterValve : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class Ignitor : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; public: SpeakerQuinn _quinnSpeaker; SpeakerSeeker _seekerSpeaker; JoystickPlug _joystickPlug; ScreenSlot _screenSlot; NamedHotspot _background; SceneActor _screenDisplay; SceneActor _arrActor[8]; Joystick _joystick; Screen _screen; StorageCompartment _storageCompartment; HatchButton _hatchButton; ThrusterValve _thrusterValve; Ignitor _ignitor; SequenceManager _sequenceManager; Scene1580(); void synchronize(Serializer &s); virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void signal(); }; class Scene1625 : public SceneExt { class Wire : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; public: SpeakerMiranda1625 _mirandaSpeaker; SpeakerTeal1625 _tealSpeaker; SpeakerSoldier1625 _soldierSpeaker; NamedHotspot _background; SceneActor _teal; SceneActor _tealHead; SceneActor _mirandaMouth; SceneActor _glass; SceneActor _wristRestraints; SceneActor _tealRightArm; Wire _wire; SequenceManager _sequenceManager; Scene1625(); void synchronize(Serializer &s); virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void remove(); virtual void signal(); virtual void process(Event &event); }; class Scene1700 : public SceneExt { class RimTransport : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class Companion : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class NorthExit : public SceneExit { public: virtual void changeScene(); }; class SouthExit : public SceneExit { public: virtual void changeScene(); }; class WestExit : public SceneExit { public: virtual void changeScene(); }; public: SpeakerQuinn _quinnSpeaker; SpeakerSeeker _seekerSpeaker; NamedHotspot _surface; NamedHotspot _background; SceneActor _playerShadow; SceneActor _companionShadow; SceneActor _slabWest; SceneActor _slabEast; SceneActor _slabShadowWest; SceneActor _slabShadowEast; SceneActor _westPlatform; SceneActor _rimTransportDoor; SceneActor _ledgeHopper; SceneActor _hatch; RimTransport _rimTransport; Companion _companion; NorthExit _northExit; SouthExit _southExit; WestExit _westExit; SequenceManager _sequenceManager; bool _walkFlag; Scene1700(); void synchronize(Serializer &s); void enterArea(); virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void remove(); virtual void signal(); }; class Scene1750 : public SceneExt { class SpeedSlider : public SceneActor { public: int _incrAmount; int _xp; int _ys; int _height; int _thumbHeight; bool _mouseDown; SpeedSlider(); virtual void synchronize(Serializer &s); void setupSlider(int incrAmount, int xp, int ys, int height, int thumbHeight); void calculateSlider(); virtual void process(Event &event); virtual bool startAction(CursorType action, Event &event); }; class Button : public SceneActor { public: int _buttonId; Button(); virtual void synchronize(Serializer &s); virtual bool startAction(CursorType action, Event &event); }; public: NamedHotspot _background; NamedHotspot _redLightsDescr; NamedHotspot _greenLights; NamedHotspot _frontView; NamedHotspot _rearView; SceneActor _scannerIcon; SceneActor _redLights; SceneActor _radarSweep; SpeedSlider _speedSlider; Button _forwardButton; Button _backwardButton; Button _exitButton; SequenceManager _sequenceManager; PaletteRotation *_rotation; int _direction; int _speedCurrent; int _speed; int _speedDelta; int _rotationSegment; int _rotationSegCurrent; int _newRotation; Scene1750(); virtual void synchronize(Serializer &s); virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void remove(); virtual void signal(); virtual void process(Event &event); virtual void dispatch(); }; class Scene1800 : public SceneExt { class Background : public NamedHotspot { public: virtual bool startAction(CursorType action, Event &event); }; class Lever : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class Doors : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class PassengerDoor : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class SouthExit : public SceneExit { public: virtual void changeScene(); }; public: int _locationMode; SpeakerQuinn _quinnSpeaker; SpeakerSeeker _seekerSpeaker; NamedHotspot _elevator; NamedHotspot _elevatorContents; NamedHotspot _surface; NamedHotspot _secBackground; Background _background; SceneActor _playerShadow; SceneActor _companion; SceneActor _companionShadow; SceneActor _leftStaircase; SceneActor _rightStaircase; Lever _lever; Doors _doors; PassengerDoor _leftDoor; PassengerDoor _rightDoor; SouthExit _southExit; SequenceManager _sequenceManager; Scene1800(); void synchronize(Serializer &s); virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void signal(); virtual void saveCharacter(int characterIndex); }; class Scene1850 : public SceneExt { class Button : public NamedHotspot { public: virtual bool startAction(CursorType action, Event &event); }; class Robot : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class Door : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class DisplayScreen : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; public: int _sceneMode; int _shadeCountdown; int _shadeDirection; bool _shadeChanging; Common::Point _playerDest; int _seqNumber; ScenePalette _palette1; SpeakerQuinn _quinnSpeaker; SpeakerSeeker _seekerSpeaker; NamedHotspot _background; Button _button; SceneActor _companion; SceneActor _airbag; SceneActor _screen; SceneActor _helmet; Robot _robot; Door _leftDoor; Door _rightDoor; DisplayScreen _displayScreen; SequenceManager _sequenceManager1; SequenceManager _sequenceManager2; Scene1850(); void synchronize(Serializer &s); virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void remove(); virtual void signal(); virtual void process(Event &event); virtual void dispatch(); }; class Scene1875 : public SceneExt { class Button : public SceneActor { public: int _buttonId; bool _buttonDown; Button(); void doButtonPress(); void initButton(int buttonId); virtual Common::String getClassName() { return "Scene1875_Button"; } void synchronize(Serializer &s); virtual void process(Event &event); }; public: SpeakerQuinn _quinnSpeaker; SpeakerSeeker _seekerSpeaker; NamedHotspot _background; NamedHotspot _screen; SceneActor _map; SceneActor _rimPosition; Button _button1; Button _button2; Button _button3; Button _button4; Button _button5; SequenceManager _sequenceManager; virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void signal(); virtual void process(Event &event); }; class Scene1900 : public SceneExt { class LiftDoor : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class WestExit : public SceneExit { public: virtual void changeScene(); }; class EastExit : public SceneExit { public: virtual void changeScene(); }; public: SpeakerSeeker1900 _seekerSpeaker; NamedHotspot _background; NamedHotspot _elevator; SceneActor _companion; BackgroundSceneObject _leftDoorFrame; BackgroundSceneObject _rightDoorFrame; LiftDoor _leftDoor, _rightDoor; WestExit _westExit; EastExit _eastExit; SequenceManager _sequenceManager1; SequenceManager _sequenceManager2; virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void remove(); virtual void signal(); }; class Scene1925 : public SceneExt { class Button : public NamedHotspot { public: virtual bool startAction(CursorType action, Event &event); }; class Ladder : public NamedHotspot { public: virtual bool startAction(CursorType action, Event &event); }; class ExitUp : public SceneExit { public: virtual void changeScene(); }; class ExitDown : public SceneExit { public: virtual void changeScene(); }; class WestExit : public SceneExit { public: virtual void changeScene(); }; class EastExit : public SceneExit { public: virtual void changeScene(); }; public: NamedHotspot _background; Button _button; Ladder _ladder; SceneActor _door; ExitUp _exitUp; ExitDown _exitDown; WestExit _westExit; EastExit _eastExit; SequenceManager _sequenceManager; int _newSceneMode; int _levelResNum[5]; Scene1925(); void synchronize(Serializer &s); void changeLevel(bool upFlag); virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void remove(); virtual void signal(); }; class Scene1945 : public SceneExt { class Ice : public NamedHotspot { public: virtual bool startAction(CursorType action, Event &event); }; class Ladder : public NamedHotspot { public: virtual bool startAction(CursorType action, Event &event); }; class Gunpowder : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class ExitUp : public SceneExit { public: virtual void changeScene(); }; class CorridorExit : public SceneExit { public: virtual void changeScene(); }; public: NamedHotspot _hole; NamedHotspot _ice2; Ice _ice; Ladder _ladder; SceneActor _coveringIce; SceneActor _alcoholLamp; Gunpowder _gunpowder; ExitUp _exitUp; CorridorExit _corridorExit; SequenceManager _sequenceManager1; SequenceManager _sequenceManager2; int _nextSceneMode1; int _nextSceneMode2; CursorType _lampUsed; Scene1945(); void synchronize(Serializer &s); virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void remove(); virtual void signal(); }; class Scene1950 : public SceneExt { /* Windows */ class KeypadWindow: public ModalWindow { public: class KeypadButton : public SceneActor { public: int _buttonIndex; bool _pressed; bool _toggled; KeypadButton(); void synchronize(Serializer &s); void init(int indx); virtual void process(Event &event); virtual bool startAction(CursorType action, Event &event); }; SceneActor _areaActor; KeypadButton _buttons[16]; int _buttonIndex; KeypadWindow(); virtual void synchronize(Serializer &s); virtual void remove(); virtual void setup2(int visage, int stripFrameNum, int frameNum, int posX, int posY); virtual void setup3(int resNum, int lookLineNum, int talkLineNum, int useLineNum); }; class Keypad : public NamedHotspot { public: virtual bool startAction(CursorType action, Event &event); }; /* Actors */ class Door : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class Scrolls : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class Gem : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; class Vampire : public SceneActor { public: Common::Point _deadPosition; int _deltaX; int _deltaY; int _vampireMode; Vampire(); void synchronize(Serializer &s); virtual void signal(); virtual bool startAction(CursorType action, Event &event); }; /* Exits */ class NorthExit : public SceneExit { public: virtual void changeScene(); }; class UpExit : public SceneExit { public: virtual void changeScene(); }; class EastExit : public SceneExit { public: virtual void changeScene(); }; class DownExit : public SceneExit { public: virtual void changeScene(); }; class SouthExit : public SceneExit { public: virtual void changeScene(); }; class WestExit : public SceneExit { public: virtual void changeScene(); }; class ShaftExit : public SceneExit { public: virtual void changeScene(); }; class DoorExit : public SceneExit { public: virtual void changeScene(); }; private: void initArea(); void enterArea(); void doButtonPress(int indx); public: NamedHotspot _background; Keypad _keypad; SceneActor _southDoorway; SceneObject _northDoorway; Door _door; Scrolls _scrolls; SceneActor _containmentField; Gem _gem; SceneActor _cube; SceneActor _pulsingLights; Vampire _vampire; KeypadWindow _KeypadWindow; NorthExit _northExit; UpExit _upExit; EastExit _eastExit; DownExit _downExit; SouthExit _southExit; WestExit _westExit; ShaftExit _shaftExit; DoorExit _doorExit; SequenceManager _sequenceManager; bool _upExitStyle; bool _removeFlag; bool _vampireActive; Common::Point _vampireDestPos; int _vampireIndex; Scene1950(); void synchronize(Serializer &s); virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void remove(); virtual void signal(); virtual void process(Event &event); }; } // End of namespace Ringworld2 } // End of namespace TsAGE #endif