diff options
Diffstat (limited to 'world.c')
-rw-r--r-- | world.c | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -54,6 +54,21 @@ Deathzone* inst_deathzone( return d; } +Effect* inst_effect( + World* w, + int x, + int y, + int vx, + int vy, + int c +) { + Effect* e; + assert(w->effect_count < max_effects); + e = &w->effects[w->effect_count++]; + init_effect(e, x, y, vx, vy, c); + return e; +} + void update_world(World* w, const App* a) { int i; if (w->laser.life) @@ -69,6 +84,9 @@ void update_world(World* w, const App* a) { for (i = w->particle_count - 1; i >= 0; i--) if (update_particle(&w->particles[i])) w->particles[i] = w->particles[--w->particle_count]; + for (i = w->effect_count - 1; i >= 0; i--) + if (update_effect(&w->effects[i])) + w->effects[i] = w->effects[--w->effect_count]; for (i = w->enemy_count - 1; i >= 0; i--) if (update_enemy(&w->enemies[i], w)) w->enemies[i] = w->enemies[--w->enemy_count]; @@ -81,6 +99,8 @@ void ren_world(const World* w, struct Renderer* r) { render_map(&w->map, r); for (i = 0; i < w->particle_count; i++) ren_particle(&w->particles[i], r); + for (i = 0; i < w->effect_count; i++) + ren_effect(&w->effects[i], r); for (i = 0; i < w->enemy_count; i++) ren_enemy(&w->enemies[i], r); if (w->laser.life) |