#pragma once #include // for SDL_Texture, SDL_Renderer #include // for Uint32 #include // for shared_ptr #include // for string #include // for vector #include "utils.h" // for Color class AnimatedSprite; // lines 10-10 class Asset; // lines 11-11 class Input; // lines 12-12 class Resource; // lines 13-13 class Screen; // lines 14-14 class Text; // lines 15-15 class Credits { private: struct captions_t { std::string label; // Texto a escribir Color color; // Color del texto }; // 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 SDL_Texture *text_texture_; // Textura para dibujar el texto SDL_Texture *cover_texture_; // Textura para cubrir el texto std::shared_ptr sprite_; // Sprite para el brillo del corazón // Variables int counter_ = 0; // Contador bool counter_enabled_ = true; // Indica si esta activo el contador int sub_counter_ = 0; // Contador secundario Uint32 ticks_ = 0; // Contador de ticks para ajustar la velocidad del programa std::vector texts_; // Vector con los textos // Actualiza las variables void update(); // Dibuja en pantalla void render(); // Comprueba el manejador de eventos void checkEvents(); // Comprueba las entradas void checkInput(); // Actualiza el contador void updateCounter(); // Inicializa los textos void iniTexts(); // Escribe el texto en la textura void fillTexture(); // Cambia la paleta void switchPalette(); public: // Constructor Credits(); // Destructor ~Credits(); // Bucle principal void run(); };