#pragma once #include // for SDL_Renderer #include // for Uint32 #include // for shared_ptr #include // for vector #include "utils.h" // for Color class AnimatedSprite; // lines 9-9 class Asset; // lines 10-10 class Input; // lines 11-11 class Resource; // lines 12-12 class Screen; // lines 13-13 class Text; // lines 14-14 struct JA_Music_t; // lines 15-15 class GameOver { private: // Constantes static constexpr int COUNTER_SECTION_END_ = 400; // Contador: cuando acaba la sección static constexpr int COUNTER_INIT_FADE_ = 310; // Contador: cuando emiepza el fade static constexpr int COUNTER_FADE_LENGHT_ = 20; // Contador: duración del fade // Objetos y punteros Screen *screen_; // Objeto encargado de dibujar en pantalla SDL_Renderer *renderer_; // El renderizador de la ventana Resource *resource_; // Objeto con los recursos Asset *asset_; // Objeto con los ficheros de recursos Input *input_; // Objeto pata gestionar la entrada std::shared_ptr text_; // Objeto para escribir texto en pantalla std::shared_ptr player_sprite_; // Sprite con el jugador std::shared_ptr tv_sprite_; // Sprite con el televisor // Variables int pre_counter_ = 0; // Contador previo int counter_ = 0; // Contador Uint32 ticks_ = 0; // Contador de ticks para ajustar la velocidad del programa std::vector colors_; // Vector con los colores para el fade Color color_; // Color usado para el texto y los sprites JA_Music_t *music_; // Musica que suena durante el juego // Actualiza el objeto void update(); // Dibuja el final en pantalla void render(); // Comprueba el manejador de eventos void checkEvents(); // Comprueba las entradas void checkInput(); // Actualiza el color usado para renderizar los textos e imagenes void updateColor(); // Dibuja los sprites void renderSprites(); // Actualiza los contadores void updateCounters(); public: // Constructor GameOver(); // Destructor ~GameOver() = default; // Bucle principal void run(); };