migrant a SDL3

This commit is contained in:
2025-11-27 12:25:39 +01:00
parent c8838aa450
commit 93fed0b984
452 changed files with 433423 additions and 6 deletions

91
source/sdl_manager.cpp Normal file
View File

@@ -0,0 +1,91 @@
// sdl_manager.cpp - Implementació del gestor SDL3
// © 2025 Port a C++20 amb SDL3
#include "sdl_manager.hpp"
#include <iostream>
SDLManager::SDLManager(int amplada, int alcada, const char* titol)
: finestra_(nullptr), renderer_(nullptr), inicialitzat_(false) {
// Inicialitzar SDL3
if (!SDL_Init(SDL_INIT_VIDEO)) {
std::cerr << "Error inicialitzant SDL3: " << SDL_GetError() << std::endl;
return;
}
// Crear finestra
finestra_ = SDL_CreateWindow(
titol,
amplada, alcada,
SDL_WINDOW_RESIZABLE
);
if (!finestra_) {
std::cerr << "Error creant finestra: " << SDL_GetError() << std::endl;
SDL_Quit();
return;
}
// Crear renderer amb acceleració i vsync
// En SDL3, els flags són diferents o s'especifiquen diferent
renderer_ = SDL_CreateRenderer(finestra_, nullptr);
if (!renderer_) {
std::cerr << "Error creant renderer: " << SDL_GetError() << std::endl;
SDL_DestroyWindow(finestra_);
SDL_Quit();
return;
}
inicialitzat_ = true;
std::cout << "SDL3 inicialitzat correctament" << std::endl;
}
SDLManager::~SDLManager() {
if (renderer_) {
SDL_DestroyRenderer(renderer_);
renderer_ = nullptr;
}
if (finestra_) {
SDL_DestroyWindow(finestra_);
finestra_ = nullptr;
}
SDL_Quit();
std::cout << "SDL3 netejat correctament" << std::endl;
}
void SDLManager::neteja(uint8_t r, uint8_t g, uint8_t b) {
if (!renderer_) return;
SDL_SetRenderDrawColor(renderer_, r, g, b, 255);
SDL_RenderClear(renderer_);
}
void SDLManager::presenta() {
if (!renderer_) return;
SDL_RenderPresent(renderer_);
}
bool SDLManager::processar_events() {
if (!inicialitzat_) return false;
SDL_Event event;
while (SDL_PollEvent(&event)) {
switch (event.type) {
case SDL_EVENT_QUIT:
return false;
case SDL_EVENT_KEY_DOWN:
// En SDL3, la tecla està en event.key.key en lloc de event.key.keysym.sym
if (event.key.key == SDLK_ESCAPE) {
return false;
}
break;
}
}
return true;
}