feat(bullet): debris en trencar-se amb so HIT mogut des d'enemy.herir()

This commit is contained in:
2026-05-22 18:42:23 +02:00
parent bf79eecca0
commit 18e05e36e6
5 changed files with 69 additions and 27 deletions
+4 -20
View File
@@ -80,26 +80,10 @@ void Bullet::disparar(const Vec2& position, float angle, uint8_t owner_id) {
}
void Bullet::update(float /*delta_time*/) {
if (!is_active_) {
return;
}
// El movimiento real lo hace PhysicsWorld::update() (integración).
// Aquí solo lógica de estado: detectar salida del PLAYAREA i desactivar.
// Sense marge de seguretat: la bala mor quan la seva aresta toca el border visual
// (centre a BULLET_RADIUS del límit). El MARGE_SEGURETAT de getSafePlayAreaBounds
// és per a spawn d'enemics, no per a desactivació de bales.
float min_x;
float max_x;
float min_y;
float max_y;
Constants::getPlayAreaBounds(min_x, max_x, min_y, max_y);
constexpr float R = Defaults::Entities::BULLET_RADIUS;
if (body_.position.x < min_x + R || body_.position.x > max_x - R ||
body_.position.y < min_y + R || body_.position.y > max_y - R) {
desactivar();
}
// No-op: la desactivació per fora-de-zona viu a
// Systems::Collision::desactivateOutOfBoundsBullets() perquè així té accés
// al DebrisManager i pot generar el "trencament" visual de la bala alhora.
// El moviment l'integra PhysicsWorld; postUpdate sincronitza center_ i prev_position_.
}
void Bullet::postUpdate(float /*delta_time*/) {
+2 -2
View File
@@ -8,7 +8,6 @@
#include <cstdlib>
#include <iostream>
#include "core/audio/audio.hpp"
#include "core/defaults.hpp"
#include "core/entities/entity.hpp"
#include "core/graphics/shape_loader.hpp"
@@ -277,7 +276,8 @@ void Enemy::destruir() {
void Enemy::herir(uint8_t shooter_id) {
wounded_timer_ = Defaults::Enemies::Wounded::DURATION;
last_hit_by_ = shooter_id;
Audio::get()->playSound(Defaults::Sound::HIT, Audio::Group::GAME);
// El so HIT ara el reprodueix la bala quan es trenca en debris
// (Systems::Collision::breakBullet), no l'enemic en entrar a HURT.
}
void Enemy::applyImpulse(const Vec2& impulse) {