#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 { public: // Constructor Intro(); // Destructor ~Intro() = default; // Bucle principal void run(); private: // --- Estados internos --- 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_; // Fondo en mosaico // --- Variables --- Uint64 ticks_ = 0; // Contador de ticks para ajustar la velocidad del programa int scene_ = 0; // Indica qué escena está activa IntroState state_ = IntroState::SCENES; // Estado principal de la intro IntroPostState post_state_ = IntroPostState::STOP_BG; // Estado POST Uint32 state_start_time_; // Tiempo de inicio del estado actual Uint8 bg_color_ = 112; // Color de fondo // --- Métodos internos --- void update(); // Actualiza las variables del objeto void render(); // Dibuja el objeto en pantalla void checkEvents(); // Comprueba los eventos void checkInput(); // Comprueba las entradas void updateScenes(); // Actualiza las escenas de la intro void initSprites(); // Inicializa las imágenes void initTexts(); // Inicializa los textos void updateSprites(); // Actualiza los sprites void updateTexts(); // Actualiza los textos void renderSprites(); // Dibuja los sprites void renderTexts(); // Dibuja los textos void updatePostState(); // Actualiza el estado POST };