#pragma once
#include <functional>
#include <string>

namespace GameControl {
    // Disponible en todos los builds — refresca el color del jugador según cheats
    inline std::function<void()> refresh_player_color;
    // Disponible en todos los builds — cambia la skin del jugador (1=normal, 2=alternativa)
    inline std::function<void(int)> change_player_skin;
}  // namespace GameControl

#ifdef _DEBUG
namespace GameControl {
    // Registrada por Game::Game() — cambia la habitación activa
    inline std::function<bool(const std::string&)> change_room;
    // Registrada por Game::Game() — devuelve el fichero de la habitación activa (ej. "03.yaml")
    inline std::function<std::string()> get_current_room;
    // Registrada por Game::Game() — fija el contador de items recogidos
    inline std::function<void(int)> set_items;
    // Registrada por Game::Game() — hace toggle del modo debug (equivale a tecla 0)
    inline std::function<void()> toggle_debug_mode;
    // Registrada por Game::Game() — guarda la habitación actual como habitación de inicio en debug.yaml
    inline std::function<std::string()> set_initial_room;
    // Registrada por Game::Game() — guarda la posición/flip actuales del jugador como posición de inicio en debug.yaml
    inline std::function<std::string()> set_initial_pos;
}  // namespace GameControl
#endif
