aboutsummaryrefslogtreecommitdiff
path: root/wave.h
diff options
context:
space:
mode:
authorquou <quou@disroot.org>2023-05-07 09:37:45 +1000
committerquou <quou@disroot.org>2023-05-07 09:37:45 +1000
commit40eb179043b77f011fb1048c386ee187f64569d0 (patch)
treeebae794ec0b3b8851b8c29119ada06555f49d4b6 /wave.h
parent47e7976922f5c17505c7c5a3377c3735649e3dcc (diff)
Add waves and some more polish.
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