aboutsummaryrefslogtreecommitdiff
path: root/world.c
diff options
context:
space:
mode:
Diffstat (limited to 'world.c')
-rw-r--r--world.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/world.c b/world.c
new file mode 100644
index 0000000..e7777fd
--- /dev/null
+++ b/world.c
@@ -0,0 +1,37 @@
+#include "plat.h"
+#include "world.h"
+
+void init_world(World* w) {
+ w->particle_count = 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;
+}
+
+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];
+}
+
+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);
+}