diff options
Diffstat (limited to 'src/bullet.c')
| -rw-r--r-- | src/bullet.c | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/src/bullet.c b/src/bullet.c new file mode 100644 index 0000000..4fe6433 --- /dev/null +++ b/src/bullet.c @@ -0,0 +1,92 @@ +#include "rodeo.h" +#include "input.h" +#include "player.h" +#include "rodeo/collision.h" + +static rodeo_texture_2d_t bullet_texture; +static rodeo_collision_2d_world_t bullet_collision_world; +static rodeo_collision_2d_world_t player_bullet_collision_world; +static rodeo_collision_2d_world_t enemy_bullet_collision_world; + +void +init_bullets(void) +{ + bullet_texture = rodeo_texture_2d_create_from_path(cstr_lit("assets/bullet.png")); +} + +void +deinit_bullets(void) +{ + rodeo_texture_2d_destroy(&bullet_texture); +} + +void +move_bullets(void) +{ + c_foreach(i, cvec_collision_2d_world_item, player_bullet_collision_world) { + cvec_collision_2d_world_item_value *bullet = i.ref; + bullet->x += bullet->dx; + bullet->y += bullet->dy; + } + c_foreach(i, cvec_collision_2d_world_item, enemy_bullet_collision_world) { + cvec_collision_2d_world_item_value *bullet = i.ref; + bullet->x += bullet->dx; + bullet->y += bullet->dy; + } + +} + +void +draw_bullets(void) +{ + c_foreach(i, cvec_collision_2d_world_item, player_bullet_collision_world) { + cvec_collision_2d_world_item_value *bullet = i.ref; + rodeo_texture_2d_draw( + &(rodeo_rectangle_t){ + .x = bullet->x, + .y = bullet->y, + .width = bullet->width, + .height = bullet->height, + }, + &(rodeo_rectangle_t){ + .x = 0, + .y = 0, + .width = 25, + .height = 25 + }, + NULL, + &bullet_texture + ); + } + c_foreach(i, cvec_collision_2d_world_item, enemy_bullet_collision_world) { + cvec_collision_2d_world_item_value *bullet = i.ref; + rodeo_texture_2d_draw( + &(rodeo_rectangle_t){ + .x = bullet->x, + .y = bullet->y, + .width = bullet->width, + .height = bullet->height, + }, + &(rodeo_rectangle_t){ + .x = 0, + .y = 0, + .width = 25, + .height = 25 + }, + NULL, + &bullet_texture + ); + } +} + +rodeo_collision_2d_world_t * +get_enemy_bullet_world(void) +{ + return &enemy_bullet_collision_world; +} + +rodeo_collision_2d_world_t * +get_player_bullet_world(void) +{ + return &player_bullet_collision_world; +} |
