2 // C Implementation: scene
7 // Author: Tobias Glaesser <tobi.web@gmx.de>, (C) 2004
9 // Copyright: See COPYING file that comes with this distribution
15 void set_defaults(void)
21 for (i = 0; i < NUM_BOUNCY_DISTROS; i++)
22 bouncy_distros[i].alive = NO;
24 for (i = 0; i < NUM_BROKEN_BRICKS; i++)
25 broken_bricks[i].alive = NO;
27 for (i = 0; i < NUM_BOUNCY_BRICKS; i++)
28 bouncy_bricks[i].alive = NO;
30 for (i = 0; i < NUM_BAD_GUYS; i++)
32 /*bad_guys[i].alive = NO;*/
33 badguy_init(&bad_guys[i]);
36 for (i = 0; i < NUM_FLOATING_SCORES; i++)
37 floating_scores[i].alive = NO;
39 for (i = 0; i < NUM_UPGRADES; i++)
41 /*upgrades[i].alive = NO;*/
42 upgrade_init(&upgrades[i]);
45 for (i = 0; i < NUM_BULLETS; i++)
47 /*bullets[i].alive = NO;*/
48 bullet_init(&bullets[i]);
59 counting_distros = NO;
64 /* set current song/music */
65 current_music = LEVEL_MUSIC;
70 void add_score(int x, int y, int s)
80 /* Add a floating score thing to the game: */
84 for (i = 0; i < NUM_FLOATING_SCORES && found == -1; i++)
86 if (!floating_scores[i].alive)
93 floating_score_init(&floating_scores[i],x,y,s);
97 /* Add a bouncy distro: */
99 void add_bouncy_distro(float x, float y)
105 for (i = 0; i < NUM_BOUNCY_DISTROS && found == -1; i++)
107 if (!bouncy_distros[i].alive)
113 bouncy_distros[found].alive = YES;
114 bouncy_distros[found].x = x;
115 bouncy_distros[found].y = y;
116 bouncy_distros[found].ym = -6;
121 /* Add broken brick pieces: */
123 void add_broken_brick(float x, float y)
125 add_broken_brick_piece(x, y, -4, -16);
126 add_broken_brick_piece(x, y + 16, -6, -12);
128 add_broken_brick_piece(x + 16, y, 4, -16);
129 add_broken_brick_piece(x + 16, y + 16, 6, -12);
133 /* Add a broken brick piece: */
135 void add_broken_brick_piece(float x, float y, float xm, float ym)
141 for (i = 0; i < NUM_BROKEN_BRICKS && found == -1; i++)
143 if (!broken_bricks[i].alive)
149 broken_bricks[found].alive = YES;
150 broken_bricks[found].x = x;
151 broken_bricks[found].y = y;
152 broken_bricks[found].xm = xm;
153 broken_bricks[found].ym = ym;
158 /* Add a bouncy brick piece: */
160 void add_bouncy_brick(float x, float y)
166 for (i = 0; i < NUM_BOUNCY_BRICKS && found == -1; i++)
168 if (!bouncy_bricks[i].alive)
174 bouncy_bricks[found].alive = YES;
175 bouncy_bricks[found].x = x;
176 bouncy_bricks[found].y = y;
177 bouncy_bricks[found].offset = 0;
178 bouncy_bricks[found].offset_m = -BOUNCY_BRICK_SPEED;
179 bouncy_bricks[found].shape = shape(x, y);
186 void add_bad_guy(float x, float y, int kind)
192 for (i = 0; i < NUM_BAD_GUYS && found == -1; i++)
194 if (!bad_guys[i].alive)
200 bad_guys[found].alive = YES;
201 bad_guys[found].mode = NORMAL;
202 bad_guys[found].dying = NO;
203 bad_guys[found].kind = kind;
204 bad_guys[found].x = x;
205 bad_guys[found].y = y;
206 bad_guys[found].xm = 1.3;
207 bad_guys[found].ym = 1.5;
208 bad_guys[found].dir = LEFT;
209 bad_guys[found].seen = NO;
210 timer_init(&bad_guys[found].timer);