summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2023-05-26 18:51:03 -0400
committerrealtradam <[email protected]>2023-05-26 18:51:03 -0400
commit4a0a58b0a7804d78dc9569f7d2902a24abbbfe96 (patch)
treef0ce00c23f41dbfe5e5d1f06cb82c54cad272409
parent272924609d8b9aa64c03046f4f22db1a2efcd46b (diff)
downloadTOJam2023-4a0a58b0a7804d78dc9569f7d2902a24abbbfe96.tar.gz
TOJam2023-4a0a58b0a7804d78dc9569f7d2902a24abbbfe96.zip
enemy follow
-rw-r--r--CMakeLists.txt1
-rw-r--r--src/compile_flags.txt1
-rw-r--r--src/enemies.c33
-rw-r--r--src/enemies.h6
-rw-r--r--src/main.c2
-rw-r--r--src/player.c12
-rw-r--r--src/player.h4
7 files changed, 53 insertions, 6 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2613cf6..c486b33 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -36,6 +36,7 @@ add_dependencies(${PROJECT_NAME} RodeoKit)
target_include_directories(${PROJECT_NAME} PUBLIC
external/RodeoKit/include
src
+ external/RodeoKit/external/cglm/include
)
target_link_libraries(${PROJECT_NAME} PUBLIC RodeoKit)
diff --git a/src/compile_flags.txt b/src/compile_flags.txt
index 72b2967..4ae622a 100644
--- a/src/compile_flags.txt
+++ b/src/compile_flags.txt
@@ -3,6 +3,7 @@
-I../external/RodeoKit/external/bgfx/include
-I../external/RodeoKit/external/bx/include
-I../external/RodeoKit/external/STC/include
+-I../external/RodeoKit/external/cglm/include
-Wall
-Wextra
-Wpedantic
diff --git a/src/enemies.c b/src/enemies.c
index 7073a1b..07216ca 100644
--- a/src/enemies.c
+++ b/src/enemies.c
@@ -1,5 +1,6 @@
#include "enemies.h"
#include "bullet.h"
+#include <math.h>
static rodeo_collision_2d_world_t collision_enemies_world;
static rodeo_texture_2d_t enemy_texture;
@@ -54,6 +55,18 @@ draw_enemies(void)
}
}
+void
+move_enemies(void)
+{
+ c_foreach(i, cvec_enemy_t, enemies) {
+ rodeo_collision_2d_world_item_t *enemy = rodeo_collision_2d_world_item_get_by_id(i.ref->id);
+ enemy->x += enemy->dx;
+ enemy->dx = 0;
+ enemy->y += enemy->dy;
+ enemy->dy = 0;
+ }
+}
+
enemy_t*
get_enemy_by_id(
world_id id
@@ -108,3 +121,23 @@ detect_bullet_enemy_collisions(void)
{
rodeo_collision_2d_world_compare_other(&collision_enemies_world, get_player_bullet_world(), damage_enemy_resolver);
}
+
+void
+group_follow_target(rodeo_collision_2d_world_item_t *target)
+{
+ c_foreach(i, cvec_enemy_t, enemies) {
+ rodeo_collision_2d_world_item_t *enemy = rodeo_collision_2d_world_item_get_by_id(i.ref->id);
+ float direction[2] = {
+ target->x - enemy->x,
+ target->y - enemy->y
+ };
+ float mag = sqrtf(direction[0] * direction[0] + direction[1] * direction[1]);
+ direction[0] /= mag;
+ direction[1] /= mag;
+
+ enemy->dx = direction[0];
+ enemy->dy = direction[1];
+ }
+
+
+}
diff --git a/src/enemies.h b/src/enemies.h
index 988ea22..d8e3c8f 100644
--- a/src/enemies.h
+++ b/src/enemies.h
@@ -29,6 +29,9 @@ spawn_enemy(
void
draw_enemies(void);
+void
+move_enemies(void);
+
enemy_t*
get_enemy_by_id(
world_id id
@@ -46,3 +49,6 @@ void enemy_destroy(
void
detect_bullet_enemy_collisions(void);
+
+void
+group_follow_target(rodeo_collision_2d_world_item_t *target);
diff --git a/src/main.c b/src/main.c
index 0b6c15a..2c254f8 100644
--- a/src/main.c
+++ b/src/main.c
@@ -185,6 +185,8 @@ main_loop(void)
*/
move_bullets();
+ move_enemies();
+ group_follow_target(get_player_position());
draw_bullets();
draw_player();
draw_enemies();
diff --git a/src/player.c b/src/player.c
index e913b50..d171c80 100644
--- a/src/player.c
+++ b/src/player.c
@@ -112,12 +112,6 @@ parse_player_input(void)
void
move_player(void)
{
- rodeo_log(
- rodeo_logLevel_info,
- "%d, %d\n",
- player.move_state,
- player.sprite.iter
- );
if(player.move_state != mv_state_standing)
{
player.sprite.iter += 1;
@@ -187,3 +181,9 @@ detect_player_enemy_collisions(void)
player.damage_timer += rodeo_frame_time_get();
rodeo_collision_2d_world_compare_other(&player_collision_world, get_enemies_world(), player_enemy_resolver);
}
+
+cvec_collision_2d_world_item_value *
+get_player_position(void)
+{
+ return rodeo_collision_2d_world_item_get_by_id(player.collision_id);
+}
diff --git a/src/player.h b/src/player.h
index affca8c..0497d3c 100644
--- a/src/player.h
+++ b/src/player.h
@@ -33,3 +33,7 @@ player_shoot(rodeo_collision_2d_world_t *bullet_collision_world);
void
detect_player_enemy_collisions(void);
+
+
+cvec_collision_2d_world_item_value *
+get_player_position(void);