aboutsummaryrefslogtreecommitdiff
path: root/engines/pegasus/neighborhood/neighborhood.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/pegasus/neighborhood/neighborhood.h')
-rw-r--r--engines/pegasus/neighborhood/neighborhood.h45
1 files changed, 42 insertions, 3 deletions
diff --git a/engines/pegasus/neighborhood/neighborhood.h b/engines/pegasus/neighborhood/neighborhood.h
index fcfc833a52..5d3e75bf3a 100644
--- a/engines/pegasus/neighborhood/neighborhood.h
+++ b/engines/pegasus/neighborhood/neighborhood.h
@@ -29,10 +29,13 @@
#include "common/queue.h"
#include "common/str.h"
+#include "pegasus/fader.h"
#include "pegasus/hotspot.h"
#include "pegasus/input.h"
+#include "pegasus/movie.h"
#include "pegasus/notification.h"
#include "pegasus/sound.h"
+#include "pegasus/timers.h"
#include "pegasus/util.h"
#include "pegasus/neighborhood/door.h"
#include "pegasus/neighborhood/exit.h"
@@ -83,9 +86,24 @@ struct tQueueRequest {
bool operator==(const tQueueRequest &arg1, const tQueueRequest &arg2);
bool operator!=(const tQueueRequest &arg1, const tQueueRequest &arg2);
+class Neighborhood;
+
+class StriderCallBack : public TimeBaseCallBack {
+public:
+ StriderCallBack(Neighborhood *);
+ virtual ~StriderCallBack() {}
+
+protected:
+ virtual void callBack();
+
+ Neighborhood *_neighborhood;
+};
+
typedef Common::Queue<tQueueRequest> NeighborhoodActionQueue;
class Neighborhood : public IDObject, public NotificationReceiver, public InputHandler {
+friend class StriderCallBack;
+
public:
Neighborhood(InputHandler *nextHandler, PegasusEngine *vm, const Common::String &resName, tNeighborhoodID id);
virtual ~Neighborhood();
@@ -131,19 +149,30 @@ public:
virtual void shieldOn() {}
virtual void shieldOff() {}
+ virtual void scheduleNavCallBack(tNotificationFlags);
+
protected:
+ PegasusEngine *_vm;
+ Common::String _resName;
+
virtual void receiveNotification(Notification *, const tNotificationFlags);
virtual void createNeighborhoodSpots();
virtual void loadSoundSpots();
+ // Nav movie sequences.
+ virtual void checkStriding();
+ virtual void keepStriding(ExitTable::Entry &);
+ virtual void stopStriding();
+ virtual bool stillMoveForward();
+ virtual void scheduleStridingCallBack(const TimeValue, tNotificationFlags flags);
+
+ // Action queue stuff
void popActionQueue();
void serviceActionQueue();
void requestAction(const tQueueRequestType, const tExtraID, const TimeValue, const TimeValue, const tInputBits, const tNotificationFlags);
- PegasusEngine *_vm;
- Common::String _resName;
-
+ // Navigation Data
DoorTable _doorTable;
ExitTable _exitTable;
ExtraTable _extraTable;
@@ -152,6 +181,16 @@ protected:
TurnTable _turnTable;
ViewTable _viewTable;
ZoomTable _zoomTable;
+ virtual uint16 getStaticCompassAngle(const tRoomID, const tDirectionConstant dir);
+ virtual void getExitCompassMove(const ExitTable::Entry &, FaderMoveSpec &);
+
+ // Graphics
+ Movie _navMovie;
+
+ // Callbacks
+ Notification _neighborhoodNotification;
+ NotificationCallBack _navMovieCallBack;
+ StriderCallBack _stridingCallBack;
tAlternateID _currentAlternate;