#pragma once #include // Para SDL_GamepadButton, SDL_Event, SDL_GamepadButtonEvent #include // Para size_t #include // Para shared_ptr #include // Para basic_string, string #include #include // Para vector #include "input.h" #include "options.h" // Clase DefineButtons class DefineButtons { public: // Estructura para definir botones struct Button { std::string label; // Texto en pantalla Input::Action action; // Acción asociada SDL_GamepadButton button; // Botón del mando Button(std::string label, Input::Action action, SDL_GamepadButton button) : label(std::move(label)), action(action), button(button) {} }; DefineButtons(); ~DefineButtons() = default; void render(); // Dibuja el objeto en pantalla void checkEvents(const SDL_Event &event); // Procesa los eventos auto enable(Options::Gamepad *options_gamepad) -> bool; // Habilita la redefinición de botones [[nodiscard]] auto isEnabled() const -> bool { return enabled_; }; // Comprueba si está habilitado private: // Objetos Input *input_ = nullptr; // Gestión de entrada // Variables bool enabled_ = false; // Indica si está activo bool finished_ = false; // Indica si ha terminado int x_ = 0; // Coordenadas de texto int y_ = 0; // Coordenadas de texto std::vector