From ee655819d44307d974fb27e1fa04d079a3810d63 Mon Sep 17 00:00:00 2001 From: quou Date: Mon, 30 Sep 2024 22:13:31 +1000 Subject: enemy --- world.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'world.c') diff --git a/world.c b/world.c index e7777fd..aba9bfb 100644 --- a/world.c +++ b/world.c @@ -3,6 +3,8 @@ void init_world(World* w) { w->particle_count = 0; + w->enemy_count = 0; + w->deathzone_count = 0; init_player(&w->player); } @@ -20,12 +22,47 @@ Particle* inst_particle( return p; } +Enemy* inst_enemy( + World* w, + Enemy_Type t, + int x, + int y +) { + Enemy* e; + assert(w->enemy_count < max_enemies); + e = &w->enemies[w->enemy_count++]; + init_enemy(e, t, x, y); + return e; +} + +Deathzone* inst_deathzone( + World* w, + const Rect* r, + int vx, + int vy, + int hp, + int life, + int friendly +) { + Deathzone* d; + assert(w->deathzone_count < max_deathzones); + d = &w->deathzones[w->deathzone_count++]; + init_deathzone(d, r, vx, vy, hp, life, friendly); + return d; +} + void update_world(World* w, const App* a) { int i; update_player(&w->player, w, a, &w->map); 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->enemy_count - 1; i >= 0; i--) + if (update_enemy(&w->enemies[i], w)) + w->enemies[i] = w->enemies[--w->enemy_count]; + for (i = w->deathzone_count - 1; i >= 0; i--) + if (update_deathzone(&w->deathzones[i])) + w->deathzones[i] = w->deathzones[--w->deathzone_count]; } void ren_world(const World* w, struct Renderer* r) { @@ -34,4 +71,6 @@ 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->enemy_count; i++) + ren_enemy(&w->enemies[i], r); } -- cgit v1.2.3-54-g00ecf