1 #ifndef GAME_H
2 #define GAME_H
3 
4 #include "game_data.h"
5 #include "engine.h"
6 #include "event.h"
7 
8 #include "Nebu_base.h"
9 
10 /* use enums, not magic */
11 enum {
12 	TURN_LEFT = 3,
13 	TURN_RIGHT = 1
14 };
15 
16 enum {
17 	AI_HUMAN = 0,
18 	AI_COMPUTER = 1,
19 	AI_NONE = 2
20 };
21 
22 enum {
23 	RETURN_GAME_LAUNCH = 0,
24 	RETURN_GAME_END,
25 	RETURN_GAME_PAUSE,
26 	RETURN_GAME_UNPAUSE,
27 	RETURN_GAME_CREDITS,
28 	RETURN_GAME_ESCAPE,
29 	RETURN_GUI_PROMPT,
30 	RETURN_TIMEDEMO,
31 	RETURN_TIMEDEMO_ABORT,
32 	RETURN_CREDITS,
33 	RETURN_QUIT,
34 	RETURN_GUI_ESCAPE,
35 	RETURN_PROMPT_ESCAPE,
36 	RETURN_PAUSE_ESCAPE
37 };
38 
39 /* physics recomputed every 10ms */
40 #define PHYSICS_RATE 20
41 
42 
43 #define PLAYERS 4
44 #define MAX_PLAYERS 4
45 #define MAX_TRAIL 1000
46 
47 
48 /* these must be < 0 */
49 #define SPEED_CRASHED -1
50 #define SPEED_GONE -2
51 
52 #define TRAIL_HEIGHT 3.5f
53 
54 /* game options */
55 #define SPEED_OZ_FREQ 1200
56 #define SPEED_OZ_FACTOR 0.09f
57 
58 #define TURN_LENGTH 200
59 
60 #define FAST_FINISH 40
61 
62 enum {
63 	PAUSE_NO_GAME = 0,
64 	PAUSE_GAME_RUNNING,
65 	PAUSE_GAME_FINISHED,
66 	PAUSE_GAME_SUSPENDED,
67 	PAUSE_DEMO_NEW,
68 	PAUSE_DEMO_RUNNING,
69 };
70 
71 extern Game main_game;
72 extern Game *game;
73 extern Game2 main_game2;
74 extern Game2 *game2;
75 
76 extern SettingsCache gSettingsCache;
77 
78 extern segment2 walls[];
79 
80 extern int dirsX[];
81 extern int dirsY[];
82 
83 extern float default_speeds[];
84 extern int default_arena_sizes[];
85 
86 /* ai -> computer.c */
87 
88 extern void initGameAI(int level);
89 extern void doComputer(int player, int target);
90 
91 extern void resetScores(void);
92 
93 extern void doTurn(GameEvent* e, int direction);
94 
95 extern List* doMovement(int mode, int dt);
96 extern void writePosition(int player);
97 
98 extern void initGameStructures(void);
99 extern void initClientData(void);
100 
101 extern void Game_Idle(void);
102 extern void enterGame(void);
103 extern void exitGame(void);
104 
105 extern void gameMouseMotion(int x, int y);
106 extern void gameMouse(int buttons, int state, int x, int y);
107 extern void resetVideoData(void);
108 extern void resetPlayerData(void);
109 
110 extern void doCameraMovement(void);
111 extern void initCamera(Camera *cam, Data *data, int type);
112 
113 extern void initWalls(void);
114 
115 extern void getPositionFromIndex(float *x, float *y, int player);
116 extern void getPositionFromData(float *x, float *y, Data *data);
117 #endif
118