diff options
Diffstat (limited to 'src/bullet.c')
| -rw-r--r-- | src/bullet.c | 68 |
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; + } + +} |
