// gestor_puntuacio_flotant.hpp - Gestor de números de puntuació flotants // © 2025 Port a C++20 amb SDL3 #pragma once #include #include #include "core/defaults.hpp" #include "core/graphics/vector_text.hpp" #include "core/types.hpp" #include "puntuacio_flotant.hpp" namespace Effects { // Gestor de números de puntuació flotants // Manté un pool de PuntuacioFlotant i gestiona el seu cicle de vida class GestorPuntuacioFlotant { public: explicit GestorPuntuacioFlotant(SDL_Renderer* renderer); // Crear número flotant // - punts: valor numèric (100, 150, 200) // - posicio: on apareix (normalment centre d'enemic destruït) void crear(int punts, const Punt& posicio); // Actualitzar tots els números actius void actualitzar(float delta_time); // Dibuixar tots els números actius void dibuixar(); // Reiniciar tots (neteja) void reiniciar(); // Obtenir número actius (debug) [[nodiscard]] int get_num_actius() const; private: Graphics::VectorText text_; // Sistema de text vectorial // Pool de números flotants (màxim concurrent) // Màxim 15 enemics simultanis = màxim 15 números static constexpr int MAX_PUNTUACIONS = Defaults::FloatingScore::MAX_CONCURRENT; std::array pool_; // Trobar primer slot inactiu PuntuacioFlotant* trobar_slot_lliure(); }; } // namespace Effects