Menú de Pausa
El Menú de Pausa es la interfaz principal que aparece al pulsar el botón de menú (por defecto X o Esc) durante la partida. Desde aquí el jugador puede acceder a la Pokédex, su equipo, la mochila, la tarjeta de entrenador, guardar la partida, las opciones y más.
Componentes por defecto
El menú de pausa estándar en Pokémon Essentials v21.1 incluye las siguientes entradas:
| Entrada | Condición para aparecer | Descripción |
|---|---|---|
| Pokédex | El jugador tiene al menos una Pokédex desbloqueada | Abre la pantalla de la Pokédex |
| Pokémon | El jugador tiene al menos 1 Pokémon en el equipo | Abre la pantalla de equipo |
| Mochila | Siempre visible | Abre la mochila del jugador |
| Pokégear | $player.has_pokegear es true |
Abre el Pokégear (mapa, teléfono, radio) |
| [Nombre del jugador] | Siempre visible | Muestra la Tarjeta de Entrenador |
| Guardar | $game_system.save_disabled es false |
Guarda la partida actual |
| Opciones | Siempre visible | Abre la pantalla de opciones |
| Debug | Solo en modo Debug ($DEBUG) |
Abre el menú de depuración |
| Salir | Siempre visible | Pregunta confirmación, guarda y cierra el juego (clave :quit_game) |
Clases PokemonPauseMenu y PokemonPauseMenu_Scene
El menú de pausa se gestiona en el script 048_UI/002_UI_PauseMenu.rb mediante dos clases:
PokemonPauseMenu_Scene: define la escena (viewport, sprites, ventana de comandos, ventana de información, ventana de ayuda, cartel de ubicación).PokemonPauseMenu: controlador que crea la escena, construye la lista de comandos y procesa la selección del jugador.
Cómo se construye la lista de comandos
El método de instancia PokemonPauseMenu#pbStartPokemonMenu recorre todos los handlers registrados con la clave :pause_menu mediante MenuHandlers.each_available(:pause_menu) y añade al menú aquellos cuya condición se cumple. Resumen del flujo:
- Se valida que
$playeresté definido (si no, se aborta). - Se llama a
pbStartSceneen la escena (crea viewport y sprites). - Se muestra el cartel de ubicación si
Settings::SHOW_LOCATION_SIGN_IN_PAUSE_MENUestá activo yDISABLE_LOCATION_SIGNSestá desactivado. - Se recorren los handlers de
:pause_menuy se acumula la lista de comandos disponibles. - Se muestran los comandos (
pbShowCommands) y se ejecuta eleffectdel comando elegido. - Si el
effectdevuelvetrue, el bucle termina y se cierra la escena.
pbStartPokemonMenu es un método de instancia de PokemonPauseMenu, no una función global. Se invoca con PokemonPauseMenu.new(scene).pbStartPokemonMenu. El menú de pausa lo lanza internamente Scene_Map cuando el jugador pulsa el botón de menú.
Cómo añadir una entrada personalizada
Para añadir una nueva opción al menú de pausa NO modifiques el script 048_UI/002_UI_PauseMenu.rb. En su lugar, registra un nuevo MenuHandler desde un plugin o un script adicional.
Ejemplo: Añadir entrada "Misiones"
# En un nuevo script o plugin, añade:
MenuHandlers.add(:pause_menu, :misiones, {
"name" => _INTL("Misiones"),
"order" => 40, # Posición en el menú (menor = más arriba)
"condition" => proc { next $game_switches[42] }, # Solo si el switch 42 está ON
"effect" => proc { |menu|
pbFadeOutIn {
# Aquí va la lógica de tu pantalla de misiones
scene = MisionesScene.new
screen = MisionesScreen.new(scene)
screen.pbStartScreen
}
next false # false = volver al menú, true = cerrar el menú
}
})
Propiedades de MenuHandlers
| Propiedad | Tipo | Descripción |
|---|---|---|
"name" |
String | Nombre que se muestra en el menú |
"order" |
Integer | Orden de aparición (menor número = más arriba) |
"condition" |
Proc | Condición para que aparezca la opción (devuelve true/false) |
"effect" |
Proc | Código que se ejecuta al seleccionar la opción |
Eliminar una entrada del menú
Para eliminar una entrada existente, puedes sobreescribir su condición para que nunca se cumpla:
# Eliminar el Pokégear del menú de pausa
MenuHandlers.add(:pause_menu, :pokegear, {
"name" => _INTL("Pokégear"),
"order" => 40,
"condition" => proc { next false }, # Nunca se muestra
"effect" => proc { |menu| next false }
})
Reordenar las entradas
Cada entrada tiene un valor "order" que determina su posición. Los valores definidos en 048_UI/002_UI_PauseMenu.rb son:
| Clave | Entrada | Orden |
|---|---|---|
:pokedex | Pokédex | 10 |
:party | Pokémon | 20 |
:bag | Mochila | 30 |
:pokegear | Pokégear | 40 |
:town_map | Mapa (si no hay Pokégear y se tiene :TOWNMAP) | 40 |
:trainer_card | Tarjeta de Entrenador (usa $player.name) | 50 |
:save | Guardar | 60 |
:options | Opciones | 70 |
:debug | Debug (solo con $DEBUG) | 80 |
:quit_game | Cerrar Juego | 90 |
Para mover una entrada, simplemente cambia su valor de "order". Por ejemplo, para poner la Mochila
antes de la Pokédex:
MenuHandlers.add(:pause_menu, :bag, {
"name" => _INTL("Mochila"),
"order" => 5, # Ahora aparece antes que Pokédex (10)
"effect" => proc { |menu|
pbFadeOutIn { pbBagScreen }
next false
}
})
Entradas condicionales
Puedes hacer que una entrada aparezca solo bajo ciertas condiciones de juego:
Mostrar solo con cierta cantidad de medallas
MenuHandlers.add(:pause_menu, :liga, {
"name" => _INTL("Liga Pokémon"),
"order" => 45,
"condition" => proc {
next $player.badge_count >= 8 # Solo con 8 o más medallas
},
"effect" => proc { |menu|
pbMessage(_INTL("¡Ya tienes todas las medallas! Dirígete a la Liga Pokémon."))
next false
}
})
Mostrar solo si el jugador tiene un objeto clave
MenuHandlers.add(:pause_menu, :mapa_ciudad, {
"name" => _INTL("Mapa de Ciudad"),
"order" => 35,
"condition" => proc {
next $bag.has?(:TOWNMAP) # Solo si tiene el Mapa en la mochila
},
"effect" => proc { |menu|
pbFadeOutIn { pbShowMap }
next false
}
})
Abrir el menú de pausa por script
El menú de pausa se abre automáticamente desde Scene_Map al pulsar la tecla de menú. Para invocarlo manualmente desde un script o evento (algo poco habitual), se crea una instancia de PokemonPauseMenu con su escena:
scene = PokemonPauseMenu_Scene.new
menu = PokemonPauseMenu.new(scene)
menu.pbStartPokemonMenu
Desactivar el menú de pausa
En ciertas situaciones (como escenas cinemáticas o zonas especiales) puedes querer desactivar el acceso al menú:
# Desactivar el menú de pausa
$game_system.menu_disabled = true
# Volver a activar el menú de pausa
$game_system.menu_disabled = false
Gráficos del menú
Los gráficos del menú de pausa se encuentran en la carpeta Graphics/UI/Pause Menu/. Los archivos
principales son:
| Archivo | Descripción |
|---|---|
bg.png |
Fondo del menú |
cursor.png |
Cursor de selección |
icon_*.png |
Iconos para cada entrada del menú |