diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/compile_flags.txt | 1 | ||||
| -rw-r--r-- | src/enemies.c | 33 | ||||
| -rw-r--r-- | src/enemies.h | 6 | ||||
| -rw-r--r-- | src/main.c | 2 | ||||
| -rw-r--r-- | src/player.c | 12 | ||||
| -rw-r--r-- | src/player.h | 4 |
6 files changed, 52 insertions, 6 deletions
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); @@ -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); |
