summaryrefslogtreecommitdiffhomepage
path: root/src/bullet.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bullet.c')
-rw-r--r--src/bullet.c68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/bullet.c b/src/bullet.c
new file mode 100644
index 0000000..5cff129
--- /dev/null
+++ b/src/bullet.c
@@ -0,0 +1,68 @@
+#include "bullet.h"
+
+typedef
+struct
+{
+ int team; // 0 means not in use
+ Vector3 position;
+ Vector3 direction;
+ int lifetime;
+}
+Bullet;
+
+Bullet bullets[100];
+
+ void
+spawn_bullet(int team, Vector3 position, Vector3 direction)
+{
+ if(team == 0)
+ {
+ return;
+ }
+ for(int i = 0; i < 100; ++i)
+ {
+ if(bullets[i].team != 0)
+ {
+ continue;
+ }
+ bullets[i].team = team;
+ bullets[i].position = position;
+ bullets[i].direction = direction;
+ bullets[i].lifetime = 100;
+ return;
+ };
+}
+
+ void
+render_bullets(void)
+{
+ for(int i = 0; i < 100; ++i)
+ {
+ if(bullets[i].team == 0)
+ {
+ continue;
+ }
+ DrawCube(bullets[i].position, 0.25, 0.25, 0.25, RED);
+ }
+}
+
+ void
+bullet_collision_check(void)
+{
+ for(int i = 0; i < 100; ++i)
+ {
+ if(bullets[i].team == 0)
+ {
+ continue;
+ }
+ bullets[i].lifetime -= 1;
+ if(bullets[i].lifetime <= 0)
+ {
+ bullets[i].team = 0;
+ }
+ bullets[i].position.x += bullets[i].direction.x * 0.25;
+ bullets[i].position.y += bullets[i].direction.y * 0.25;
+ bullets[i].position.z += bullets[i].direction.z * 0.25;
+ }
+
+}