#pragma once #include // Para Uint32, Uint8 #include // Para unique_ptr #include // Para vector #include "path_sprite.h" // Para PathSprite #include "tiled_bg.h" // Para TiledBG #include "writer.h" // Para Writer /* Esta clase gestiona un estado del programa. Se encarga de mostrar la secuencia de introducción */ // Clase Intro class Intro { private: enum class IntroState { SCENES, POST, }; enum class IntroPostState { STOP_BG, END, }; // Objetos std::vector> sprites_; // Vector con los sprites inteligentes para los dibujos de la intro std::vector> shadow_sprites_; // Vector con los sprites inteligentes para las sombras std::vector> texts_; // Textos de la intro std::unique_ptr tiled_bg_; // Variables Uint32 ticks_ = 0; // Contador de ticks para ajustar la velocidad del programa int scene_ = 0; // Indica que escena está activa IntroState state_ = IntroState::SCENES; // Estado IntroPostState post_state_ = IntroPostState::STOP_BG; // Estado Uint32 state_start_time_; Uint8 bg_color_ = 112; // Actualiza las variables del objeto void update(); // Dibuja el objeto en pantalla void render(); // Comprueba los eventos void checkEvents(); // Comprueba las entradas void checkInput(); // Actualiza las escenas de la intro void updateScenes(); // Inicializa las imagens void initSprites(); // Inicializa los textos void initTexts(); // Actualiza los sprites void updateSprites(); // Actualiza los textos void updateTexts(); // Dibuja los sprites void renderSprites(); // Dibuja los textos void renderTexts(); // Actualiza el estado POST void updatePostState(); public: // Constructor Intro(); // Destructor ~Intro() = default; // Bucle principal void run(); };