aboutsummaryrefslogtreecommitdiff
path: root/wave.h
diff options
context:
space:
mode:
Diffstat (limited to 'wave.h')
-rw-r--r--wave.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/wave.h b/wave.h
new file mode 100644
index 0000000..3d40981
--- /dev/null
+++ b/wave.h
@@ -0,0 +1,36 @@
+#ifndef wave_h
+#define wave_h
+
+#include "config.h"
+
+/* TODO: Different enemies. */
+
+typedef struct Waver Waver;
+
+typedef void (*Wave_Finish)(Waver* waver, int last);
+
+typedef struct {
+ int x, y;
+} Wave_Spawn;
+
+typedef struct {
+ int frame;
+ int count;
+ Wave_Spawn spawns[wave_max_spawns];
+} Subwave;
+
+typedef struct {
+ Subwave subwaves[wave_max_subwaves];
+ int subwave_count;
+} Wave;
+
+struct Waver {
+ int idx, sidx;
+ int timer;
+};
+
+void init_waver(Waver* waver);
+void next_wave(Waver* waver);
+void update_waver(Waver* waver, struct World* world);
+
+#endif