File: object.h

package info (click to toggle)
flying 6.20-6
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, lenny
  • size: 752 kB
  • ctags: 1,873
  • sloc: cpp: 10,966; makefile: 189
file content (87 lines) | stat: -rw-r--r-- 2,000 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#ifndef _object_h
#define _object_h

//
// Object ist die Oberklasse der Objekte, die von sich bewegenden Objekten
// ber�hrt werden k�nnen.
//
// Funktionaltit�t:
//
//	- Verwaltung aller Objekte (durch statische Liste)
// - Identifikation der Objekte (durch spezielle ID's im member dyn_id)
// - Vorgeschriebene virtuelle Funktionen f�r die Collisionsberechnung:
//		- Real HitFromBall( Ball *b )
//						Kollisionszeitpunkt des Objektes mit Ball b bestimmen.
//		- void CollideWithBall( Ball *b )
// 					Ausf�hrung der Kollision mit �nderung der
// 					Richtungsvektorn an sich selbst und dem beteiligten Ball.
//		- void WasHit( Object *o )
//						Nach CollideWithBall wird auch der beteiligte Ball �ber
//						die stattgefundene Kollision informiert.
//

#ifndef _global_h
#	include "global.h"
#endif
#ifndef _real_h
#	include "real.h"
#endif

//
// -------------------------------------------------------------------------
//   class Object:  Oberklasse
// -------------------------------------------------------------------------
//
class Ball;		// forward-declaration, da Object einen Klassenzeiger braucht

class Object {
	public:
		Object();
		virtual ~Object();

		virtual Real	Collision();

typedef	void (Object::*ObjFun)();
		static void ForAll( ObjFun fun );

		virtual void Info();

		static Real min_time;

		virtual void Draw();

		typedef enum {
			StaticArcObj,
			StaticBallObj,
			WallObj,
			BallObj,
			HandObj,		// f�r Hockey, um von B�llen zu unterscheiden
			PocketObj,
			GoalObj,
			UnknownObj
		} ObjType;

		int	id;

	protected:
		virtual Real HitFromBall( Ball *b )	= 0;
		virtual void CollideWithBall( Ball *b ) = 0;
		virtual void WasHit(Object*);

		static int		id_count;		// aktueller Objektz�hler
		int	dyn_id;						// Id des DynObj (bei Object auf -1 gesetzt)
		static class Object *stat_queue;
		class Object *next;

		ObjType type;

private:

friend class DynObj;
friend class Ball;
friend class PBallTop;
friend class Game;
friend class Hockey;
};

#endif