ja guarda la configuracio

This commit is contained in:
2025-11-27 22:19:00 +01:00
parent 2b1311042f
commit 1e8829ba22
11 changed files with 16679 additions and 644 deletions

View File

@@ -2,79 +2,17 @@
// © 1999 Visente i Sergi (versió Pascal)
// © 2025 Port a C++20 amb SDL3
#include "core/rendering/sdl_manager.hpp"
#include "game/joc_asteroides.hpp"
#include "core/system/director.hpp"
#include <string>
#include <vector>
int main(int argc, char* argv[]) {
// Crear gestor SDL (finestra centrada 640x480 per defecte)
SDLManager sdl;
int main(int argc, char *argv[]) {
// Convertir arguments a std::vector<std::string>
std::vector<std::string> args(argv, argv + argc);
// Crear instància del joc
JocAsteroides joc(sdl.obte_renderer());
joc.inicialitzar();
// Crear director (inicialitza sistema, opcions, configuració)
Director director(args);
// Loop principal del joc
SDL_Event event;
bool running = true;
// Control de temps per delta_time
Uint64 last_time = SDL_GetTicks();
while (running) {
// Calcular delta_time real
Uint64 current_time = SDL_GetTicks();
float delta_time = (current_time - last_time) / 1000.0f; // Convertir ms a segons
last_time = current_time;
// Limitar delta_time per evitar grans salts
if (delta_time > 0.05f) { // Màxim 50ms (20 FPS mínim)
delta_time = 0.05f;
}
// Processar events SDL
while (SDL_PollEvent(&event)) {
// [NUEVO] Manejo de ventana ANTES de lógica del juego
if (sdl.handleWindowEvent(event)) {
continue; // Evento procesado, siguiente
}
// [NUEVO] Teclas globales de ventana
if (event.type == SDL_EVENT_KEY_DOWN) {
switch (event.key.key) {
case SDLK_F1:
sdl.decreaseWindowSize();
continue;
case SDLK_F2:
sdl.increaseWindowSize();
continue;
case SDLK_F3:
sdl.toggleFullscreen();
continue;
}
}
// Procesamiento normal del juego
joc.processar_input(event);
// Detectar tancament de finestra o ESC
if (event.type == SDL_EVENT_QUIT ||
(event.type == SDL_EVENT_KEY_DOWN && event.key.key == SDLK_ESCAPE)) {
running = false;
}
}
// Actualitzar física del joc amb delta_time real
joc.actualitzar(delta_time);
// Netejar pantalla (negre)
sdl.neteja(0, 0, 0);
// Dibuixar joc
joc.dibuixar();
// Presentar renderer (swap buffers)
sdl.presenta();
}
return 0;
// Executar bucle principal del joc
return director.run();
}