// escena_joc.hpp - Lògica principal del joc // © 1999 Visente i Sergi (versió Pascal) // © 2025 Port a C++20 amb SDL3 #ifndef ESCENA_JOC_HPP #define ESCENA_JOC_HPP #include #include #include #include "../constants.hpp" #include "../effects/debris_manager.hpp" #include "../entities/bala.hpp" #include "../entities/enemic.hpp" #include "../entities/nau.hpp" #include "../stage_system/stage_manager.hpp" #include "core/graphics/vector_text.hpp" #include "core/rendering/sdl_manager.hpp" #include "core/types.hpp" #include // Classe principal del joc (escena) class EscenaJoc { public: explicit EscenaJoc(SDLManager& sdl); ~EscenaJoc() = default; void executar(); // Bucle principal de l'escena void inicialitzar(); void actualitzar(float delta_time); void dibuixar(); void processar_input(const SDL_Event& event); private: SDLManager& sdl_; // Efectes visuals Effects::DebrisManager debris_manager_; // Estat del joc Nau nau_; std::array orni_; std::array bales_; Poligon chatarra_cosmica_; float itocado_; // Death timer (seconds) // Lives and game over system int num_vides_; // Current lives count bool game_over_; // Game over state flag float game_over_timer_; // Countdown timer for auto-return (seconds) Punt punt_spawn_; // Configurable spawn point // Text vectorial Graphics::VectorText text_; // [NEW] Stage system std::unique_ptr stage_config_; std::unique_ptr stage_manager_; // Funcions privades void tocado(); void detectar_col·lisions_bales_enemics(); // Col·lisions bala-enemic void detectar_col·lisio_nau_enemics(); // Ship-enemy collision detection void dibuixar_marges() const; // Dibuixar vores de la zona de joc void dibuixar_marcador(); // Dibuixar marcador de puntuació // [NEW] Stage system helpers void dibuixar_missatge_stage(const std::string& missatge); }; #endif // ESCENA_JOC_HPP