#pragma once #include // for SDL_Event #include // for SDL_Renderer #include // for Uint32 #include // for string #include // for vector class AnimatedSprite; // lines 9-9 class Asset; // lines 10-10 class Input; // lines 11-11 class MovingSprite; // lines 12-12 class Resource; // lines 13-13 class Screen; // lines 14-14 class Text; // lines 15-15 struct JA_Music_t; // lines 16-16 struct color_t; struct options_t; struct section_t; class Ending2 { private: // Objetos y punteros Asset *asset; // Objeto con los ficheros de recursos Resource *resource; // Objeto con los recursos Screen *screen; // Objeto encargado de dibujar en pantalla SDL_Event *eventHandler; // Manejador de eventos SDL_Renderer *renderer; // El renderizador de la ventana Input *input; // Objeto pata gestionar la entrada Text *text; // Objeto para escribir texto en pantalla options_t *options; // Puntero a las opciones del juego std::vector sprites; // Vector con todos los sprites a dibujar std::vector spriteTexts; // Vector con los sprites de texto de los sprites std::vector texts; // Vector con los sprites de texto section_t *section; // Estado del bucle principal para saber si continua o se sale // Variables bool counterEnabled; // Indica si está el contador habilitado int preCounter; // Contador previo int postCounter; // Contador posterior bool postCounterEnabled; // Indica si está habilitado el contador Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa JA_Music_t *music; // Musica que suena durante el final std::vector spriteList; // Lista con todos los sprites a dibujar std::vector colors; // Vector con los colores para el fade int maxSpriteWidth; // El valor de ancho del sprite mas ancho int maxSpriteHeight; // El valor de alto del sprite mas alto int distSpriteText; // Distancia entre el sprite y el texto que lo acompaña int distSpriteSprite; // Distancia entre dos sprites de la misma columna float despSpeed; // Velocidad de desplazamiento de los sprites int firstCol; // Primera columna por donde desfilan los sprites int secondCol; // Segunda columna por donde desfilan los sprites // 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 los contadores void updateCounters(); // Inicializa la lista de sprites void iniSpriteList(); // Carga todos los sprites desde una lista void loadSprites(); // Actualiza los sprites void updateSprites(); // Actualiza los sprites de texto void updateTextSprites(); // Actualiza los sprites de texto del final void updateTexts(); // Dibuja los sprites void renderSprites(); // Dibuja los sprites con el texto void renderSpriteTexts(); // Dibuja los sprites con el texto del final void renderTexts(); // Coloca los sprites en su sito void placeSprites(); // Crea los sprites con las texturas con los textos void createSpriteTexts(); // Crea los sprites con las texturas con los textos del final void createTexts(); // Borra la memoria ocupada por los sprites con las texturas de los textos void deleteSpriteTexts(); // Borra la memoria ocupada por los sprites void deleteSprites(); // Borra la memoria ocupada por los sprites con las texturas de los textos del final void deleteTexts(); // Actualiza el fade final void updateFinalFade(); // Actualiza el volumen de la musica void updateMusicVolume(); // Cambia la paleta void switchPalette(); public: // Constructor Ending2(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, Input *input, options_t *options, section_t *section); // Destructor ~Ending2(); // Bucle principal void run(); };