#pragma once // Evita inclusiones múltiples del archivo de encabezado #include // Incluye definiciones estándar de SDL, como Uint64 #include // Proporciona soporte para punteros inteligentes (shared_ptr, unique_ptr) #include "s_sprite.h" // Declara la clase SSprite, utilizada para manejar sprites class Surface; // Declaración adelantada de la clase Surface // Clase Logo: Maneja la lógica principal de un logotipo animado o interactivo class Logo { private: Uint64 ticks = 0; // Contador de ticks para medir el tiempo o controlar animaciones std::shared_ptr logo_surface = nullptr; // Superficie del logotipo, compartida entre múltiples objetos std::unique_ptr logo_sprite = nullptr; // Sprite del logotipo, propiedad exclusiva de esta clase // Métodos privados para manejar el ciclo de vida y la lógica del logotipo void init(); // Inicializa los recursos necesarios para el logotipo void close(); // Libera los recursos utilizados por el logotipo void checkEvents(); // Maneja los eventos de entrada (teclado, ratón, etc.) void update(); // Actualiza el estado del logotipo (animaciones, lógica, etc.) void render(); // Renderiza el logotipo en pantalla public: Logo(); // Constructor: Inicializa la clase Logo ~Logo(); // Destructor: Limpia los recursos utilizados por la clase Logo int run(); // Método principal que ejecuta el ciclo de vida del logotipo };