diff options
| author | arngo <[email protected]> | 2023-05-27 17:24:48 -0400 |
|---|---|---|
| committer | arngo <[email protected]> | 2023-05-27 17:24:48 -0400 |
| commit | f04473c97a6b95a798924b847086145cf5726012 (patch) | |
| tree | 5f5aa83f522fd16c2a4e70a004e87a1268f8ca1f | |
| parent | 3a52c0738c3616b6974f0c979086ee1ca215ae08 (diff) | |
| download | TOJam2023-f04473c97a6b95a798924b847086145cf5726012.tar.gz TOJam2023-f04473c97a6b95a798924b847086145cf5726012.zip | |
bullet-wall collisions
| -rw-r--r-- | src/bullet.c | 27 | ||||
| -rw-r--r-- | src/bullet.h | 8 | ||||
| -rw-r--r-- | src/enemies.c | 3 | ||||
| -rw-r--r-- | src/main.c | 1 |
4 files changed, 39 insertions, 0 deletions
diff --git a/src/bullet.c b/src/bullet.c index 8fca4af..89572dc 100644 --- a/src/bullet.c +++ b/src/bullet.c @@ -2,6 +2,7 @@ #include "input.h" #include "player.h" #include "bullet.h" +#include "wall.h" #include "rodeo/collision.h" static rodeo_texture_2d_t bullet_texture; @@ -138,3 +139,29 @@ get_player_bullet_world(void) { return &player_bullet_collision_world; } + +void +bullet_destroy( + cvec_bullet_t_value* bullet +) +{ + rodeo_collision_2d_world_item_destroy_by_id(bullet->id); + *bullet = *cvec_bullet_t_back(&bullets); + cvec_bullet_t_pop(&bullets); +} + +void bullet_wall_resolver( + rodeo_collision_2d_world_item_t *bullet_collision, + rodeo_collision_2d_world_item_t *wall_collision +) +{ + bullet_t *bullet= get_bullet_by_id(bullet_collision->id); + if (bullet == NULL) { return; } + bullet_destroy(bullet); +} + +void +detect_bullet_wall_collisions(void) +{ + rodeo_collision_2d_world_compare_other(&player_bullet_collision_world, get_wall_world(), bullet_wall_resolver); +} diff --git a/src/bullet.h b/src/bullet.h index 3438291..e335d7d 100644 --- a/src/bullet.h +++ b/src/bullet.h @@ -47,3 +47,11 @@ get_enemy_bullet_world(void); rodeo_collision_2d_world_t * get_player_bullet_world(void); + +void +bullet_destroy( + cvec_bullet_t_value* bullet +); + +void +detect_bullet_wall_collisions(void); diff --git a/src/enemies.c b/src/enemies.c index 3779cb5..b83be03 100644 --- a/src/enemies.c +++ b/src/enemies.c @@ -2,6 +2,7 @@ #include "bullet.h" #include "cglm/vec2.h" #include "player.h" +#include "bullet.h" static rodeo_collision_2d_world_t collision_enemies_world = {0}; static rodeo_texture_2d_t enemy_texture; @@ -202,6 +203,8 @@ damage_enemy_resolver( ) { rodeo_collision_2d_world_item_destroy(bullet_collision); + bullet_t *bullet = get_bullet_by_id(bullet_collision->id); + bullet_destroy(bullet); enemy_t *enemy = get_enemy_by_id(enemy_collision->id); if(enemy == NULL) { return; } enemy->hp -= 10; @@ -198,6 +198,7 @@ main_loop(void) draw_player(); draw_enemies(); detect_bullet_enemy_collisions(); + detect_bullet_wall_collisions(); detect_player_enemy_collisions(); detect_player_wall_collisions(); |
