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 virtual 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