diff --git a/src/game/drone.c b/src/game/drone.c index 32bfc1d..b35cac8 100644 --- a/src/game/drone.c +++ b/src/game/drone.c @@ -35,7 +35,8 @@ static Entity *find_nearest_enemy(Vec2 from, float range) { Entity *e = &s_em->entities[i]; if (!e->active || e->health <= 0) continue; if (e->type != ENT_ENEMY_GRUNT && e->type != ENT_ENEMY_FLYER && - e->type != ENT_TURRET) continue; + e->type != ENT_TURRET && e->type != ENT_ENEMY_CHARGER && + e->type != ENT_SPAWNER && e->type != ENT_LASER_TURRET) continue; Vec2 epos = vec2(e->body.pos.x + e->body.size.x * 0.5f, e->body.pos.y + e->body.size.y * 0.5f); float dx = epos.x - from.x; diff --git a/src/game/level.c b/src/game/level.c index 5d182df..3d11627 100644 --- a/src/game/level.c +++ b/src/game/level.c @@ -188,8 +188,12 @@ static void damage_entity(Entity *target, int damage) { death_color = (SDL_Color){200, 60, 60, 255}; /* red debris */ } else if (target->type == ENT_ENEMY_FLYER) { death_color = (SDL_Color){140, 80, 200, 255}; /* purple puff */ - } else if (target->type == ENT_TURRET) { + } else if (target->type == ENT_TURRET || target->type == ENT_LASER_TURRET) { death_color = (SDL_Color){160, 160, 160, 255}; /* metal scraps */ + } else if (target->type == ENT_ENEMY_CHARGER) { + death_color = (SDL_Color){220, 140, 40, 255}; /* orange spark */ + } else if (target->type == ENT_SPAWNER) { + death_color = (SDL_Color){180, 60, 180, 255}; /* purple burst */ } else { death_color = (SDL_Color){200, 200, 200, 255}; /* grey */ } @@ -231,7 +235,8 @@ static void damage_player(Entity *player, int damage, Entity *source) { static bool is_enemy(const Entity *e) { return e->type == ENT_ENEMY_GRUNT || e->type == ENT_ENEMY_FLYER || - e->type == ENT_TURRET; + e->type == ENT_TURRET || e->type == ENT_ENEMY_CHARGER || + e->type == ENT_SPAWNER || e->type == ENT_LASER_TURRET; } static void handle_collisions(EntityManager *em) { diff --git a/src/game/projectile.c b/src/game/projectile.c index 6b554e3..63299cc 100644 --- a/src/game/projectile.c +++ b/src/game/projectile.c @@ -251,7 +251,9 @@ static void projectile_update(Entity *self, float dt, const Tilemap *map) { /* Player bullets target enemies, enemy bullets target player */ if (is_player_proj) { - if (e->type != ENT_ENEMY_GRUNT && e->type != ENT_ENEMY_FLYER) continue; + if (e->type != ENT_ENEMY_GRUNT && e->type != ENT_ENEMY_FLYER && + e->type != ENT_TURRET && e->type != ENT_ENEMY_CHARGER && + e->type != ENT_SPAWNER && e->type != ENT_LASER_TURRET) continue; } else { if (e->type != ENT_PLAYER) continue; }