#pragma once /* Namespace section: define los estados/secciones principales del programa, así como las opciones y modos especiales (como el Attract Mode). Proporciona variables globales para gestionar el flujo entre secciones. */ namespace Section { // --- Enumeraciones de secciones del programa --- enum class Name { RESET, // Inicialización LOGO, // Pantalla de logo INTRO, // Introducción TITLE, // Pantalla de título/menú principal GAME, // Juego principal HI_SCORE_TABLE, // Tabla de récords GAME_DEMO, // Modo demo INSTRUCTIONS, // Instrucciones CREDITS, // Créditos QUIT, // Salir del juego }; // --- Opciones para la sección actual --- enum class Options { GAME_PLAY_1P, // Iniciar el juego con el jugador 1 GAME_PLAY_2P, // Iniciar el juego con el jugador 2 GAME_PLAY_BOTH, // Iniciar el juego con los dos jugadores TITLE_TIME_OUT, // Timeout en el título TITLE_1, // Opción 1 en el título TITLE_2, // Opción 2 en el título RELOAD, // Recargar sección HI_SCORE_AFTER_PLAYING, // Mostrar récord tras jugar SHUTDOWN, // Apagar el sistema NONE, // Sin opción }; // --- Modos para el Attract Mode --- enum class AttractMode { TITLE_TO_DEMO, // Pasar de título a demo TITLE_TO_LOGO, // Pasar de título a logo }; // --- Variables globales de estado --- inline Name name = Name::RESET; inline Options options = Options::NONE; inline AttractMode attract_mode = AttractMode::TITLE_TO_DEMO; } // namespace Section