diff options
author | quou <quou@disroot.org> | 2023-05-07 09:37:45 +1000 |
---|---|---|
committer | quou <quou@disroot.org> | 2023-05-07 09:37:45 +1000 |
commit | 40eb179043b77f011fb1048c386ee187f64569d0 (patch) | |
tree | ebae794ec0b3b8851b8c29119ada06555f49d4b6 /wave.c | |
parent | 47e7976922f5c17505c7c5a3377c3735649e3dcc (diff) |
Add waves and some more polish.
Diffstat (limited to 'wave.c')
-rw-r--r-- | wave.c | 56 |
1 files changed, 56 insertions, 0 deletions
@@ -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++; + } +} |