1 #ifndef _mover_h
2 #define _mover_h
3 
4 //
5 // Im Model 'mover' wird die Klasse BallMover definiert, die allerdings
6 // in Wirklichkeit aus den Modulen 'xmover' bzw. 'dosmover' �bernommen wird.
7 // Die darin definierten Klassen m�ssen daher folgenden Schnittstelle haben
8 //
9 // 	BallMover( const Real &r );	// Konstruktor mit Radius
10 //		~BallMover();						// Destruktor
11 //
12 //		void Init();						// Pixmaps anlegen
13 //		Real GetActRadius();				// aus Pixelgr��e zur�ckgerechneter Radius
14 //
15 //		void DrawBallAt( int x, int y, ColorId col );
16 //												// Ball setzen (und l�schen)
17 //		void MoveBallOnScreen( int oldx, int oldy, int newx, int newy, ColorId col );
18 //												// Ball bewegen von ... nach ...
19 //
20 // Die Funktionen sind virtuell sein, um Ableitungen zuzulassen !!
21 // Folgende Ableitungen existieren:
22 //		DiscMover		 - Scheibe (f�r Carrom)
23 //		ShadedBallMover - Ball mit Beleuchtungseffekt (auf XWindows)
24 //
25 //	Die Initialisierung des BallMovers geschieht aus der Game-Klasse heraus.
26 //	Die Bewegung der Objekte geschieht aus der BallState-Klasse heraus, welche
27 //	auch in diesem Modul definiert wird. Sie ist allerdings unabh�ngig von
28 //	der Hardware.
29 //
30 
31 
32 #ifndef _real_h
33 #	include "real.h"
34 #endif
35 
36 #ifndef _graph_h
37 #	include "graph.h"
38 #endif
39 
40 
41 
42 #ifndef __TURBOC__
43 #	ifndef _xmover_h
44 #		include "xmover.h"
45 #	endif
46 #else
47 #	ifndef _dosmover_h
48 #		include "dosmover.h"
49 #	endif
50 #endif
51 
52 class BallStateTop {
53 	public:
54 		BallStateTop();
55 		virtual ~BallStateTop();
56 
57 		virtual void Redraw();
58 		virtual void Show();
59 		virtual void MoveTo( const Vec2 &new_pos );
60 		virtual void Hide();
61 };
62 
63 class BallState : public BallStateTop {
64 	public:
65 		BallState( BallMover *m, ColorId col, const Vec2 &pos );
66 		virtual ~BallState();
67 
68 		virtual void Redraw();
69 		virtual void Show();
70 		virtual void MoveTo( const Vec2 &new_pos );
71 		virtual void Hide();
72 
73 	protected:
74 		int				vis;
75 		int				x,y;		// old position
76 		BallMover		*m;		// Pointer to Mover
77 		ColorId			col;
78 		int				col_x;	// Index in Ball-Farbenliste
79 
80 friend class BallMover;
81 };
82 
83 
84 class HalfBallState : public BallState {
85 	public:
86 		HalfBallState( BallMover *m, ColorId col, const Vec2 &pos );
87 		virtual ~HalfBallState();
88 
89 		virtual void Redraw();
90 		virtual void Show();
91 		virtual void MoveTo( const Vec2 &new_pos );
92 		virtual void Hide();
93 
94 	protected:
95 		HalfBallMover	*mh;		// Kopie von m - zum leichteren Zugriff
96 		RingState		st;		// Pol der Kugel
97 
98 friend class HalfBallMover;
99 #ifdef DEBUG
100 	friend class TestField;
101 #endif
102 };
103 
104 
105 #endif
106