#include "core/input/mouse.hpp"

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

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

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

        // En modo ventana, lo oculta tras el periodo de inactividad
        const Uint32 CURRENT_TIME = SDL_GetTicks();
        if (cursor_visible && (CURRENT_TIME - last_mouse_move_time > cursor_hide_time)) {
            SDL_HideCursor();
            cursor_visible = false;
        }
    }
}  // namespace Mouse
