#include "core/input/mouse.hpp"

namespace Mouse {
    Uint32 cursorHideTime = 3000;  // Tiempo en milisegundos para ocultar el cursor por inactividad
    Uint32 lastMouseMoveTime = 0;  // Última vez que el ratón se movió
    bool cursorVisible = true;     // Estado del cursor

    void handleEvent(const SDL_Event &event, bool fullscreen) {
        if (event.type == SDL_EVENT_MOUSE_MOTION) {
            lastMouseMoveTime = SDL_GetTicks();
            if (!cursorVisible && !fullscreen) {
                SDL_ShowCursor();
                cursorVisible = true;
            }
        }
    }

    void updateCursorVisibility(bool fullscreen) {
        // En pantalla completa el cursor siempre está oculto
        if (fullscreen) {
            if (cursorVisible) {
                SDL_HideCursor();
                cursorVisible = false;
            }
            return;
        }

        // En modo ventana, lo oculta tras el periodo de inactividad
        const Uint32 currentTime = SDL_GetTicks();
        if (cursorVisible && (currentTime - lastMouseMoveTime > cursorHideTime)) {
            SDL_HideCursor();
            cursorVisible = false;
        }
    }
}  // namespace Mouse
