summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorarngo <[email protected]>2023-05-30 13:37:17 -0400
committerarngo <[email protected]>2023-05-30 13:37:17 -0400
commitc43ac3e4ce4375b6fa1fa9927e20ff4f88504429 (patch)
treee8eab43f3597f5c55942b06ae55a8a95ff654528 /src
parent91e22bf324b34ef2e66dcec73f2cd85cf8887ef5 (diff)
downloadTOJam2023-c43ac3e4ce4375b6fa1fa9927e20ff4f88504429.tar.gz
TOJam2023-c43ac3e4ce4375b6fa1fa9927e20ff4f88504429.zip
implement enemy counting and prevent spawning when num enemies > 50
Diffstat (limited to 'src')
-rw-r--r--src/enemies.c9
-rw-r--r--src/enemies.h3
-rw-r--r--src/main.c21
3 files changed, 28 insertions, 5 deletions
diff --git a/src/enemies.c b/src/enemies.c
index 0f545cc..abb8646 100644
--- a/src/enemies.c
+++ b/src/enemies.c
@@ -13,6 +13,7 @@ static rodeo_texture_2d_t squid_texture;
static cvec_enemy_t enemies = {0};
static cvec_enemy_t ghosts = {0};
static float spawn_cooldown = 0;
+static uint16_t enemy_count = 0;
void
init_enemies(void)
@@ -36,6 +37,12 @@ deinit_enemies(void)
rodeo_texture_2d_destroy(&amonghost_texture);
}
+uint16_t
+get_enemy_count(void)
+{
+ return enemy_count;
+}
+
enemy_t*
spawn_enemy(float x, float y)
{
@@ -52,6 +59,7 @@ 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 = 40, .height = 40};
world_id id = rodeo_collision_2d_world_item_create(enemy_collision_world, enemy_collision)->id;
+ enemy_count++;
return cvec_enemy_t_push(
enemy_obj_world,
@@ -412,6 +420,7 @@ void enemy_destroy(
cvec_enemy_t_value* enemy
)
{
+ enemy_count--;
cvec_enemy_t *enemy_vec = &enemies;
if(enemy->weapon.type == enemy_weapon_basic)
{
diff --git a/src/enemies.h b/src/enemies.h
index b2e9b6b..a03162f 100644
--- a/src/enemies.h
+++ b/src/enemies.h
@@ -55,6 +55,9 @@ deinit_enemies(void);
deinit_enemies() \
)
+uint16_t
+get_enemy_count(void);
+
enemy_t*
spawn_enemy(
float x,
diff --git a/src/main.c b/src/main.c
index cffe740..0b68cca 100644
--- a/src/main.c
+++ b/src/main.c
@@ -45,7 +45,11 @@ main_loop(void)
player_shoot(get_player_bullet_world());
enemies_attempt_weapon_fire();
- attempt_random_enemy_spawn((rodeo_rectangle_t){ 0, 0, window_width, window_height });
+ if (get_enemy_count() < 50)
+ {
+ attempt_random_enemy_spawn((rodeo_rectangle_t){ 0, 0, window_width, window_height });
+ }
+
group_follow_target(get_player_position());
@@ -87,6 +91,13 @@ main_loop(void)
" fps: %.2f ",
time_var
);
+
+ rodeo_debug_text_draw(
+ 2,
+ 4,
+ " enemy count: %d ",
+ get_enemy_count()
+ );
}
}
@@ -126,10 +137,10 @@ main(void)
{
wall_init_do()
{
- spawn_enemy(400.0f,700.0f);
- spawn_enemy(900.0f,700.0f);
- spawn_enemy(400.0f,100.0f);
- spawn_enemy(900.0f,100.0f);
+ //spawn_enemy(400.0f,700.0f);
+ //spawn_enemy(900.0f,700.0f);
+ //spawn_enemy(400.0f,100.0f);
+ //spawn_enemy(900.0f,100.0f);
rodeo_mainLoop_run(
main_loop
);