55 lines
1.5 KiB
C++
55 lines
1.5 KiB
C++
// 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
|