home *** CD-ROM | disk | FTP | other *** search
/ C++ Games Programming / CPPGAMES.ISO / thx / include / director.h < prev    next >
C/C++ Source or Header  |  1995-05-08  |  3KB  |  93 lines

  1. // ----------- director.h
  2.  
  3. #ifndef DIRECTOR_H
  4. #define DIRECTOR_H
  5.  
  6. #include <typeinfo.h>
  7. #include "keyfold.h"
  8. #include "kdfold.h"
  9. #include "timefold.h"
  10. #include "msgfold.h"
  11. #include "mcfold.h"
  12. #include "mmfold.h"
  13. #include "jsfold.h"
  14. #include "netfold.h"
  15. #include "hand.h"
  16.  
  17. // --- director navigation classes (cannot be instantiated)
  18. class NextDirector  { NextDirector()  { } };
  19. class PrevDirector  { PrevDirector()  { } };
  20. class FirstDirector { FirstDirector() { } };
  21. class LastDirector  { LastDirector()  { } };
  22. class StopDirector  { StopDirector()  { } };
  23.  
  24. class Director : public Hand  {
  25.   void set_keydownmode(int md);
  26.   void add_keystroke_cue(Hand*,callback,int);
  27.   void del_keystroke_cue(Hand*,callback,int);
  28.  
  29.   void add_keydown_cue(Hand*,callback,int);
  30.   void del_keydown_cue(Hand*,callback,int);
  31.  
  32.   void add_timer_cue(Hand*,callback,int);
  33.   void del_timer_cue(Hand*,callback,int);
  34.  
  35.   void add_message_cue(Hand*,callback,int);
  36.   void del_message_cue(Hand*,callback,int);
  37.   void delete_hand(Hand*);
  38.   void submit_message(int,int,int);
  39.  
  40.   void add_mouseclick_cue(Hand*,callback,int);
  41.   void del_mouseclick_cue(Hand*,callback,int);
  42.  
  43.   void add_mousemove_cue(Hand*,callback);
  44.   void del_mousemove_cue(Hand*,callback);
  45.  
  46.   void add_joystickbutton_cue(Hand*,callback,int);
  47.   void del_joystickbutton_cue(Hand*,callback,int);
  48.  
  49.   void add_joystickmove_cue(Hand*,callback);
  50.   void del_joystickmove_cue(Hand*,callback);
  51.  
  52.   void add_netpack_cue(Hand*,callback,int);
  53.   void del_netpack_cue(Hand*,callback,int);
  54.   void post_netpacket(p);
  55.  
  56.   KeystrokeFolder keyinfo;    // director's key subscriptions
  57.   HotkeyFolder kdowninfo;     // "hotkey" subscriptions
  58.   TimerFolder timeinfo;       // timer subscriptions
  59.   MessageFolder msginfo;      // message subscriptions
  60.   MouseclickFolder mouseclickinfo;
  61.   MousemoveFolder mousemoveinfo;
  62.   JoystickFolder joystickinfo;
  63.   NetpackFolder netpackinfo;
  64.  
  65.   int downmode;               // flag for keyboard mode
  66.   int done;                   // true while director in control
  67.   const Type_info *next_director;
  68.   friend class Hand;
  69.   friend class Theatrix;
  70. protected:
  71.   Director();
  72.   virtual ~Director()             { }
  73.   virtual void take_over();
  74.   virtual void display()          { }
  75.   virtual void hide()             { }
  76.   virtual void iterate_director() { }
  77.   virtual const Type_info& get_next_director()
  78.     {
  79.       if (next_director)
  80.         return *next_director;
  81.       return typeid(StopDirector);
  82.     }
  83.   void set_next_director(const Type_info *dir)
  84.     { next_director = dir; }
  85.   int next_director_set()
  86.     { return next_director != 0; }
  87.   void quit()
  88.     { done=1; }
  89. };
  90.  
  91. #endif
  92.  
  93.