#include "plat.h" #include "world.h" void init_world(World* w) { w->particle_count = 0; w->enemy_count = 0; w->deathzone_count = 0; w->frame = 0; init_player(&w->player); } Particle* inst_particle( World* w, int x, int y, int anim, int bmp ) { Particle* p; assert(w->particle_count < max_particles); p = &w->particles[w->particle_count++]; init_particle(p, x, y, anim, bmp); 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; for (i = w->deathzone_count - 1; i >= 0; i--) if (update_deathzone(&w->deathzones[i])) w->deathzones[i] = w->deathzones[--w->deathzone_count]; 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]; w->frame++; } void ren_world(const World* w, struct Renderer* r) { int i; ren_player(&w->player, 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); ren_hud(w, r); }