feat(playfield): reaccions orbit al pas de la nau i pulse al spawn de fireworks

This commit is contained in:
JailDesigner committed 2026-05-21 23:03:48 +02:00
1 parent ffeff3d69d
commit 20f5b83649
6 files changed
+238 -13

No files matched your search

+5
View File
@@ -70,6 +70,11 @@ namespace Effects {
return;
}
// Notificar als subscriptors (playfield pulses, etc.).
if (spawn_callback_) {
spawn_callback_(origen);
}
const float ANGLE_STEP = 2.0F * Defaults::Math::PI / static_cast<float>(n_points);
const float JITTER_RAD =
Defaults::FX::Firework::ANGULAR_JITTER_DEG * Defaults::Math::PI / 180.0F;
+10
View File
@@ -6,6 +6,8 @@
#include <SDL3/SDL.h>
#include <array>
#include <functional>
#include <utility>
#include "core/defaults.hpp"
#include "core/rendering/render_context.hpp"
@@ -18,8 +20,15 @@ namespace Effects {
// d'`origen`. Cada partícula viu independent (update/draw/rebot).
class FireworkManager {
public:
// Notificació opcional cada vegada que es genera un burst.
using SpawnCallback = std::function<void(Vec2 origen)>;
explicit FireworkManager(Rendering::Renderer* renderer);
void setSpawnCallback(SpawnCallback callback) {
spawn_callback_ = std::move(callback);
}
// Emet un burst radial:
// origen: punt central del burst.
// color: color de les línies (heretat del pare).
@@ -40,6 +49,7 @@ namespace Effects {
private:
Rendering::Renderer* renderer_;
SpawnCallback spawn_callback_;
static constexpr int POOL_SIZE = Defaults::FX::Firework::POOL_SIZE;
std::array<Firework, POOL_SIZE> pool_;