diff options
Diffstat (limited to 'src/enemies.c')
| -rw-r--r-- | src/enemies.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/enemies.c b/src/enemies.c new file mode 100644 index 0000000..72ce9ba --- /dev/null +++ b/src/enemies.c @@ -0,0 +1,54 @@ +#include "enemies.h" + +static rodeo_collision_2d_world_t collision_enemies_world; +static rodeo_texture_2d_t enemy_texture; +static cvec_enemy_t enemies; + +void +init_enemies(void) +{ + collision_enemies_world = rodeo_collision_2d_world_create(); + enemies = cvec_enemy_t_init(); + enemy_texture = rodeo_texture_2d_create_from_path(cstr_lit("assets/enemy.png")); +} + +void +deinit_enemies(void) +{ + rodeo_collision_2d_world_destroy(&collision_enemies_world); + cvec_enemy_t_drop(&enemies); + rodeo_texture_2d_destroy(&enemy_texture); +} + +enemy_t* +spawn_enemy(float x, float y) +{ + rodeo_collision_2d_world_item_t enemy_collision = (rodeo_collision_2d_world_item_t){.x = x, .y = y, .width = 26, .height = 38}; + world_id id = rodeo_collision_2d_world_item_create(&collision_enemies_world, enemy_collision)->id; + return cvec_enemy_t_push(&enemies, (enemy_t){.hp = 100.0, .id = id}); +} + +void +draw_enemies(void) +{ + c_foreach(i, cvec_collision_2d_world_item, collision_enemies_world) { + cvec_collision_2d_world_item_value *enemy = i.ref; + + rodeo_texture_2d_draw( + &(rodeo_rectangle_t){ + .x = enemy->x, + .y = enemy->y, + .width = enemy->width, + .height = enemy->height, + }, + &(rodeo_rectangle_t){ + .x = 0, + .y = 0, + .width = 26, + .height = 38 + }, + NULL, + &enemy_texture + ); + } +} |
