ja guarda la configuracio
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user