sdl_callbacks

This commit is contained in:
2026-04-14 12:21:00 +02:00
parent c0accd25e2
commit f5da35bfb2
20 changed files with 406 additions and 177 deletions

View File

@@ -41,6 +41,7 @@
#include "smart_sprite.hpp" // Para SmartSprite
#include "stage.hpp" // Para StageManager, StageData
#include "tabe.hpp" // Para Tabe
#include "ui/logger.hpp" // Para section
#include "text.hpp" // Para Text
#include "texture.hpp" // Para Texture
#include "ui/service_menu.hpp" // Para ServiceMenu
@@ -131,6 +132,11 @@ Game::Game(Player::Id player_id, int current_stage, bool demo_enabled)
#ifdef RECORDING
setState(State::PLAYING);
#endif
Logger::section(demo_.enabled ? "GAME (DEMO)" : "GAME");
// Inicializa el timer de delta time para el primer frame del callback
last_time_ = SDL_GetTicks();
}
Game::~Game() {
@@ -978,7 +984,33 @@ auto Game::calculateDeltaTime() -> float {
return DELTA_TIME_MS / 1000.0F; // Convertir de milisegundos a segundos
}
// Bucle para el juego
// Avanza un frame del juego (llamado desde Director::iterate)
void Game::iterate() {
const float DELTA_TIME = calculateDeltaTime();
checkInput();
update(DELTA_TIME);
render();
}
// Procesa un evento del juego (llamado desde Director::handleEvent)
void Game::handleEvent(const SDL_Event& event) {
switch (event.type) {
case SDL_EVENT_WINDOW_FOCUS_LOST:
pause_manager_->setFocusLossPause(!demo_.enabled);
break;
case SDL_EVENT_WINDOW_FOCUS_GAINED:
pause_manager_->setFocusLossPause(false);
break;
default:
break;
}
#ifdef _DEBUG
handleDebugEvents(event);
#endif
}
// Bucle para el juego (fallback legacy)
void Game::run() {
last_time_ = SDL_GetTicks();