81 lines
2.3 KiB
C++
81 lines
2.3 KiB
C++
// main.cpp - Punt d'entrada del joc Asteroides
|
|
// © 1999 Visente i Sergi (versió Pascal)
|
|
// © 2025 Port a C++20 amb SDL3
|
|
|
|
#include "core/rendering/sdl_manager.hpp"
|
|
#include "game/joc_asteroides.hpp"
|
|
|
|
int main(int argc, char* argv[]) {
|
|
// Crear gestor SDL (finestra centrada 640x480 per defecte)
|
|
SDLManager sdl;
|
|
|
|
// Crear instància del joc
|
|
JocAsteroides joc(sdl.obte_renderer());
|
|
joc.inicialitzar();
|
|
|
|
// 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;
|
|
}
|