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++; +	} +}  |