#pragma once #include #include // for vector class SmartSprite; class Text; class Texture; class Writer; struct Section; namespace Ja { struct Music; } // namespace Ja // Clase Intro class Intro { public: Intro(SDL_Renderer *renderer, Section *section); // Constructor ~Intro(); // Destructor Intro(const Intro &) = delete; auto operator=(const Intro &) -> Intro & = delete; void run(); // Bucle principal void iterate(); // Ejecuta un frame void handleEvent(const SDL_Event *event); // Procesa un evento private: // Objetos y punteros SDL_Renderer *renderer_; // El renderizador de la ventana Texture *texture_; // Textura con los graficos SDL_Event *event_handler_; // Manejador de eventos std::vector bitmaps_; // Vector con los sprites inteligentes para los dibujos de la intro std::vector texts_; // Textos de la intro Text *text_; // Textos de la intro Section *section_; // Estado del bucle principal para saber si continua o se sale // Variables Ja::Music *music_; // Musica para la intro int scene_; // Indica que escena está activa void update(float dt_s); // Actualiza las variables del objeto (time-based) void render(); // Dibuja el objeto en pantalla void checkInput(); // Comprueba las entradas void updateScenes(); // Actualiza las escenas de la intro // Helpers de updateScenes, uno por cada escena void updateScene1(); void updateScene2(); void updateScene3(); void updateScene4(); void updateScene5(); void updateScene6(); };