home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / Games / flying-6.11 / object.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-06-30  |  1.9 KB  |  88 lines

  1. #ifndef _object_h
  2. #define _object_h
  3.  
  4. //
  5. // Object ist die Oberklasse der Objekte, die von sich bewegenden Objekten
  6. // berⁿhrt werden k÷nnen.
  7. //
  8. // FunktionaltitΣt:
  9. //
  10. //    - Verwaltung aller Objekte (durch statische Liste)
  11. // - Identifikation der Objekte (durch spezielle ID's im member dyn_id)
  12. // - Vorgeschriebene virtuelle Funktionen fⁿr die Collisionsberechnung:
  13. //        - Real HitFromBall( Ball *b )
  14. //                        Kollisionszeitpunkt des Objektes mit Ball b bestimmen.
  15. //        - void CollideWithBall( Ball *b )
  16. //                     Ausfⁿhrung der Kollision mit ─nderung der
  17. //                     Richtungsvektorn an sich selbst und dem beteiligten Ball.
  18. //        - void WasHit( Object *o )
  19. //                        Nach CollideWithBall wird auch der beteiligte Ball ⁿber
  20. //                        die stattgefundene Kollision informiert.
  21. //
  22.  
  23. #ifndef _global_h
  24. #    include "global.h"
  25. #endif
  26. #ifndef _real_h
  27. #    include "real.h"
  28. #endif
  29.  
  30. //
  31. // -------------------------------------------------------------------------
  32. //   class Object:  Oberklasse
  33. // -------------------------------------------------------------------------
  34. //
  35. class Ball;        // forward-declaration, da Object einen Klassenzeiger braucht
  36.  
  37. class Object {
  38.     public:
  39.         Object();
  40.         virtual ~Object();
  41.  
  42.         virtual Real    Collision();
  43.  
  44. typedef    void (Object::*ObjFun)();
  45.         static void ForAll( ObjFun fun );
  46.  
  47.         virtual void Info();
  48.  
  49.         static Real min_time;
  50.  
  51.         void Draw();
  52.  
  53.         typedef enum {
  54.             StaticArcObj,
  55.             StaticBallObj,
  56.             WallObj,
  57.             BallObj,
  58.             HandObj,        // fⁿr Hockey, um von BΣllen zu unterscheiden
  59.             PocketObj,
  60.             GoalObj,
  61.             UnknownObj
  62.         } ObjType;
  63.  
  64.         int    id;
  65.  
  66.     protected:
  67.         virtual Real HitFromBall( Ball *b )    = 0;
  68.         virtual void CollideWithBall( Ball *b ) = 0;
  69.         virtual void WasHit(Object*);
  70.  
  71.         static int        id_count;        // aktueller ObjektzΣhler
  72.         int    dyn_id;                        // Id des DynObj (bei Object auf -1 gesetzt)
  73.         static class Object *stat_queue;
  74.         class Object *next;
  75.  
  76.         ObjType type;
  77.  
  78. private:
  79.  
  80. friend class DynObj;
  81. friend class Ball;
  82. friend class PBallTop;
  83. friend class Game;
  84. friend class Hockey;
  85. };
  86.  
  87. #endif
  88.