callbacks de merda

This commit is contained in:
2026-04-06 15:45:28 +02:00
parent fccc27fca0
commit a52e6c709e
10 changed files with 154 additions and 110 deletions

View File

@@ -15,6 +15,7 @@
#include "core/rendering/text.hpp" // Para Text, Text::CENTER_FLAG, Text::COLOR_FLAG
#include "core/resources/resource_cache.hpp" // Para ResourceRoom, Resource
#include "core/resources/resource_list.hpp" // Para Asset
#include "core/system/event_buffer.hpp" // Para EventBuffer
#include "core/system/global_events.hpp" // Para check
#include "game/defaults.hpp" // Para Defaults::Game
#include "game/game_control.hpp" // Para GameControl
@@ -158,9 +159,20 @@ Game::Game(Mode mode)
SceneManager::current = SceneManager::Scene::GAME;
SceneManager::options = SceneManager::Options::NONE;
// Inicialización de música (antes estaba al principio de run())
keepMusicPlaying();
if (!scoreboard_data_->music && mode_ == Mode::GAME) {
Audio::get()->pauseMusic();
}
}
Game::~Game() {
// Parar música al destruir la escena (antes estaba al final de run())
if (mode_ == Mode::GAME) {
Audio::get()->stopMusic();
}
ItemTracker::destroy();
GameControl::change_player_skin = nullptr;
@@ -185,8 +197,7 @@ Game::~Game() {
// Comprueba los eventos de la cola
void Game::handleEvents() {
SDL_Event event;
while (SDL_PollEvent(&event)) {
for (const auto& event : EventBuffer::events) {
GlobalEvents::handle(event);
#ifdef _DEBUG
// En modo editor: click del ratón cierra la consola
@@ -257,23 +268,6 @@ void Game::handleInput() {
GlobalInputs::handle();
}
// Bucle para el juego
void Game::run() {
keepMusicPlaying();
if (!scoreboard_data_->music && mode_ == Mode::GAME) {
Audio::get()->pauseMusic();
}
while (SceneManager::current == SceneManager::Scene::GAME) {
update();
render();
}
if (mode_ == Mode::GAME) {
Audio::get()->stopMusic();
}
}
// Actualiza el juego, las variables, comprueba la entrada, etc.
void Game::update() {
const float DELTA_TIME = delta_timer_.tick();

View File

@@ -34,8 +34,9 @@ class Game {
explicit Game(Mode mode);
~Game();
// --- Bucle para el juego ---
void run();
// --- Frame (llamados desde Director::iterate) ---
void update();
void render();
private:
// --- Constantes de tiempo ---
@@ -53,8 +54,6 @@ class Game {
};
// --- Métodos ---
void update(); // Actualiza el juego, las variables, comprueba la entrada, etc.
void render(); // Pinta los objetos en pantalla
void handleEvents(); // Comprueba los eventos de la cola
void transitionToState(State new_state); // Cambia al estado especificado y resetea los timers
void updatePlaying(float delta_time); // Actualiza el juego en estado PLAYING

View File

@@ -13,6 +13,7 @@
#include "core/rendering/sprite/sprite.hpp" // Para SSprite
#include "core/rendering/surface.hpp" // Para Surface
#include "core/resources/resource_cache.hpp" // Para Resource
#include "core/system/event_buffer.hpp" // Para EventBuffer
#include "core/system/global_events.hpp" // Para check
#include "game/options.hpp" // Para Options, SectionState, options, Section
#include "game/scene_manager.hpp" // Para SceneManager
@@ -56,8 +57,7 @@ Logo::Logo()
// Comprueba el manejador de eventos
void Logo::handleEvents() {
SDL_Event event;
while (SDL_PollEvent(&event)) {
for (const auto& event : EventBuffer::events) {
GlobalEvents::handle(event);
}
}
@@ -228,14 +228,6 @@ void Logo::render() { // NOLINT(readability-convert-member-functions-to-static)
Screen::get()->render();
}
// Bucle para el logo del juego
void Logo::run() {
while (SceneManager::current == SceneManager::Scene::LOGO) {
update();
render();
}
}
// Termina la sección
void Logo::endSection() {
SceneManager::current = SceneManager::Scene::TITLE;

View File

@@ -30,8 +30,9 @@ class Logo {
Logo();
~Logo() = default;
// --- Bucle principal ---
void run();
// --- Frame (llamados desde Director::iterate) ---
void update();
void render();
private:
// --- Constantes de tiempo (en segundos) ---
@@ -46,8 +47,6 @@ class Logo {
static constexpr int JAILGAMES_DEST_X = 37; // Posición X de destino para JAILGAMES
// --- Métodos ---
void update(); // Actualiza las variables
void render(); // Dibuja en pantalla
static void handleEvents(); // Comprueba el manejador de eventos
static void handleInput(); // Comprueba las entradas
void updateJAILGAMES(float delta_time); // Gestiona el logo de JAILGAME (time-based)

View File

@@ -14,6 +14,7 @@
#include "core/rendering/text.hpp" // Para Text, Text::CENTER_FLAG, Text::COLOR_FLAG
#include "core/resources/resource_cache.hpp" // Para Resource
#include "core/resources/resource_list.hpp" // Para Asset
#include "core/system/event_buffer.hpp" // Para EventBuffer
#include "core/system/global_events.hpp" // Para check
#include "game/gameplay/cheevos.hpp" // Para Cheevos, Achievement
#include "game/options.hpp" // Para Options, options, SectionState, Section
@@ -53,8 +54,7 @@ Title::~Title() { // NOLINT(modernize-use-equals-default)
// Comprueba el manejador de eventos
void Title::handleEvents() {
SDL_Event event;
while (SDL_PollEvent(&event)) {
for (const auto& event : EventBuffer::events) {
GlobalEvents::handle(event);
// Manejo especial para captura de botones de gamepad
@@ -311,14 +311,6 @@ void Title::render() {
Screen::get()->render();
}
// Bucle para el logo del juego
void Title::run() {
while (SceneManager::current == SceneManager::Scene::TITLE) {
update();
render();
}
}
// Crea y rellena la textura para mostrar los logros
void Title::createCheevosTexture() { // NOLINT(readability-convert-member-functions-to-static)
// Define la zona central del menu (entre el logo y la marquesina)

View File

@@ -17,8 +17,9 @@ class Title {
Title();
~Title();
// --- Bucle principal ---
void run();
// --- Frame (llamados desde Director::iterate) ---
void update();
void render();
private:
// --- Estructuras y enumeraciones ---
@@ -38,8 +39,6 @@ class Title {
static constexpr float CHEEVOS_SCROLL_DECELERATION = 800.0F; // Desaceleración del scroll (pixels/segundo²)
// --- Métodos ---
void update(); // Actualiza las variables
void render(); // Dibuja en pantalla
void handleEvents(); // Comprueba el manejador de eventos
void handleMainMenuKeyPress(SDL_Keycode key); // Maneja las teclas del menu principal
void handleInput(float delta_time); // Comprueba las entradas