diff options
Diffstat (limited to 'engines/supernova/supernova1/rooms.h')
-rw-r--r-- | engines/supernova/supernova1/rooms.h | 486 |
1 files changed, 486 insertions, 0 deletions
diff --git a/engines/supernova/supernova1/rooms.h b/engines/supernova/supernova1/rooms.h new file mode 100644 index 0000000000..c49e8356c9 --- /dev/null +++ b/engines/supernova/supernova1/rooms.h @@ -0,0 +1,486 @@ +/* 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 SUPERNOVA_ROOMS_H +#define SUPERNOVA_ROOMS_H + +#include "common/str.h" + +#include "supernova/msn_def.h" +#include "supernova/room.h" + +namespace Common { +class ReadStream; +class WriteStream; +} + +namespace Supernova { + +class GameManager1; +class SupernovaEngine; + +// Room 0 +class Intro : public Room { +public: + Intro(SupernovaEngine *vm, GameManager1 *gm); + virtual void onEntrance(); + +private: + bool animate(int section1, int section2, int duration); + bool animate(int section1, int section2, int duration, MessagePosition position, + StringId text); + bool animate(int section1, int section2, int section3, int section4, int duration, + MessagePosition position, StringId text); + + void titleScreen(); + void titleFadeIn(); + void cutscene(); + void leaveCutscene(); + + bool _shouldExit; + Common::String _introText; +}; + +// Spaceship +class ShipCorridor : public Room { +public: + ShipCorridor(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); +}; + +class ShipHall: public Room { +public: + ShipHall(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); +}; + +class ShipSleepCabin: public Room { +public: + ShipSleepCabin(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); + virtual void animation(); + virtual void onEntrance(); + +private: + byte _color; +}; + +class ShipCockpit : public Room { +public: + ShipCockpit(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); + virtual void animation(); + virtual void onEntrance(); + +private: + byte _color; +}; + +class ShipCabinL1: public Room { +public: + ShipCabinL1(SupernovaEngine *vm, GameManager1 *gm); +}; + +class ShipCabinL2 : public Room { +public: + ShipCabinL2(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); +}; + +class ShipCabinL3 : public Room { +public: + ShipCabinL3(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); +}; + +class ShipCabinR1 : public Room { +public: + ShipCabinR1(SupernovaEngine *vm, GameManager1 *gm); +}; + +class ShipCabinR2 : public Room { +public: + ShipCabinR2(SupernovaEngine *vm, GameManager1 *gm); +}; + +class ShipCabinR3 : public Room { +public: + ShipCabinR3(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); + virtual void onEntrance(); +}; + +class ShipCabinBathroom : public Room { +public: + ShipCabinBathroom(SupernovaEngine *vm, GameManager1 *gm); +}; + +class ShipAirlock : public Room { +public: + ShipAirlock(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); + virtual void onEntrance(); +}; + +class ShipHold : public Room { +public: + ShipHold(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); + virtual void onEntrance(); +}; + +class ShipLandingModule : public Room { +public: + ShipLandingModule(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); +}; + +class ShipGenerator : public Room { +public: + ShipGenerator(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); +}; + +class ShipOuterSpace : public Room { +public: + ShipOuterSpace(SupernovaEngine *vm, GameManager1 *gm); +}; + + +// Arsano +class ArsanoRocks : public Room { +public: + ArsanoRocks(SupernovaEngine *vm, GameManager1 *gm); + + virtual void onEntrance(); + virtual bool interact(Action verb, Object &obj1, Object &obj2); +}; + +class ArsanoCave : public Room { +public: + ArsanoCave(SupernovaEngine *vm, GameManager1 *gm); +}; + +class ArsanoMeetup : public Room { +public: + ArsanoMeetup(SupernovaEngine *vm, GameManager1 *gm); + + virtual void onEntrance(); + virtual void animation(); + virtual bool interact(Action verb, Object &obj1, Object &obj2); + +private: + byte _sign; + byte _beacon; +}; + +class ArsanoEntrance : public Room { +public: + ArsanoEntrance(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); + virtual void animation(); + +private: + StringId _dialog1[5]; + StringId _dialog2[5]; + StringId _dialog3[5]; + byte _eyewitness; +}; + +class ArsanoRemaining : public Room { +public: + ArsanoRemaining(SupernovaEngine *vm, GameManager1 *gm); + + virtual void animation(); + +private: + bool _chewing; + int _i; +}; + +class ArsanoRoger : public Room { +public: + ArsanoRoger(SupernovaEngine *vm, GameManager1 *gm); + + virtual void animation(); + virtual void onEntrance(); + virtual bool interact(Action verb, Object &obj1, Object &obj2); + +private: + StringId _dialog1[4]; + byte _eyewitness; + byte _hands; +}; + +class ArsanoGlider : public Room { +public: + ArsanoGlider(SupernovaEngine *vm, GameManager1 *gm); + + virtual void animation(); + virtual bool interact(Action verb, Object &obj1, Object &obj2); + +private: + byte _sinus; +}; + +class ArsanoMeetup2 : public Room { +public: + ArsanoMeetup2(SupernovaEngine *vm, GameManager1 *gm); + + virtual void onEntrance(); + virtual bool interact(Action verb, Object &obj1, Object &obj2); + + void shipStart(); + +private: + // TODO: change to 6, fix initialization + StringId _dialog1[2]; + StringId _dialog2[2]; + StringId _dialog3[4]; + StringId _dialog4[3]; + + // FIXME: Remove following unused bool variables? + //bool _found; + //bool _flug; +}; + +class ArsanoMeetup3 : public Room { +public: + ArsanoMeetup3(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); + +private: + StringId _dialog2[4]; + StringId _dialog3[2]; + + // TODO: Hack, to be move away and renamed when the other uses are found + StringId _dialogsX[6]; +}; + + +// Axacuss +class AxacussCell : public Room { +public: + AxacussCell(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); + virtual void animation(); + virtual void onEntrance(); +}; + +class AxacussCorridor1 : public Room { +public: + AxacussCorridor1(SupernovaEngine *vm, GameManager1 *gm); + + virtual void onEntrance(); +}; + +class AxacussCorridor2 : public Room { +public: + AxacussCorridor2(SupernovaEngine *vm, GameManager1 *gm); + + virtual void onEntrance(); +}; + +class AxacussCorridor3 : public Room { +public: + AxacussCorridor3(SupernovaEngine *vm, GameManager1 *gm); + + virtual void onEntrance(); +}; + +class AxacussCorridor4 : public Room { +public: + AxacussCorridor4(SupernovaEngine *vm, GameManager1 *gm); + + virtual void onEntrance(); + virtual void animation(); + virtual bool interact(Action verb, Object &obj1, Object &obj2); +}; + +class AxacussCorridor5 : public Room { +public: + AxacussCorridor5(SupernovaEngine *vm, GameManager1 *gm); + + virtual void onEntrance(); + virtual bool interact(Action verb, Object &obj1, Object &obj2); + +private: + void stopInteract(int sum); + bool handleMoneyDialog(); + + // TODO: Change to 6, or change struct, and fix initialization + StringId _dialog1[2]; + StringId _dialog2[2]; + StringId _dialog3[4]; + + byte _rows[6]; +}; + +class AxacussCorridor6 : public Room { +public: + AxacussCorridor6(SupernovaEngine *vm, GameManager1 *gm); + + virtual void onEntrance(); + virtual bool interact(Action verb, Object &obj1, Object &obj2); +}; + +class AxacussCorridor7 : public Room { +public: + AxacussCorridor7(SupernovaEngine *vm, GameManager1 *gm); + + virtual void onEntrance(); +}; + +class AxacussCorridor8 : public Room { +public: + AxacussCorridor8(SupernovaEngine *vm, GameManager1 *gm); + + virtual void onEntrance(); + virtual bool interact(Action verb, Object &obj1, Object &obj2); +}; + +class AxacussCorridor9 : public Room { +public: + AxacussCorridor9(SupernovaEngine *vm, GameManager1 *gm); + + virtual void onEntrance(); + virtual bool interact(Action verb, Object &obj1, Object &obj2); +}; + +class AxacussBcorridor : public Room { +public: + AxacussBcorridor(SupernovaEngine *vm, GameManager1 *gm); + + virtual void onEntrance(); + virtual bool interact(Action verb, Object &obj1, Object &obj2); +}; + +class AxacussIntersection : public Room { +public: + AxacussIntersection(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); + +private: + StringId _dialogsX[6]; +}; + +class AxacussExit : public Room { +public: + AxacussExit(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); + +private: + StringId _dialogsX[6]; +}; + +class AxacussOffice1 : public Room { +public: + AxacussOffice1(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); +}; + +class AxacussOffice2 : public Room { +public: + AxacussOffice2(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); +}; + +class AxacussOffice3 : public Room { +public: + AxacussOffice3(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); +}; + +class AxacussOffice4 : public Room { +public: + AxacussOffice4(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); +}; + +class AxacussOffice5 : public Room { +public: + AxacussOffice5(SupernovaEngine *vm, GameManager1 *gm); + + virtual void onEntrance(); + virtual bool interact(Action verb, Object &obj1, Object &obj2); +}; + +class AxacussElevator : public Room { +public: + AxacussElevator(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); +}; + +class AxacussStation : public Room { +public: + AxacussStation(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); +}; + +class AxacussSign : public Room { +public: + AxacussSign(SupernovaEngine *vm, GameManager1 *gm); + + virtual bool interact(Action verb, Object &obj1, Object &obj2); +}; + +class Outro : public Room { +public: + Outro(SupernovaEngine *vm, GameManager1 *gm); + + virtual void onEntrance(); + virtual void animation(); + +private: + void animate(int filenumber, int section1, int section2, int duration); + void animate(int filenumber, int section1, int section2, int duration, MessagePosition position, + const char *text); + void animate(int filenumber, int section1, int section2, int section3, int section4, int duration, + MessagePosition position, const char *text); + + Common::String _outroText; +}; + +} +#endif // SUPERNOVA_ROOMS_H |