aboutsummaryrefslogtreecommitdiff
path: root/world.c
diff options
context:
space:
mode:
authorquou <quou@disroot.org>2024-09-30 22:13:31 +1000
committerquou <quou@disroot.org>2024-09-30 22:13:31 +1000
commitee655819d44307d974fb27e1fa04d079a3810d63 (patch)
treefaa7c7c833dab0ed83dece311576b53bd2e4b840 /world.c
parentde9a4fd93343d4654dfe7e2a566704644a9f306f (diff)
enemy
Diffstat (limited to 'world.c')
-rw-r--r--world.c39
1 files changed, 39 insertions, 0 deletions
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);
}