#pragma once #include // for SDL_Event // Forward declaration para evitar dependencia circular class Engine; /** * @class InputHandler * @brief Procesa eventos de entrada (teclado, ratón, ventana) y los traduce a acciones del Engine * * Responsabilidad única: Manejo de input SDL y traducción a comandos de alto nivel * * Características: * - Procesa todos los eventos SDL (teclado, ratón, quit) * - Traduce inputs a llamadas de métodos del Engine * - Mantiene el Engine desacoplado de la lógica de input SDL * - Soporta todos los controles del proyecto (gravedad, figuras, temas, zoom, fullscreen) */ class InputHandler { public: /** * @brief Procesa todos los eventos SDL pendientes * @param engine Referencia al engine para ejecutar acciones * @return true si se debe salir de la aplicación (ESC o cerrar ventana), false en caso contrario */ bool processEvents(Engine& engine); private: // Sin estado interno por ahora - el InputHandler es stateless // Todos los estados se delegan al Engine };