From 84302e1d75a523859c64a1827d62a4598d82f055 Mon Sep 17 00:00:00 2001 From: arngo <27396817+arngo@users.noreply.github.com> Date: Sun, 28 May 2023 13:40:16 -0400 Subject: avoid spawning enemies too close to player --- external/RodeoKit | 2 +- src/enemies.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/external/RodeoKit b/external/RodeoKit index 79cd0ac..d076304 160000 --- a/external/RodeoKit +++ b/external/RodeoKit @@ -1 +1 @@ -Subproject commit 79cd0ac07a93fefbf59218ee77d44ea2501dfdd5 +Subproject commit d0763049dce1a32d9b85d39b77b090873337b7a3 diff --git a/src/enemies.c b/src/enemies.c index ad09e68..2640aae 100644 --- a/src/enemies.c +++ b/src/enemies.c @@ -262,10 +262,15 @@ random_enemy_create( ) { float spawn_coords[2]; + cvec_collision_2d_world_item_value* p = get_player_position(); + float player_coords[2] = {p->x, p->y}; + float player_radius = p->height * 2 + 100; for (int i = 0; i < 100; ++i) { spawn_coords[0] = (float)rodeo_random_double_get() * bounds.width + bounds.x; spawn_coords[1] = (float)rodeo_random_double_get() * bounds.height + bounds.y; - if (!coords_inside_wall(spawn_coords[0], spawn_coords[1])) { + float dist = glm_vec2_distance(spawn_coords, player_coords); + if (!coords_inside_wall(spawn_coords[0], spawn_coords[1]) && + dist > player_radius) { return spawn_enemy(spawn_coords[0], spawn_coords[1]); } } -- cgit v1.2.3