// global_events.cpp - Implementació dels events globals
// © 2025 Port a C++20

#include "global_events.hpp"

#include "core/input/mouse.hpp"
#include "core/rendering/sdl_manager.hpp"
#include "context_escenes.hpp"

// Using declarations per simplificar el codi
using GestorEscenes::ContextEscenes;
using Escena = ContextEscenes::Escena;

namespace GlobalEvents {

bool handle(const SDL_Event& event, SDLManager& sdl, ContextEscenes& context) {
    // Tecles globals de finestra (F1/F2/F3)
    if (event.type == SDL_EVENT_KEY_DOWN) {
        switch (event.key.key) {
            case SDLK_F1:
                sdl.decreaseWindowSize();
                return true;
            case SDLK_F2:
                sdl.increaseWindowSize();
                return true;
            case SDLK_F3:
                sdl.toggleFullscreen();
                return true;
            case SDLK_F4:
                sdl.toggleVSync();
                return true;
            case SDLK_ESCAPE:
                context.canviar_escena(Escena::EIXIR);
                GestorEscenes::actual = Escena::EIXIR;
                return true;
            default:
                break;
        }
    }

    // Tancar finestra
    if (event.type == SDL_EVENT_QUIT) {
        context.canviar_escena(Escena::EIXIR);
        GestorEscenes::actual = Escena::EIXIR;
        return true;
    }

    // Gestió del ratolí (auto-ocultar)
    Mouse::handleEvent(event);

    return false;  // Event no processat
}

}  // namespace GlobalEvents
