summaryrefslogtreecommitdiffhomepage
path: root/src/enemies.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/enemies.c')
-rw-r--r--src/enemies.c54
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
+ );
+ }
+}