4104577e72a4c49a19806ab777632d2e93af9c8d
[supertux.git] / src / gameloop.h
1 /*
2   gameloop.h
3   
4   Super Tux - Game Loop!
5   
6   by Bill Kendrick
7   bill@newbreedsoftware.com
8   http://www.newbreedsoftware.com/supertux/
9   
10   April 11, 2000 - December 28, 2003
11 */
12
13
14 /* Direction (keyboard/joystick) states: */
15
16 #define UP 0
17 #define DOWN 1
18
19
20 /* Directions: */
21
22 #define LEFT 0
23 #define RIGHT 1
24
25
26 /* Sizes: */
27
28 #define SMALL 0
29 #define BIG 1
30
31
32 /* Bounciness of distros: */
33
34 #define NO_BOUNCE 0
35 #define BOUNCE 1
36
37
38 /* One-ups... */
39
40 #define DISTROS_LIFEUP 100
41
42
43 /* When to alert player they're low on time! */
44
45 #define TIME_WARNING 50
46
47
48 /* Dying types: */
49
50 /* ---- NO 0 */
51 #define SQUISHED 1
52 #define FALLING 2
53
54
55 /* Enemy modes: */
56
57 #define NORMAL 0
58 #define FLAT 1
59 #define KICK 2
60
61
62 /* Hurt modes: */
63
64 #define KILL 0
65 #define SHRINK 1
66
67
68 /* Upgrade types: */
69
70 enum {
71   UPGRADE_MINTS,
72   UPGRADE_COFFEE,
73   UPGRADE_HERRING
74 };
75
76
77 /* Bad guy kinds: */
78
79 enum {
80   BAD_BSOD,
81   BAD_LAPTOP,
82   BAD_MONEY
83 };
84
85
86 /* Speed constraints: */
87
88 #define MAX_WALK_XM 16
89 #define MAX_RUN_XM 24
90 #define MAX_YM 24
91 #define MAX_JUMP_COUNT 3
92 #define MAX_LIVES 4
93
94 #define WALK_SPEED 2
95 #define RUN_SPEED 4
96 #define JUMP_SPEED 8
97 #define BULLET_STARTING_YM 8
98 #define BULLET_XM 16
99
100 #define GRAVITY 2
101 #define YM_FOR_JUMP 40
102 #define KILL_BOUNCE_YM 8
103
104 #define SKID_XM 8
105 #define SKID_TIME 8
106
107
108 #define BOUNCY_BRICK_MAX_OFFSET 8
109 #define BOUNCY_BRICK_SPEED 4
110
111
112 /* Times: */
113
114 #define TUX_SAFE_TIME 16
115 #define TUX_INVINCIBLE_TIME 200
116
117 /* Size constraints: */
118
119 #define OFFSCREEN_DISTANCE 256
120
121 #define LEVEL_WIDTH 375
122
123
124 /* Array sizes: */
125
126 #define NUM_BOUNCY_DISTROS 8
127 #define NUM_BROKEN_BRICKS 32
128 #define NUM_BOUNCY_BRICKS 4
129 #define NUM_BAD_GUYS 128
130 #define NUM_FLOATING_SCORES 6
131 #define NUM_UPGRADES 2
132 #define NUM_BULLETS 3
133
134
135 /* Scores: */
136
137 #define SCORE_BRICK 5
138 #define SCORE_DISTRO 25
139
140
141 /* Function prototypes: */
142
143 int gameloop(void);