1 #ifndef _global_h
2 #	include "global.h"
3 #endif
4 
5 #ifndef _object_h
6 #	include "object.h"
7 #endif
8 #ifndef _ball_h
9 #	include "ball.h"
10 #endif
11 #ifndef _graph_h
12 #	include "graph.h"
13 #endif
14 
15 //
16 // Statik der Object-Klasse
17 //
18 Object	*Object::stat_queue = 0L;		// globale Liste der statischen Obje
19 int		Object::id_count = 0;			// aktuelle Objekt-Id
20 Real		Object::min_time = MAX_TIME;	// Initialisierung
21 
22 
23 
Object()24 Object::Object() {
25 	type   = UnknownObj;
26 	id		 = id_count++;
27 	dyn_id = -1;
28 	next	 = stat_queue;		// alle Objekte zunaechst in statische Liste
29 	stat_queue = this;
30 }
31 
~Object()32 Object::~Object() {
33 Object	*last;
34 
35 	if ( stat_queue == this )		stat_queue = next;
36 	else {
37 		last = stat_queue;		// Element aus Statik-Liste entfernen
38 		while ( last->next && last->next != this )		last = last->next;
39 		last->next = next;		// Element ausketten
40 	}
41 Object	*obj;
42 	for (obj=stat_queue; obj; obj=obj->next ) {
43 		if (obj->id>id)		obj->id--;	// Object-Ids neu nummerieren
44 	}
45 	id_count--;
46 }
47 
ForAll(ObjFun fun)48 void Object::ForAll( ObjFun fun ) {
49 Object *obj;
50 
51 	for (obj=stat_queue; obj; obj=obj->next ) 	(obj->*fun)();
52 }
53 
54 
Collision()55 Real Object::Collision()		{ return NO_HIT;	}
56 
WasHit(Object *)57 void Object::WasHit(Object*)	{ }
58 
Info()59 void Object::Info() {
60 	printf( "%02d: Static:     %08lx\n", id, (unsigned long)this );
61 }
62 
Draw()63 void Object::Draw() {
64 #if (0)
65 	switch(type) {
66 	case StaticArcObj:
67 		StaticArc	*p = this;
68 		DrawArc( p->P(), p->r, p->start, p->angle );
69 		break;
70 	case StaticBallObj:
71 		StaticBall	*p = this
72 		DrawCircle( p->P(), p->R() );
73 		break;
74 	case WallObj:
75 		Wall			*p = this;
76 		DrawLine( p->p1, p->p2 );
77 		break;
78 	case PocketObj:
79 		Pocket		*p = this;
80 #ifndef __TURBOC__
81 		XSetLineAttributes(dpy,*ga,0,LineOnOffDash,CapRound,JoinRound);
82 #endif
83 		DrawCircle( p->P(), p->R() );
84 #ifndef __TURBOC__
85 		XSetLineAttributes(dpy,*ga,0,LineSolid,CapRound,JoinRound);
86 #endif
87 		break;
88 	case UnknownObj:
89 		break;
90 	}
91 #endif
92 }
93