Initial commit
This commit is contained in:
258
engines/pegasus/neighborhood/mars/mars.h
Normal file
258
engines/pegasus/neighborhood/mars/mars.h
Normal file
@@ -0,0 +1,258 @@
|
||||
/* 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.
|
||||
*
|
||||
* Additional copyright for this file:
|
||||
* Copyright (C) 1995-1997 Presto Studios, Inc.
|
||||
*
|
||||
* 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef PEGASUS_NEIGHBORHOOD_MARS_MARS_H
|
||||
#define PEGASUS_NEIGHBORHOOD_MARS_MARS_H
|
||||
|
||||
#include "pegasus/neighborhood/neighborhood.h"
|
||||
#include "pegasus/neighborhood/mars/constants.h"
|
||||
#include "pegasus/neighborhood/mars/energybeam.h"
|
||||
#include "pegasus/neighborhood/mars/gravitoncannon.h"
|
||||
#include "pegasus/neighborhood/mars/planetmover.h"
|
||||
#include "pegasus/neighborhood/mars/reactor.h"
|
||||
#include "pegasus/neighborhood/mars/robotship.h"
|
||||
#include "pegasus/neighborhood/mars/shuttleenergymeter.h"
|
||||
#include "pegasus/neighborhood/mars/shuttlehud.h"
|
||||
#include "pegasus/neighborhood/mars/spacejunk.h"
|
||||
#include "pegasus/neighborhood/mars/tractorbeam.h"
|
||||
|
||||
namespace Pegasus {
|
||||
|
||||
class CanyonChase;
|
||||
class InventoryItem;
|
||||
class Mars;
|
||||
class TunnelPod;
|
||||
|
||||
enum MarsTimerCode {
|
||||
kMarsPodCautionDisplayed,
|
||||
kMarsPodCautionDismissed,
|
||||
kMarsCanyonChaseExited,
|
||||
kMarsCanyonChaseFaded,
|
||||
kMarsLaunchTubeReached,
|
||||
kMarsCanyonChaseFinished,
|
||||
kMarsSpaceChaseFinished // Player ran out of time...
|
||||
};
|
||||
|
||||
struct MarsTimerEvent {
|
||||
Mars *mars;
|
||||
MarsTimerCode event;
|
||||
|
||||
void fire();
|
||||
};
|
||||
|
||||
enum ShuttleWeaponSelection {
|
||||
kNoWeapon,
|
||||
kEnergyBeam,
|
||||
kGravitonCannon,
|
||||
kTractorBeam
|
||||
};
|
||||
|
||||
class Mars : public Neighborhood {
|
||||
friend class CanyonChase;
|
||||
friend class TunnelPod;
|
||||
friend struct MarsTimerEvent;
|
||||
public:
|
||||
Mars(InputHandler *, PegasusEngine *);
|
||||
~Mars() override;
|
||||
|
||||
GameInteraction *makeInteraction(const InteractionID) override;
|
||||
void flushGameState() override;
|
||||
|
||||
uint16 getDateResID() const override;
|
||||
|
||||
AirQuality getAirQuality(const RoomID) override;
|
||||
|
||||
void checkAirMask() override;
|
||||
|
||||
void showBigExplosion(const Common::Rect &, const DisplayOrder);
|
||||
void showLittleExplosion(const Common::Rect &, const DisplayOrder);
|
||||
void hitByJunk();
|
||||
void decreaseRobotShuttleEnergy(const int, Common::Point impactPoint);
|
||||
void setUpNextDropTime();
|
||||
|
||||
Common::Path getBriefingMovie() override;
|
||||
Common::Path getEnvScanMovie() override;
|
||||
uint getNumHints() override;
|
||||
Common::Path getHintMovie(uint) override;
|
||||
|
||||
void shieldOn() override;
|
||||
void shieldOff() override;
|
||||
|
||||
void checkContinuePoint(const RoomID, const DirectionConstant) override;
|
||||
|
||||
void setSoundFXLevel(const uint16) override;
|
||||
void setAmbienceLevel(const uint16) override;
|
||||
|
||||
bool canSolve() override;
|
||||
void doSolve() override;
|
||||
|
||||
bool inColorMatchingGame();
|
||||
|
||||
protected:
|
||||
enum {
|
||||
kMarsPrivatePodStorageOpenFlag,
|
||||
kMarsPrivatePodTurnLeftFlag,
|
||||
kMarsPrivatePodTurnRightFlag,
|
||||
kMarsPrivateRobotTiredOfWaitingFlag,
|
||||
kMarsPrivatePlatformZoomedInFlag,
|
||||
kMarsPrivateBombExposedFlag,
|
||||
kMarsPrivateDraggingBombFlag,
|
||||
kMarsPrivateInSpaceChaseFlag,
|
||||
kMarsPrivateGotMapChipFlag,
|
||||
kMarsPrivateGotOpticalChipFlag,
|
||||
kMarsPrivateGotShieldChipFlag,
|
||||
kNumMarsPrivateFlags
|
||||
};
|
||||
|
||||
void init() override;
|
||||
void start() override;
|
||||
void setUpAIRules() override;
|
||||
void arriveAt(const RoomID, const DirectionConstant) override;
|
||||
void takeItemFromRoom(Item *) override;
|
||||
void dropItemIntoRoom(Item *, Hotspot *) override;
|
||||
void activateHotspots() override;
|
||||
void activateOneHotspot(HotspotInfoTable::Entry &, Hotspot *) override;
|
||||
void clickInHotspot(const Input &, const Hotspot *) override;
|
||||
InputBits getInputFilter() override;
|
||||
|
||||
TimeValue getViewTime(const RoomID, const DirectionConstant) override;
|
||||
void getZoomEntry(const HotSpotID, ZoomTable::Entry &) override;
|
||||
void findSpotEntry(const RoomID, const DirectionConstant, SpotFlags, SpotTable::Entry &) override;
|
||||
CanOpenDoorReason canOpenDoor(DoorTable::Entry &) override;
|
||||
void openDoor() override;
|
||||
void closeDoorOffScreen(const RoomID, const DirectionConstant) override;
|
||||
void startDoorOpenMovie(const TimeValue, const TimeValue) override;
|
||||
void startExitMovie(const ExitTable::Entry &) override;
|
||||
int16 getStaticCompassAngle(const RoomID, const DirectionConstant) override;
|
||||
void getExitCompassMove(const ExitTable::Entry &, FaderMoveSpec &) override;
|
||||
void getExtraCompassMove(const ExtraTable::Entry &, FaderMoveSpec &) override;
|
||||
void turnTo(const DirectionConstant) override;
|
||||
void startExtraSequence(const ExtraID, const NotificationFlags, const InputBits) override;
|
||||
void receiveNotification(Notification *, const NotificationFlags) override;
|
||||
void doorOpened() override;
|
||||
void startUpFromFinishedTunnelPod();
|
||||
void setUpReactorEnergyDrain();
|
||||
Hotspot *getItemScreenSpot(Item *, DisplayElement *) override;
|
||||
void lockThawed();
|
||||
void robotTiredOfWaiting();
|
||||
|
||||
void setUpReactorLevel1();
|
||||
void setUpNextReactorLevel();
|
||||
void makeColorSequence();
|
||||
void doUndoOneGuess();
|
||||
void doReactorGuess(int32 guess);
|
||||
void bombExplodesInGame();
|
||||
void didntFindBomb();
|
||||
CanMoveForwardReason canMoveForward(ExitTable::Entry &) override;
|
||||
void cantMoveThatWay(CanMoveForwardReason) override;
|
||||
void moveForward() override;
|
||||
void bumpIntoWall() override;
|
||||
void turnLeft() override;
|
||||
void turnRight() override;
|
||||
void airStageExpired();
|
||||
void loadAmbientLoops() override;
|
||||
void checkAirlockDoors();
|
||||
void pickedUpItem(Item *item) override;
|
||||
void cantOpenDoor(CanOpenDoorReason) override;
|
||||
void launchMaze007Robot();
|
||||
void launchMaze015Robot();
|
||||
void launchMaze101Robot();
|
||||
void launchMaze104Robot();
|
||||
void launchMaze133Robot();
|
||||
void launchMaze136Robot();
|
||||
void launchMaze184Robot();
|
||||
void timerExpired(const uint32) override;
|
||||
void showRobotAtReactor();
|
||||
void spotCompleted() override;
|
||||
|
||||
void doCanyonChase(void);
|
||||
void startMarsTimer(TimeValue, TimeScale, MarsTimerCode);
|
||||
void marsTimerExpired(MarsTimerEvent &);
|
||||
void throwAwayMarsShuttle();
|
||||
void startUpFromFinishedSpaceChase();
|
||||
void startUpFromSpaceChase();
|
||||
void transportOutFromSpaceChase(bool);
|
||||
void spaceChaseClick(const Input &, const HotSpotID);
|
||||
void updateCursor(const Common::Point &, const Hotspot *) override;
|
||||
void playSpaceAmbient();
|
||||
|
||||
Common::Path getSoundSpotsName() override;
|
||||
Common::Path getNavMovieName() override;
|
||||
|
||||
Movie _extraMovie;
|
||||
NotificationCallBack _extraMovieCallBack;
|
||||
|
||||
InventoryItem *_attackingItem;
|
||||
FuseFunction _bombFuse;
|
||||
FuseFunction _noAirFuse;
|
||||
FuseFunction _utilityFuse;
|
||||
FlagsArray<byte, kNumMarsPrivateFlags> _privateFlags;
|
||||
uint _reactorStage, _nextGuess;
|
||||
int32 _currentGuess[3];
|
||||
ReactorGuess _guessObject;
|
||||
Picture _undoPict;
|
||||
ReactorHistory _guessHistory;
|
||||
ReactorChoiceHighlight _choiceHighlight;
|
||||
|
||||
Picture _shuttleInterface1;
|
||||
Picture _shuttleInterface2;
|
||||
Picture _shuttleInterface3;
|
||||
Picture _shuttleInterface4;
|
||||
Movie _canyonChaseMovie;
|
||||
Sound _musicLoop;
|
||||
SoundFader _musicFader;
|
||||
|
||||
MarsTimerEvent _marsEvent;
|
||||
|
||||
Movie _leftShuttleMovie;
|
||||
Movie _rightShuttleMovie;
|
||||
Movie _lowerLeftShuttleMovie;
|
||||
Movie _lowerRightShuttleMovie;
|
||||
Movie _centerShuttleMovie;
|
||||
Movie _upperLeftShuttleMovie;
|
||||
Movie _upperRightShuttleMovie;
|
||||
Movie _leftDamageShuttleMovie;
|
||||
Movie _rightDamageShuttleMovie;
|
||||
ShuttleEnergyMeter _shuttleEnergyMeter;
|
||||
Movie _planetMovie;
|
||||
PlanetMover _planetMover;
|
||||
RobotShip _robotShip;
|
||||
ShuttleHUD _shuttleHUD;
|
||||
TractorBeam _tractorBeam;
|
||||
SpaceJunk _junk;
|
||||
EnergyBeam _energyBeam;
|
||||
GravitonCannon _gravitonCannon;
|
||||
Hotspot _energyChoiceSpot;
|
||||
Hotspot _gravitonChoiceSpot;
|
||||
Hotspot _tractorChoiceSpot;
|
||||
Hotspot _shuttleViewSpot;
|
||||
Hotspot _shuttleTransportSpot;
|
||||
ShuttleWeaponSelection _weaponSelection;
|
||||
ScalingMovie _explosions;
|
||||
NotificationCallBack _explosionCallBack;
|
||||
};
|
||||
|
||||
} // End of namespace Pegasus
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user