magic numbers: title.cpp
This commit is contained in:
@@ -19,11 +19,22 @@ namespace Options {
|
||||
struct Gamepad;
|
||||
} // namespace Options
|
||||
|
||||
// --- Constantes ---
|
||||
constexpr std::string_view TEXT_COPYRIGHT = "@2020,2025 JailDesigner"; // Texto de copyright
|
||||
constexpr bool ALLOW_TITLE_ANIMATION_SKIP = false; // Permite saltar la animación del título
|
||||
|
||||
// --- Clase Title: gestiona el estado de título/menú principal del juego ---
|
||||
// --- Clase Title: pantalla de título y menú principal del juego ---
|
||||
//
|
||||
// Esta clase gestiona la pantalla de título del juego, incluyendo el menú principal
|
||||
// y la transición entre diferentes modos de juego.
|
||||
//
|
||||
// Funcionalidades principales:
|
||||
// • Logo animado: muestra y anima el logotipo principal del juego
|
||||
// • Selección de jugadores: permite iniciar partidas de 1 o 2 jugadores
|
||||
// • Modo attract: cicla automáticamente entre título y demo
|
||||
// • Efectos visuales: parpadeos, transiciones y efectos de fondo
|
||||
// • Gestión de controles: soporte para teclado y múltiples gamepads
|
||||
// • Timeouts automáticos: transición automática si no hay interacción
|
||||
// • Debug de colores: herramientas de depuración para ajustes visuales
|
||||
//
|
||||
// La clase utiliza un sistema de tiempo basado en milisegundos para garantizar
|
||||
// comportamiento consistente independientemente del framerate.
|
||||
class Title {
|
||||
public:
|
||||
// --- Constructor y destructor ---
|
||||
@@ -34,8 +45,28 @@ class Title {
|
||||
void run();
|
||||
|
||||
private:
|
||||
// --- Constantes de tiempo (en milisegundos) ---
|
||||
static constexpr float START_PRESSED_DELAY_MS = 1666.67f; // Tiempo antes de fade tras pulsar start (100 frames a 60fps)
|
||||
static constexpr int MUSIC_FADE_OUT_LONG_MS = 1500; // Fade out largo de música
|
||||
static constexpr int MUSIC_FADE_OUT_SHORT_MS = 300; // Fade out corto de música
|
||||
|
||||
// --- Constantes de parpadeo ---
|
||||
static constexpr Uint32 LOGO_BLINK_PERIOD_MS = 833; // Período de parpadeo del logo
|
||||
static constexpr Uint32 LOGO_BLINK_ON_TIME_MS = 583; // Tiempo encendido del logo (833-250)
|
||||
static constexpr Uint32 START_BLINK_PERIOD_MS = 167; // Período de parpadeo del start
|
||||
static constexpr Uint32 START_BLINK_ON_TIME_MS = 83; // Tiempo encendido del start (167-83)
|
||||
|
||||
// --- Constantes de layout ---
|
||||
static constexpr int MINI_LOGO_Y_DIVISOR = 5; // Divisor para posición Y del mini logo
|
||||
static constexpr int MINI_LOGO_Y_FACTOR = 4; // Factor para posición Y del mini logo
|
||||
static constexpr int COPYRIGHT_TEXT_SPACING = 3; // Espaciado del texto de copyright
|
||||
|
||||
// --- Constantes de texto y configuración ---
|
||||
static constexpr std::string_view TEXT_COPYRIGHT = "@2020,2025 JailDesigner"; // Texto de copyright
|
||||
static constexpr bool ALLOW_TITLE_ANIMATION_SKIP = false; // Permite saltar la animación del título
|
||||
|
||||
// --- Enums ---
|
||||
enum class TitleState {
|
||||
enum class State {
|
||||
LOGO_ANIMATING, // El logo está animándose
|
||||
LOGO_FINISHED, // El logo ha terminado de animarse
|
||||
START_HAS_BEEN_PRESSED, // Se ha pulsado el botón de start
|
||||
@@ -59,7 +90,7 @@ class Title {
|
||||
Anchor anchor_; // Anclas para definir la posición de los elementos del título
|
||||
Section::Name next_section_; // Siguiente sección a cargar
|
||||
Section::Options selection_ = Section::Options::TITLE_TIME_OUT; // Opción elegida en el título
|
||||
TitleState state_; // Estado actual de la sección
|
||||
State state_; // Estado actual de la sección
|
||||
Uint64 last_time_ = 0; // Último timestamp para calcular delta-time
|
||||
float counter_time_ = 0.0f; // Temporizador para la pantalla de título (en milisegundos)
|
||||
int num_controllers_; // Número de mandos conectados
|
||||
@@ -68,13 +99,11 @@ class Title {
|
||||
bool player2_start_pressed_ = false; // Indica si se ha pulsado el botón de empezar para el jugador 2
|
||||
|
||||
// --- Ciclo de vida del título ---
|
||||
void update(); // Actualiza las variables del objeto (frame-based)
|
||||
void update(float deltaTime); // Actualiza las variables del objeto (time-based)
|
||||
float calculateDeltaTime(); // Calcula el tiempo transcurrido desde el último frame
|
||||
void updateState(); // Actualiza el estado actual del título (frame-based)
|
||||
void updateState(float deltaTime); // Actualiza el estado actual del título (time-based)
|
||||
void setState(TitleState state); // Cambia el estado del título
|
||||
void resetCounter(); // Reinicia el contador interno
|
||||
void update(float deltaTime); // Actualiza las variables del objeto
|
||||
float calculateDeltaTime(); // Calcula el tiempo transcurrido desde el último frame
|
||||
void updateState(float deltaTime); // Actualiza el estado actual del título
|
||||
void setState(State state); // Cambia el estado del título
|
||||
void resetCounter(); // Reinicia el contador interno
|
||||
|
||||
// --- Entrada de usuario ---
|
||||
void checkEvents(); // Comprueba los eventos
|
||||
|
||||
Reference in New Issue
Block a user