From 40eb179043b77f011fb1048c386ee187f64569d0 Mon Sep 17 00:00:00 2001 From: quou Date: Sun, 7 May 2023 09:37:45 +1000 Subject: Add waves and some more polish. --- wave.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 wave.c (limited to 'wave.c') diff --git a/wave.c b/wave.c new file mode 100644 index 0000000..93b43f4 --- /dev/null +++ b/wave.c @@ -0,0 +1,56 @@ +#include "enemy.h" +#include "standard.h" +#include "wave.h" +#include "world.h" + +static const Wave waves[] = { + { + { + { + 20, + 2, + { + { 3, 5 }, + { 15, 15 }, + } + }, + }, + 1 + } +}; + +void init_waver(Waver* waver) { + waver->idx = 0; + waver->sidx = 0; + waver->timer = 0; +} + +void next_wave(Waver* waver) { + waver->idx++; +} + +void update_waver(Waver* waver, World* world) { + const Wave* wave; + const Subwave* subwave; + const Wave_Spawn* spawn; + int i; + + wave = &waves[waver->idx]; + subwave = &wave->subwaves[waver->sidx]; + + if (waver->sidx >= wave->subwave_count) { return; } + + waver->timer++; + + if (waver->timer >= subwave->frame) { + for (i = 0; i < subwave->count; i++) { + spawn = &subwave->spawns[i]; + new_skull( + world, + (spawn->x * map_tile_size) << fbits, + (spawn->y * map_tile_size) << fbits + ); + } + waver->sidx++; + } +} -- cgit v1.2.3-54-g00ecf