1 /***********************************************************
2 * K O U L E S *
3 *----------------------------------------------------------*
4 * C1995 JAHUSOFT *
5 * Jan Hubicka *
6 * Dukelskych Bojovniku 1944 *
7 * 390 03 Tabor *
8 * Czech Republic *
9 * Phone: 0041-361-32613 *
10 * eMail: hubicka@limax.paru.cas.cz *
11 *----------------------------------------------------------*
12 * Copyright(c)1995,1996 by Jan Hubicka.See README for *
13 * licence details. *
14 *----------------------------------------------------------*
15 * koules.h *
16 ***********************************************************/
17 /* Changes for joystick "accelerate by deflection" *
18 * (c) 1997 by Ludvik Tesar (Ludv\'{\i}k Tesa\v{r}) *
19 ************************LT*********************************/
20
21 #ifndef __KOULE_INCLUDED___
22 #define __KOULE_INCLUDED___
23 #include <stdio.h>
24 #include <string.h>
25 #include <stdlib.h>
26 #include <unistd.h>
27 #include <math.h>
28 #include <sys/types.h>
29 #include <fcntl.h>
30 #ifndef M_PI /*hp ansi c stuff */
31 #define M_PI 3.14
32 #endif
33 #ifdef JOYSTICK
34 #include "joystick.h"
35 #endif
36 #if defined(SOUND)||defined(NAS_SOUND)||defined(RSOUND)
37 #include "sound.h"
38 #endif
39 #ifndef HAVEUSLEEP
40 #define usleep myusleep
41 extern void myusleep (unsigned long);
42 #endif
43
44 /*do not confuse compiler when function is not required */
45 #if defined(__GNUC__)&&!defined(ONLYANSI)
46 #define CONST const
47 #define INLINE inline
48 #else
49 #define INLINE
50 #define CONST
51 #endif
52 #define DUMMY do { } while (0)
53
54 extern int nomouse;
55 #include <interface.h>
56
57 #define MENUTIME 5
58
59
60
61 #define back(x) (32 + x)
62 #define ball(x) (64 + x)
63 #define rocket(x) (96 + x)
64
65
66 #define PLAY_X1 0
67 #define PLAY_Y1 0
68
69
70
71
72 #define RAD(n) ((float)(n)/180.0*M_PI)
73 #define ROTSTEP RAD(10)
74
75
76 #define BALL_RADIUS 8
77 #define BBALL_RADIUS 16
78 #define APPLE_RADIUS 32
79 #define INSPECTOR_RADIUS 14
80 #define LUNATIC_RADIUS EYE_RADIUS
81 #define HOLE_RADIUS 12
82 #define ROCKET_RADIUS 14
83 #define EYE_RADIUS1 10
84 #define SPRINGSIZE (4*BBALL_RADIUS)
85 #define SPRINGSTRENGTH (BBALL_RADIUS/2)
86
87
88
89 #define NTRACKS 4
90 #define NTRACKS 4
91 #define ROCKET 1
92 #define BALL 2
93
94
95 #define LBALL 3
96 #define CREATOR 4
97 #define HOLE 5
98 #define BBALL 6
99 #define APPLE 7
100 #define INSPECTOR 8
101 #define EHOLE 9
102 #define LUNATIC 10
103
104
105 #define MAXOBJECT 255
106 #define MAXPOINT (4000)
107 #define MAXROCKETS 5
108
109
110 #define L_ACCEL 'A'
111 #define L_GUMM 'M'
112 #define L_THIEF 'T'
113 #define L_FINDER 'G'
114 #define L_TTOOL 'S'
115 #define A_ADD 0.13
116 #define M_ADD 0.8
117 #define NLETTERS 5
118
119
120 #define LETTER 1024
121
122
123 #define S_START 0
124 #define S_END 1
125 #define S_COLIZE 2
126 #define S_DESTROY_BALL 3
127 #define S_DESTROY_ROCKET 4
128 #define S_CREATOR1 5
129 #define S_CREATOR2 6
130
131 #define C_REMOTE 0
132 #define C_KEYBOARD 1
133 #define C_RKEYBOARD 2
134 #define C_JOYSTICK1 3
135 #define C_JOYSTICK2 4
136 #define C_MOUSE 5
137
138 #define DEATHMATCH 0
139 #define COOPERATIVE 1
140
141
142 #define NSAMPLES 7
143
144 #define MENU 1
145 #define KEYS 2
146 #define GAME 3
147 #define JOY 4
148 #define WAIT 5
149 #define PREGAME 6
150
151
152 #define next /*((++cit)>=NTRACKS?cit=1:cit) */
153
154
155 typedef struct
156 {
157 int type;
158 int thief;
159 int ctype;
160 int live;
161 int time;
162 int score;
163 int lineto;
164 float x;
165 float y;
166 float fx; /*forces */
167 float fy;
168 float rotation; /*for rockets */
169 int live1; /*backup for rockets */
170 float M;
171 int radius;
172 float accel;
173 char letter;
174 /* B ****LT**** */
175 #ifdef JOYSTICK
176 float joymulx; /* multiply x cootdinate by this to obtai number between <0,1> */
177 float joymuly; /* multiply y ... */
178 float joythresh; /* minimum how should be joystick deflected for acceleration <0,1> */
179 #endif
180 /* B ****LT**** */
181 }
182 Object;
183 typedef struct
184 {
185 int x, y, xp, yp, time, color;
186 }
187 Point;
188 extern int PlaySound (int s);
189 #ifdef NETSUPPORT
190 #define play_sound1(p1) (!server?play_sound(p1):PlaySound(p1))
191 #else
192 #define play_sound1(p1) play_sound(p1)
193 #endif
194
195 #ifdef SOUND
196 #define Effect(p1,p2) (sound?play_sound1(p1):0)
197 #else
198 #if defined(NAS_SOUND)||defined(RSOUND)
199 #define Effect(p1,p2) (sound?play_sound1(p1):0)
200 #define SOUND
201 #else
202 #define Effect(p1,p2) (server?PlaySound(p1):0)
203 #endif
204 #endif
205
206 struct control
207 {
208 int type;
209 double jx, jy;
210 int mx, my;
211 int mask;
212 };
213 #ifndef VARIABLES_HERE
214 extern float ROCKET_SPEED;
215 extern float BALL_SPEED;
216 extern float BBALL_SPEED;
217 extern float SLOWDOWN;
218 extern float GUMM;
219
220 extern float BALLM;
221 extern float LBALLM;
222 extern float BBALLM;
223 extern float APPLEM;
224 extern float INSPECTORM;
225 extern float LUNATICM;
226 extern float ROCKETM;
227
228
229 extern int dosprings;
230 extern int difficulty;
231 extern int randsprings;
232 extern int nobjects;
233 extern int drawpointer;
234 extern int textcolor;
235 extern int nrockets;
236 extern Object object[MAXOBJECT];
237 extern Point point[MAXPOINT];
238 extern int gameplan;
239 extern int rotation[MAXROCKETS];
240 extern char control[MAXROCKETS];
241 extern struct control controls[MAXROCKETS];
242 extern int lastlevel, maxlevel;
243 #ifdef NETSUPPORT
244 extern int client, server;
245 #endif
246 #ifdef SOUND
247 extern int sndinit;
248 #endif
249
250 extern int mouseplayer;
251 #ifdef JOYSTICK
252 extern int joystickplayer[2];
253 extern int joystickdevice[2];
254 extern int calibrated[2];
255 extern int center[2][2];
256 /* B ****LT**** */
257 /* coordinates are multiplied by this number before computing of speed */
258 extern float joystickmul[2];
259 /* default value for "accel by fire button" : */
260 #define JOYMUL1 0.0
261 /* default value for "accel by deflection" : */
262 #define JOYMUL2 1.5
263 /* joystickthresh is lower threshold for movement of joystick (something between 0 and 1)*/
264 extern float joystickthresh[2];
265 /* E ****LT**** */
266 #endif
267
268
269 extern VScreenType physicalscreen;
270 extern VScreenType backscreen;
271 extern VScreenType background;
272 extern VScreenType starbackground;
273 /*extern int cit; */
274 extern int gamemode;
275 extern int tbreak;
276
277 extern int a_bballs, a_rockets, a_balls, a_holes, a_apples, a_inspectors,
278 a_lunatics, a_eholes;
279
280 extern int keys[5][4];
281 extern int sound;
282
283 extern BitmapType bball_bitmap, apple_bitmap, inspector_bitmap, mouse_bitmap,
284 lunatic_bitmap, lball_bitmap[NLETTERS], circle_bitmap,
285 hole_bitmap, ehole_bitmap, ball_bitmap, eye_bitmap[MAXROCKETS],
286 rocket_bitmap[MAXROCKETS];
287 extern char rocketcolor[5];
288
289
290 #endif
291
292 #if defined(__GNUC__)&&!defined(ONLYANSI)
293 extern inline void
normalize(float * x,float * y,CONST float size)294 normalize (float *x, float *y, CONST float size)
295 {
296 float length = sqrt ((*x) * (*x) + (*y) * (*y));
297 if (length == 0)
298 length = 1;
299 *x *= size / length;
300 *y *= size / length;
301 }
302 #else
303 extern void normalize (float *, float *, CONST float);
304 #endif
305
306 extern void addpoint (CONST int, CONST int, CONST int, CONST int, CONST int, CONST int);
307 extern void destroy (CONST int);
308 extern void creator (CONST int);
309 extern void creator_rocket (CONST int);
310 extern void uninitialize ();
311 extern void draw_menu (CONST int);
312 extern void draw_joy (CONST int);
313 extern void init_menu ();
314 extern void menu_keys ();
315
316 extern void draw_keys (int);
317 extern void keys_keys ();
318 extern void joy_keys ();
319 extern void gameplan_init ();
320
321 extern void update_game ();
322 extern void init_objects ();
323 extern void outro1 ();
324 extern void outro2 ();
325 extern void clearpoints ();
326 extern void intro_intro ();
327 extern void lunatic_intro ();
328 extern void spring_intro ();
329 extern void thief_intro ();
330 extern void finder_intro ();
331 extern void ttool_intro ();
332 extern void hole_intro ();
333 extern void inspector_intro ();
334 extern void bball_intro ();
335 extern void bbball_intro ();
336 extern void maghole_intro ();
337 extern void fadeout ();
338 extern void fadein ();
339 extern void load_rc ();
340 extern void save_rc ();
341 extern int allow_finder ();
342 #if defined(__GNUC__)&&!defined(ONLYANSI)
343 extern int
344 find_possition (float *, float *, CONST float)
345 __attribute ((const));
346 extern int radius (CONST int) __attribute ((const));
347 extern float M (CONST int) __attribute ((const));
348 extern int create_letter () __attribute ((const));
349 #else
350 extern int find_possition (float *, float *, CONST float);
351 extern int radius (CONST int);
352 extern float M (CONST int);
353 extern int create_letter ();
354 #endif
355 #ifndef NETSUPPORT
356 #define client 0
357 #define server 0
358 #endif
359
360 #endif
361