diff options
| author | realtradam <[email protected]> | 2023-05-30 00:05:28 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2023-05-30 00:05:28 -0400 |
| commit | 013b28a4d78c055cc7073e02856577d5026dd8c8 (patch) | |
| tree | 2b86309e8ffb95472a4b5c19017f2cc2437d17a5 | |
| parent | 53cd72592c3b900175ac069708f4937c83dea37c (diff) | |
| download | TOJam2023-013b28a4d78c055cc7073e02856577d5026dd8c8.tar.gz TOJam2023-013b28a4d78c055cc7073e02856577d5026dd8c8.zip | |
fix annoying crash
| -rw-r--r-- | src/enemies.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/enemies.c b/src/enemies.c index 85c663c..179c6a5 100644 --- a/src/enemies.c +++ b/src/enemies.c @@ -30,6 +30,7 @@ deinit_enemies(void) rodeo_collision_2d_world_destroy(&collision_enemies_world); rodeo_collision_2d_world_destroy(&collision_ghosts_world); cvec_enemy_t_drop(&enemies); + cvec_enemy_t_drop(&ghosts); rodeo_texture_2d_destroy(&hinotamatchi_texture); rodeo_texture_2d_destroy(&squid_texture); rodeo_texture_2d_destroy(&amonghost_texture); @@ -166,6 +167,10 @@ move_enemies(void) rodeo_collision_2d_world_compare_self(get_ghosts_world(), enemy_overlap_resolver); 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); + if(enemy == NULL) + { + continue; + } enemy->x += enemy->dx; enemy->dx = 0; enemy->y += enemy->dy; @@ -173,6 +178,10 @@ move_enemies(void) } c_foreach(i, cvec_enemy_t, ghosts) { rodeo_collision_2d_world_item_t *enemy = rodeo_collision_2d_world_item_get_by_id(i.ref->id); + if(enemy == NULL) + { + continue; + } enemy->x += enemy->dx; enemy->dx = 0; enemy->y += enemy->dy; @@ -400,11 +409,16 @@ void enemy_destroy( cvec_enemy_t_value* enemy ) { + cvec_enemy_t *enemy_vec = &enemies; + if(enemy->weapon.type == enemy_weapon_basic) + { + enemy_vec = &ghosts; + } rodeo_collision_2d_world_item_destroy_by_id(enemy->id); - *enemy = *cvec_enemy_t_back(&enemies); - if(cvec_enemy_t_size(&enemies) > 0) + *enemy = *cvec_enemy_t_back(enemy_vec); + if(cvec_enemy_t_size(enemy_vec) > 0) { - cvec_enemy_t_pop(&enemies); + cvec_enemy_t_pop(enemy_vec); } } @@ -502,6 +516,8 @@ attempt_random_enemy_spawn( spawn_cooldown -= rodeo_frame_time_get(); if (spawn_cooldown <= 0) { spawn_cooldown += (float)rodeo_random_double_get() * 1500.0f + 450.0f; + // faster spawning for testing + //spawn_cooldown += (float)rodeo_random_double_get() * 150.0f + 45.0f; return random_enemy_create(bounds); } return NULL; |
